精华内容
下载资源
问答
  • 请使用如下命令安装: pip install webrtcvad-wheels 参考:github issue vijrishi95的回答

    请使用如下命令安装:

    pip install webrtcvad-wheels
    

    参考:github issue vijrishi95的回答

    展开全文
  • <div><p>Traceback (most recent call last): File "main.py", line 25, in ...ImportError: No module named webrtcvad</p><p>该提问来源于开源项目:alexa-pi/AlexaPiDEPRECATED</p></div>
  • android webrtc vad(静音检测) demo webrtc的vad静音检测音频处理模块,含源码。...讲话时webRtcVad_Process返回true,不讲话时返回false 直接用android studio打开,编译后“喂喂”两下,看log即可
  • webrtc VAD 算法

    千次阅读 2019-01-18 14:11:00
    webrtc VAD 算法 简介 一,K-means 聚类 二,EM估计 三,GMM 高斯混合模型 四,webrtc 中的 VAD 实现 五,参考资料:

    webrtc VAD 算法

    简介

    本文的目地是为了尽可能少的使用公式将webrtc的VAD算法讲清楚,为此忽略算法的证明以及算法的严谨性,力求通俗易懂,多讲实例。
    因为webrtc的VAD算法主要使用了GMM高斯混合模型,所以重点在于理解GMM,要想理解GMM,又离不开K-means聚类和EM估计,下面从K-means开始说起。

    一,K-means 聚类

    K-means 属于传统机器学习中的无监督学习,体现了聚类思想,他可以对没有标签的数据进行分类,聚类过程主要分两步:

    • K:描述了簇的数量,也就是应当聚合成的几何数;
    • means:均值求解,确定已分类数据的聚类中心(Cluster Centroid)位置;

    具体实现步骤:
    (1)根据设定的聚类数 K ,随机地选择 K 个聚类中心(Cluster Centroid),这里要注意聚类中心(Cluster Centroid)的初始值(就是图中X的位置)会影响最终的分类结果
    在这里插入图片描述
    (2)评估各个样本到聚类中心的距离,如果样本距离第 i 个聚类中心更近,则认为其属于第 i 簇,
    d=(x1x2)2+(y1y2)2 欧式距离: d=\sqrt{(x_{1}-x_{2})^2+(y_{1}-y_{2})^2} 在这里插入图片描述
    (3)计算每个簇中样本的平均(Mean)位置,将聚类中心移动至该位置,实际就是求每个簇的数据在x轴和y轴上的平均值
    μiKiui=1KixKix 其中μi是簇K_{i}的均值向量,有时也称为质心,表达式为:u_{i}=\frac{1}{|K_{i}|}\sum_{x\in K_{i}}^{}x
    Alt
    重复以上(2),(3)步骤直至各个聚类中心的位置不再发生改变(这个过程一定会收敛,证明这里就不介绍了,主要理解聚类的思想)

    K-means 演示实例(需要翻墙)

    二,EM估计

    1,似然函数和极大似然估计

    硬币 结果 统计
    1 正正反正反 3正-2反

    如上图所示,如果我们知道这个硬币正面朝上的概率是0.5,那么抛5次有3次正面朝上的概率是0.5x0.5x0.5=0.125(这个是概率),如果我们不知道这个硬币正面朝上的概率,那么抛5次有3次正面朝上,现在求这个硬币正面朝上的概率是3/5=0.6(这个就是似然),似然和概率都是大概的意思,但是在统计学上是不同的。
    现在考虑一个问题,上一步求出的硬币正面朝上的概率为什么是3/5=0.6,为什么正面朝上的次数除以总次数就是硬币正面朝上的概率,其实这个就是用极大似然估计推导出来的,下面我们就看一下这个3/5=0.6的由来。

    • 已知硬币连续抛5次,3正2反,求硬币正面朝上的概率,假设正面朝上的概率为θ\theta,似然函数为:
      L(θ)=L(x1,...xn;θ)=i=1np(xi;θ),θΘL(\theta)=L(x_{1},...x_{n};\theta)= \prod_{i=1}^{n}p(x_{i};\theta),\theta\in\Theta
      在我们这个例子中似然函数为:
      L(θ)=i=13θi=12(1θ) L(\theta)=\prod_{i=1}^{3}\theta\prod_{i=1}^{2}(1-\theta)

    • 极大似然估计就是求似然函数L(θ)L(\theta)最大时,θ\theta的取值,这就转化成一个纯数学问题,求导,令导数等于0,就可以得到θ\theta的值,为了便于分析,还可以定义对数似然函数,将其变成连加的:
      H(θ)=lnL(θ)=lni=1np(xi;θ)=i=1nlnp(xi;θ),θΘ H(\theta)=lnL(\theta)=ln\prod_{i=1}^{n}p(x_{i};\theta)=\sum_{i=1}^{n}lnp(x_{i};\theta),\theta\in\Theta
      在我们这个例子中对数似然函数为:
      H(θ)=lnL(θ)=lni=13θ+lni=12(1θ)=i=13lnθ+i=12ln(1θ) H(\theta)=lnL(\theta)=ln\prod_{i=1}^{3}\theta+ ln\prod_{i=1}^{2}(1-\theta)=\sum_{i=1}^{3}ln\theta+\sum_{i=1}^{2}ln(1-\theta)
      我们对H(θ)H(\theta)求导,并令导数等于0,求解θ\theta:
      H(θ)=i=13lnθ+i=12ln(1θ) H(\theta)=\sum_{i=1}^{3}ln\theta+\sum_{i=1}^{2}ln(1-\theta)
      H(θ)=3lnθ+2ln(1θ) H(\theta)=3ln\theta+2ln(1-\theta)
      H(θ)=3θ+21θ×1 {H(\theta )}' =\frac{3}{\theta}+\frac{2}{1-\theta}\times-1
      H(θ)=3(1θ)θ(1θ)+2θ(1θ)θ {H(\theta )}'=\frac{3(1-\theta)}{\theta(1-\theta)}+\frac{-2\theta}{(1-\theta)\theta}
      H(θ)=35θ(1θ)θ {H(\theta )}'=\frac{3-5\theta}{(1-\theta)\theta}
      H(θ)=0{H(\theta )}'=0,得:35θ(1θ)θ=0\frac{3-5\theta}{(1-\theta)\theta}=0,所以35θ=03-5\theta=0, 最终θ=3/5=0.6\theta=3/5=0.6

    • 这就是极大似然估计,总结一下计算步骤:
      (1)写出似然函数;
      (2)对似然函数取对数,并整理;
      (3)求导数,令导数为0,得到似然方程;
      (4)解似然方程,得到的参数即为所求;

    2,EM估计

    • 通过一个简单的例子来了解EM算法,假设现在有两枚硬币1和2,,随机抛掷后正面朝上概率分别为P1,P2。为了估计这两个概率,做实验,每次取一枚硬币,连掷5下,记录下结果,如下:
    硬币 结果 统计
    1 正正反正反 3正-2反
    2 正反反正反 2正-3反
    1 正反正正反 3正-2反
    • 根据极大似然估计,我们很容易计算出p1和p2
      p1=(3+3)/10 = 0.6
      p2=2/5 = 0.4
    • 现在加大难度,还是求两枚硬币正面朝上的概率p1,p2,如下图所示:
    硬币 结果 统计
    未知 正正反正反 3正-2反
    未知 正反反正反 2正-3反
    未知 正反正正反 3正-2反
    • 现在引入了未知变量,如何求p1,p2呢?假设未知变量是k,它是个3维向量[k1,k2,k3],要求k,我们需要知道p1,p2,要求p1,p2,又要知道k,怎么办呢?要解决这个问题就要用到EM估计。

    • 首先我们假设一个p1,p2的值,然后用这个假设的值去求k,有了k之后,我们在利用极大似然估计去求p1和p2,然后看一下求出的p1和p2,与我们刚才假设的值是否相等,如果不相等,就用这个p1和p2去求k,在用k,求出一个新的p1和p2,一直迭代下去,直到求出的p1和p2与上一次求出的p1和p2相等,这个时候的p1和p2就是我们要求的答案了,这个过程是收敛的,证明过程请参考其他资料,下面我们针对这个例子来一步一步走一遍。

    • 首先我们假设p1=0.7,p2=0.3,计算第一轮实验,硬币是第一枚和是第二枚硬币的可能性

    • 第一步,求出未知变量k:
      p(硬1)=0.7x0.7x0.7x(1-0.7)x(1-0.7)=0.03087
      p(硬2)=0.3x0.3x0.3x(1-0.3)x(1-0.3)=0.01323
      因为p(硬1)>p(硬2),所以第一轮最有可能用的是第一枚硬币,依次求出剩下的两轮,如下表:

    轮数 是硬币1的概率 是硬币2的概率
    1 0.03087 0.01323
    2 0.01323 0.03087
    3 0.03087 0.01323

    所以k=[硬币1,硬币2,硬币3];

    • 第二步,根据求出的k=[硬币1,硬币2,硬币3],利用极大似然估计求出p1和p2
      p1=(3+3)/10 = 0.6
      p2=2/5 = 0.4
    • 第三步,根据第二步求出的p1和p2,与第一步使用的p1和p2做比较,如果相等就停止,不相等就重复第一步和第二步,直到相等为止,又是一个迭代的过程,这个算法也一定会收敛,证明过程请参考其他资料

    三,GMM 高斯混合模型

    1,高斯分布和极大似然估计求解

    • 正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),最早由A.棣莫弗在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。

    • 一维正态分布,若随机变量X服从一个数学期望为μ、标准方差为σ2的高斯分布,记为:
      XN(u,σ2) X\sim N(u,\sigma^{2})
      则其概率密度函数为:
      f(x)=1σ2πe(xu)22σ2 f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-u)^{2}}{2\sigma^{2}}}
      图像如下:
      在这里插入图片描述

    • 有一点要注意某一点x的值f(x),并不是x点对应的概率值,他代表的是概率累积函数在这点的导数,也就是梯度,但是他其实可以近似的表示某个点落在高斯分布x[x,x+0.001]x\in[x,x+0.001]所围城图形上的概率。

    • 现在我们看一下高斯分布公式中的两个未知参数是怎么求解的,有没有感觉和前面求解硬币正面朝上的概率很熟悉,没错,它也是用极大似然估计求解的,只不过它有两个参数u,σ2u,\sigma^{2},求解的套路是一样的,先求出高斯分布的对数似然函数,然后求导,令导数等于0,求解参数,这里要注意,由于有两个未知的参数,所以需要求偏导,令导数等于0,求解过程就不写了,直接列出最后的结果:
      u=1ni=1nxi u=\frac{1}{n}\sum_{i=1}^{n}x_{i}

    σ2=1ni=1n(xiu)2 \sigma^{2} = \frac{1}{n}\sum_{i=1}^{n}(x_{i}-u)^{2}
    2,GMM求解

    • 这里引用李航老师《统计学习方法》上的定义,如下:
      在这里插入图片描述
    • GMM其实就是把多个高斯分布乘以一个系数aka_{k},然后在累加起来,有没有发现aka_{k}和我们前面讲的EM估计中的向量k=[硬币1,硬币2,硬币3]很像,没有错它们都称为隐含变量,下面我们就用包含两个高斯分布的GMM来举例
    • 假设我们有10个身高数据[166178155175160180163188170170][166_{女},178_{男},155_{女},175_{男},160_{女},180_{男},163_{女},188_{男},170_{女},170_{男}]
      男生和女生的身高都分别符合一个高斯分布,根据前面的极大似然估计我们可以求出:
      u=1ni=1nxi=15(178+175+180+188+170)=178.2 u_{男}=\frac{1}{n}\sum_{i=1}^{n}x_{i}=\frac{1}{5}(178+175+180+188+170) = 178.2

    σ2=1ni=1n(xiu)2=15((178178.5)2+(175178.5)2+(180178.5)2+(188178.5)2+(170178.5)2)=44.2 \sigma^{2}_{男} = \frac{1}{n}\sum_{i=1}^{n}(x_{i}-u)^{2}=\frac{1}{5}((178-178.5)^{2}+(175-178.5)^{2}+(180-178.5)^{2}+(188-178.5)^{2}+(170-178.5)^{2})=44.2

    u=1ni=1nxi=15(166+155+160+163+170)=162.8 u_{女}=\frac{1}{n}\sum_{i=1}^{n}x_{i}=\frac{1}{5}(166+155+160+163+170) = 162.8

    σ2=1ni=1n(xiu)2=15((166162.8)2+(155162.8)2+(160162.8)2+(163162.8)2+(170162.8)2)=32.7 \sigma^{2}_{女} = \frac{1}{n}\sum_{i=1}^{n}(x_{i}-u)^{2}=\frac{1}{5}((166-162.8)^{2}+(155-162.8)^{2}+(160-162.8)^{2}+(163-162.8)^{2}+(170-162.8)^{2})=32.7

    • 假设我们获得的10个身高数据是[166178155175160180163188170170][166_{未知},178_{未知},155_{未知},175_{未知},160_{未知},180_{未知},163_{未知},188_{未知},170_{未知},170_{未知}],我们知道他们是属于两个高斯分布,我要如何求出这个高斯分布呢?,有没有一种熟悉的味道,和上面讲解的EM估计非常类似,其实他们的思想是一样的,我下面就一步一步计算一遍
    • 首先假设uu_{男}=178,σ2\sigma^{2}_{男}=44,uu_{女}=162,σ2\sigma^{2}_{女}=32
    • 第一步,求第一个数据166的可能性为:
      f(166)=1442πe(166178)22×44=0.0735688 f(166)_{男}=\frac{1}{\sqrt{44}\sqrt{2\pi}}e^{-\frac{(166-178)^{2}}{2\times 44}}=0.0735688

    f(166)=1322πe(166162)22×32=0.345092 f(166)_{女}=\frac{1}{\sqrt{32}\sqrt{2\pi}}e^{-\frac{(166-162)^{2}}{2\times 32}}=0.345092
    因为f(166)<f(166)f(166)_{男}<f(166)_{女},所以166这个数据属于女生的高斯分布的可能性大,下面我们计算剩余的数据;

    身高 男生高斯分布的可能性 女生高斯分布的可能性
    166 0.0735688 0.345092
    178 0.377883 0.00811579
    155 0.000926094 0.206064
    175 0.341146 0.0316009
    160 0.00951402 0.41626
    180 0.361091 0.00280474
    163 0.0293052 0.436237
    188 0.121294 0.000011
    170 0.182602 0.16301
    170 0.182602 0.16301

    我们根据可能性的大小,确定数据的属于那个分布,166178155175160180163188170170166_{女},178_{男},155_{女},175_{男},160_{女},180_{男},163_{女},188_{男},170_{男},170_{男}

    • 第二步,根据极大似然估计来计算两个高斯分布的u,σ2u,\sigma^{2}
    • 第三步,判断新计算的u,σ2u,\sigma^{2}与上一次的u,σ2u,\sigma^{2}是否相等,如果不相等重复第一步和第二步;
    • 这里有个问题,我们知道GMM中有个权重系数aka_{k}可是我们刚才并没有出现这个aka_{k},其实是为了方便直接使用男或女表示了,如果使用aka_{k}表示,则数据166166_{女},就表示为166[0,1]166_{[0,1]},GMM是多个高斯分布乘以系数aka_{k},然后相加得到的,所以:
      166=166[0,1]=0×+1×= 166_{女}=166_{[0,1]}=0\times 男生高斯分布+1\times女生高斯分布=女生高斯分布

    四,webrtc 中的 VAD 实现

    1,VAD激进模式设置

    • 共四种模式,用数字0~3来区分,激进程度与数值大小正相关。
      0: Normal,1:low Bitrate, 2:Aggressive;3:Very Aggressive

    2,帧长设置

    • 共有三种帧长可以用到,分别是80/10ms,160/20ms,240/30ms,实际上目前只支持10ms的帧长。
    • 其它采样率的48k,32k,24k,16k会重采样到8k来计算VAD。之所以选择上述三种帧长度,是因为语音信号是短时平稳信号,其在10ms-30ms之间可看成平稳信号,高斯马尔科夫等信号处理方法基于的前提是信号是平稳的,在10ms~30ms,平稳信号处理方法是可以使用的。

    3,高斯模型中特征向量选取

    • 在WebRTC的VAD算法中用到了聚类的思想,只有两个类,一个类是语音,一个类是噪声,对每帧信号都求其是语音和噪声的概率,根据概率进行聚类,当然为了避免一帧带来的误差也有一个统计量判决在算法里,那么问题来了,选择什么样的特征作为高斯分布的输入呢?这关系到聚类结果的准确性,也即VAD性能,毋庸置疑,既然VAD目的是区分噪声和语音,那么噪声信号和语音信号这两种信号它们的什么特征相差最大呢?选择特征相差比较大自然能得到比较好的区分度。

    • 众所周知,信号的处理分类主要有时域,频域和空域,从空域上看,webRTC的VAD是基于单麦克的,噪声和语音没有空间区分度的概念,在多麦克风场景,确实基于多麦克风的VAD算法,从时域上看,而者都是时变信号,且短时信号变化率比较小,所以推算来推算去只有频域的区分度可能是比较好的。

    • 汽车噪声频谱
      在这里插入图片描述

    • 粉红噪声频谱
      在这里插入图片描述

    • 白噪声频谱
      在这里插入图片描述

    • 语音声谱
      在这里插入图片描述

    • 从以上四个图中,可以看到从频谱来看噪声和语音,它们的频谱差异还是比较大,且以一个个波峰和波谷的形式呈现。

    • WebRTC正式基于这一假设,将频谱分成了6个子带。它们是:80Hz250Hz,250Hz500Hz,500Hz1K,1K2K,2K3K,3K4K。分别对应于feature[0],feature[1],feature[2],…,feature[5]。

    • 可以看到以1KHz为分界,向下500HZ,250Hz以及170HZ三个段,向上也有三个段,每个段是1KHz,这一频段涵盖了语音中绝大部分的信号能量,且能量越大的子带的区分度越细致。

    • 我国交流电标准是220V~50Hz,电源50Hz的干扰会混入麦克风采集到的数据中且物理震动也会带来影响,所以取了80Hz以上的信号。

    • 这个模型和我们上面讲个的身高的例子,原理是一样的,只是这个例子的输入不是身高的值,而是子带能量,这个GMM包含两个高斯分布,一个是语音的高斯分布,一个是噪音的高斯分布

    3,计算流程

    • 高斯模型有两个参数H0和H1,它们分表示的是噪声和语音,判决测试使用LRT(likelihood ratio test,似然比检测)。分为全局和局部两种情况
      在这里插入图片描述

    4,参数更新

    • 噪声均值更新,参数更新就是使用极大似然估计根据已经分类完的数据去重新计算均值uu和方差σ2\sigma^{2},WebRtcVad_FindMinimum函数对每个特征,求出100个帧里头的前16个最小值。每个最小值都对应一个age,最大不超过100,超过100则失效,用这个最小值来跟新噪声,这里要注意为什么要使用部分数据而不是全部的数据去更新参数呢,这个和随机梯度下降法是一个道理,因为数据太多了,计算量会很大,10ms 音频就有6个样本,如果是一个小时呢?

    • 更新噪声均值,语音均值,噪声方差,语音方差,自适应也就体现在这里

    五,参考资料:

    https://blog.csdn.net/shichaog/article/details/52399354/
    https://www.jianshu.com/p/1121509ac1dc
    https://blog.csdn.net/zouxy09/article/details/8537620

    展开全文
  • 今天使用下面的命令安装webrtcvad的时候出现了下面的问题,命令为: pip install webrtcvad 错误信息为: (base) ➜ ~ pip install webrtcvad Looking in indexes: http://mirrors.aliyun.com/pypi/simple/ ...

    今天使用下面的命令安装webrtcvad的时候出现了下面的问题,命令为:

    pip install webrtcvad

    错误信息为:

    (base) ➜  ~ pip install webrtcvad
    Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
    Collecting webrtcvad
      Downloading http://mirrors.aliyun.com/pypi/packages/89/34/e2de2d97f3288512b9ea56f92e7452f8207eb5a0096500badf9dfd48f5e6/webrtcvad-2.0.10.tar.gz (66kB)
         |████████████████████████████████| 71kB 696kB/s
    Building wheels for collected packages: webrtcvad
      Building wheel for webrtcvad (setup.py) ... error
      ERROR: Complete output from command /Users/admin/anaconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/5h/mjbc_z1n7m91q21xw9_m217m0000gn/T/pip-install-hy22jowz/webrtcvad/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/5h/mjbc_z1n7m91q21xw9_m217m0000gn/T/pip-wheel-5v9raxcm --python-tag cp37:
      ERROR: running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-10.7-x86_64-3.7
      copying webrtcvad.py -> build/lib.macosx-10.7-x86_64-3.7
      running build_ext
      building '_webrtcvad' extension
      creating build/temp.macosx-10.7-x86_64-3.7
      creating build/temp.macosx-10.7-x86_64-3.7/cbits
      creating build/temp.macosx-10.7-x86_64-3.7/cbits/webrtc
      creating build/temp.macosx-10.7-x86_64-3.7/cbits/webrtc/common_audio
      creating build/temp.macosx-10.7-x86_64-3.7/cbits/webrtc/common_audio/signal_processing
      creating build/temp.macosx-10.7-x86_64-3.7/cbits/webrtc/common_audio/vad
      /usr/local/Cellar/gcc/9.2.0/bin/gcc-9 -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/admin/anaconda3/include -arch x86_64 -I/Users/admin/anaconda3/include -arch x86_64 -DWEBRTC_POSIX -Icbits -I/Users/admin/anaconda3/include/python3.7m -c cbits/pywebrtcvad.c -o build/temp.macosx-10.7-x86_64-3.7/cbits/pywebrtcvad.o
      unable to execute '/usr/local/Cellar/gcc/9.2.0/bin/gcc-9': No such file or directory
      error: command '/usr/local/Cellar/gcc/9.2.0/bin/gcc-9' failed with exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for webrtcvad
      Running setup.py clean for webrtcvad
    Failed to build webrtcvad
    Installing collected packages: webrtcvad
      Running setup.py install for webrtcvad ... error
        ERROR: Complete output from command /Users/admin/anaconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/5h/mjbc_z1n7m91q21xw9_m217m0000gn/T/pip-install-hy22jowz/webrtcvad/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/5h/mjbc_z1n7m91q21xw9_m217m0000gn/T/pip-record-m4llx73p/install-record.txt --single-version-externally-managed --compile:
        ERROR: running install
        running build
        running build_py
        creating build
        creating build/lib.macosx-10.7-x86_64-3.7
        copying webrtcvad.py -> build/lib.macosx-10.7-x86_64-3.7
        running build_ext
        building '_webrtcvad' extension
        creating build/temp.macosx-10.7-x86_64-3.7
        creating build/temp.macosx-10.7-x86_64-3.7/cbits
        creating build/temp.macosx-10.7-x86_64-3.7/cbits/webrtc
        creating build/temp.macosx-10.7-x86_64-3.7/cbits/webrtc/common_audio
        creating build/temp.macosx-10.7-x86_64-3.7/cbits/webrtc/common_audio/signal_processing
        creating build/temp.macosx-10.7-x86_64-3.7/cbits/webrtc/common_audio/vad
        /usr/local/Cellar/gcc/9.2.0/bin/gcc-9 -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/admin/anaconda3/include -arch x86_64 -I/Users/admin/anaconda3/include -arch x86_64 -DWEBRTC_POSIX -Icbits -I/Users/admin/anaconda3/include/python3.7m -c cbits/pywebrtcvad.c -o build/temp.macosx-10.7-x86_64-3.7/cbits/pywebrtcvad.o
        unable to execute '/usr/local/Cellar/gcc/9.2.0/bin/gcc-9': No such file or directory
        error: command '/usr/local/Cellar/gcc/9.2.0/bin/gcc-9' failed with exit status 1
        ----------------------------------------
    ERROR: Command "/Users/admin/anaconda3/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/5h/mjbc_z1n7m91q21xw9_m217m0000gn/T/pip-install-hy22jowz/webrtcvad/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/5h/mjbc_z1n7m91q21xw9_m217m0000gn/T/pip-record-m4llx73p/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/5h/mjbc_z1n7m91q21xw9_m217m0000gn/T/pip-install-hy22jowz/webrtcvad/

    解决方法

    发现是gcc出现问题了,于是重新安装gcc

    brew search gcc
    brew install gcc

    装了之后我发现是gcc9.2,于是加入环境变量:

    sudo vim ~/.zshrc

    用户可能是bashrc,我这里由于装了zsh,环境变量文件变成了zshrc,用户可以自己打开自己的bashrc。

    alias gcc='gcc-9'
    alias cc='gcc-9'
    alias g++='g++-9'
    alias c++='c++-9'

    然后命令行输入:

    source ~/.zshrc

    然后就可以重新安装了:

    (base) ➜  ~ pip install webrtcvad
    Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
    Collecting webrtcvad
      Downloading http://mirrors.aliyun.com/pypi/packages/89/34/e2de2d97f3288512b9ea56f92e7452f8207eb5a0096500badf9dfd48f5e6/webrtcvad-2.0.10.tar.gz (66kB)
         |████████████████████████████████| 71kB 642kB/s 
    Building wheels for collected packages: webrtcvad
      Building wheel for webrtcvad (setup.py) ... done
      Stored in directory: /Users/admin/Library/Caches/pip/wheels/f5/90/4c/296ccd2e89848899bd357d5e596d88f7b9bf180f3ec8c5b326
    Successfully built webrtcvad
    Installing collected packages: webrtcvad
    Successfully installed webrtcvad-2.0.10

     

    参考文献

    [1].Mac OS升级GCC版本. https://wangxin1248.github.io/life/2019/06/mac-update-gcc.html

    展开全文
  • Better VAD: py-webrtcvad

    2020-12-07 11:41:09
    <p>https://github.com/wiseman/py-webrtcvad</p> <p>From preliminary tests it works well and it is fast. Its API might need some adaptation and/or we can create our own C extension.</p><p>该提问来源于...
  • VS2019远程调试webrtcvad

    2020-10-24 23:48:38
    文章目录1 准备代码2 新建vs工程到webrtcvad3 配置vs工程3.1 配置linux远程3.2 附加包含目录3.3 库依赖项3.4 调试页面4 遇到的问题4.1 error : unknown type name ‘int16_t’4.2 整个代码需要一个main函数 ...


    之前在这VS2019单独编译WEBRTC VAD模块尝试通过用window上的vs2019调试过WEBRTC的VAD模块,但是其实还是很不方便,还需要将代码转到linux上进行使用。vs2019可以直接对linux代码进行编译和调试以及开发工作。

    1 准备代码

    下载这个speech-vad-demo的github代码即可,这个是CMake项目。也可以转换为g++的vs linux工程。

    可参考VS2019远程linux开发配置


    2 新建vs工程到webrtcvad

    在这里插入图片描述


    3 配置vs工程

    3.1 配置linux远程

    这部分参考VS2019远程开发配置


    3.2 附加包含目录

    webrtcvad熟悉配置页->C/C++ ->附加包含目录添加:
    /home/kaldi/projects/webrtcvad/thirdparty/webrtc/home/kaldi/projects/webrtcvad/thirdparty/webrtc


    3.3 库依赖项

    webrtcvad项目属性 配置页->链接器 ->库依赖项:
    pthreadpthread


    3.4 调试页面

    在这里插入图片描述


    4 遇到的问题

    4.1 error : unknown type name ‘int16_t’

    通过定为发现int16_t是stdint.h系统库。因此通过<>include进入即可。

    #include <stdint.h>
    

    4.2 整个代码需要一个main函数

    这里是vad-test.cc


    展开全文
  • m experiencing an error when I try to install webrtcvad via pip. I'm trying to install using the conda CLI. Some information about my environment: <p>OS: Windows 10 Insider Preview 10.0.19013.1122...
  • webrtcvad安装总结 在安装webrtcvad时遇到了若干问题,在此记录。
  • 语音端点检测(VAD)----webrtcvad

    千次阅读 2019-05-07 16:34:21
    webrtcvad是WebRTC语音活动检测器(VAD)的python接口,能够有效支持python2和python3,它能够将区分一段语音分割中的静音帧和非静音帧。本文将使用webrtcvad将非静音帧识别出来,并将非静音帧存为新的wav文件。 ...
  • 若是直接使用pip install webrtcvad,则很容易报错: Collecting webrtcvad Downloading ...
  • <div><p>Hi, I was curious whether we could use this tool for real time application. That is whether we could detect voices coming directly from a mic in a noisy ...wiseman/py-webrtcvad</p></div>
  • 解决安装webrtcvad出现错误的方法

    千次阅读 2019-05-23 23:44:50
    今天有同学装不上webrtcvad,执行 pip installwebrtcvad 后在最后几行出现如下错误: building '_webrtcvad' extension error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ ...
  • Windows系统pip install webrtcvad报错Microsoft Visual C++ 14.0 is required或者其他跟VC++有关的错误,解决方法:安装Microsoft Visual C++ 14.0及配置环境。 1、安装Microsoft Visual C++ 14.0及配置好环境 ...
  • <p>I am trying to install py-webrtcvad module using command <strong>ipy -X:Frames -m pip install webrtcvad</strong></p> <p>It results in the below error : <pre><code>**Complete output from command ...
  • VS2019单独编译WEBRTC VAD模块1 准备工作2 导入vs20192.1 新建C++控制台工程2.2 包含编译文件2.3 修改配置2.4 额外修改2.5 右键项目编译即可 1 准备工作 vs2019社区版 speech-vad-demo的github代码 2 导入vs2019 2.1...
  • webrtcvad是WebRTC语音活动检测器(VAD)的python接口。兼容python2和python3。功能是将一段音频数据分为静音与非静音。它对于电话和语音识别很有用。1、安装pipyum -y install epel-releaseyum -y install python-pip...
  • 在使用pip命令pip install webrtcvad时报了这个错。 可能可以解决的方法:将pip升级到最新版本。 命令: pip show pip 查看pip版本 python -m pip install --upgrade pip 升级pip pip install +包名 安装包 ...
  • webrtcvad python——语音端点检测

    万次阅读 2017-02-07 14:16:29
    py-webrtcvad 语音端点检测算法说明webrtc的vad使用GMM(Gaussian Mixture Mode)对语音和噪音建模,通过相应的概率来判断语音和噪声,这种算法的优点是它是无监督的,不需要严格的训练。GMM的噪声和语音模型如下:p...
  • WebRTC VAD 中所用滤波器之分析

    千次阅读 2018-06-18 20:45:41
    WebRTC VAD用了一些滤波器,这些滤波器的设置还是非常巧妙的,这篇文章分析他们所用滤波器之原理。 下面分析的滤波器都是在文件vad_filterbank.c里面   在提取特征的时候,用的是滤波器组用来提取的log域上的...
  • webrtcvad是WebRTC语音活动检测器(VAD)的python接口。兼容python2和python3。功能是将一段音频数据分为静音与非静音。它对于电话和语音识别很有用。 1、安装pip yum -y install epel-release yum -y install python...
  • <div><p>This is not so much of a problem for 2.7 due to the standalone installer "Microsoft Visual C++ Compiler for Python 2.7" or plus your precompiled version. However for Python 3 ...
  • WebRTC VAD算法初探

    千次阅读 2018-03-23 10:37:40
    这几天对webrtc中的VAD算法做了一些研究,有了一些心得VAD算法中核心的是使用了GMM进行分类,noise作为一类,speech作为一类,两类求后验概率,并且实时的更新GMM的参数但是这个GMM的具体情况是怎么样的,它的均值,...
  • 目录概述安装使用脚本1. 测试静音片段2. 清理静音片段 概述 WebRTC是一个免费、开放的框架/项目。 使web浏览器通过简单的JavaScript api接口实现实时通信功能。...WebRTC是谷歌开发的VAD,是当前最有效
  • webrtcvad-2.0.10.tar.gz

    2019-05-27 16:07:51
    图像特征检测算法-SIFT的Python实现,下载的文件为vlfeat-0.9.20-bin.tar.gz,解压缩后,将vlfeat-0.9.20/bin/win64文件夹下的sift.exe和vl.dll拷贝到当前工作目录下。
  • webrtc vad小bug

    2017-10-27 11:18:22
    当channel为5的时候offset为80,再进行下面的操作smallest_values[j + 1]将会越出数组的限界到”第97个“;应该将下图的16改为15 low_value_vector数组定义如下:

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 173
精华内容 69
关键字:

webrtcvad