主要内容

G.729语音活动检测

这个例子展示了如何实现ITU-T G.729语音活动检测(VAD)

介绍

语音活动检测(VAD)是一个重要的问题在许多语音/音频应用程序包括语音编码、语音识别和语音增强。例如,ITU-T G.729标准使用VAD模块降低传输速率在沉默一段演讲。

算法

在第一阶段,从输入信号中提取四个参数特性。这些参数是full-band和低波段帧能量,组线光谱频率(LSF)和过零率。如果帧数小于32岁,一个初始化阶段的长期平均水平,和声音活动决定被迫1如果帧能量从上面的LPC分析21 dB。否则,声音活动决定被迫0。如果帧数等于32岁,一个初始化阶段特征能量的背景噪音。

下一阶段,设置不同的参数计算。这组生成作为当前帧之间的差异测量参数和运行平均背景噪音的特征。四个不同措施计算:

一个光谱失真)
b)一个能量差
c)低波段能量不同
d)一个零交点的区别

最初的语音活动决定下一阶段,使用multi-boundary决定在四个不同的空间区域的措施。主动语态决定给出的联盟决定区域和稳定的声音决定其互补逻辑的决定。能量问题,一起过去相邻帧的决定,用于决定平滑。平均运行必须更新只有在背景噪声的存在,而不是在演讲的存在。一种自适应阈值测试,更新发生只有当满足阈值标准。

监督实施

vadG729函数包含算法的实现。

初始化

建立一个音频源。这个例子使用一个音频文件阅读器。

audioSource = dsp.AudioFileReader (SamplesPerFrame = 80,文件名=“speech_dft_8kHz.wav”,OutputDataType =“单一”);%注意:您可以使用麦克风来源而不是通过使用音频%设备读者(注:audioDeviceReader需要音频工具箱% (TM)许可证)% audioSource = audioDeviceReader (OutputDataType =‘单身’,……% NumChannels = 1,…% SamplesPerFrame = 80,…% SampleRate = 8000);%创建时间范围形象化VAD(通道1)和决定%语音数据(2)频道范围= timescope (SampleRate = (8000/80 8000),TimeSpanSource =“属性”,时间间隔= 10,YLimits = (-0.3 - 1.1),Title =“决定语音和语音数据”,TimeSpanOverrunAction =“滚动”);

流处理循环

%初始化VAD参数VAD_cst_param = vadInitCstParams;清晰的vadG729% 10秒钟运行numTSteps = 1000;(numTSteps)%检索10 ms的演讲音频记录器的数据演讲= audioSource ();%的VAD算法决定= vadG729(演讲、VAD_cst_param);%情节语音帧和决定:1演讲,0为沉默范围(决定、演讲);numTSteps = numTSteps - 1;结束释放(范围);

清理

关闭音频输入设备和释放资源

释放(audioSource);

生成和使用MEX-File

MATLAB编码器可用于生成C代码的函数vadG729。为了生成一个MEX-file,执行下面的命令。

codegenvadG729arg游戏{单(0 (80 1)),coder.Constant (VAD_cst_param)}
代码生成成功。

速度比较

为模拟创造了mex files经常帮助实现更快的运行时。下面的代码行首先测量时间由MATLAB函数,然后测量时间的运行相应的MEX-file。注意,加速因子对不同的机器上可能会有所不同。

audioSource = dsp.AudioFileReader (“speech_dft_8kHz.wav”,SamplesPerFrame = 80,OutputDataType =“单一”);清晰的vadG729VAD_cst_param = vadInitCstParams;抽搐;~结束(audioSource)演讲= audioSource ();决定= vadG729(演讲、VAD_cst_param);结束t1 = toc;重置(audioSource);抽搐;~结束(audioSource)演讲= audioSource ();决定= vadG729_mex(演讲、VAD_cst_param);结束t2 = toc;disp (的结果:)
结果:
disp ([的时间运行MATLAB代码:num2str (t1),“秒”]);
MATLAB代码运行时间:1.4256秒
disp ([“时间运行MEX-File:”num2str (t2),“秒”]);
时间运行MEX-File: 0.2509秒
disp ([“加速的因素”num2str (t1 / t2),“是通过创建MEX-File”]);
加速5.6817倍是通过创建MEX-File

引用

[1]ITU-T推荐G.729 -附件B:沉默的压缩方案G.729优化终端符合V.70 ITU-T建议