一般智能语音助理或语音机器人工作原理大致如下:
第一阶段: 语音到文本的过程。信号源→设备(捕获音频输入)→增强音频输入→检测语音→转换为其他形式(如文本)
第二阶段: 响应过程。处理文本(如用NLP处理文本,识别意图)→操作响应。
在检测语音过程中,就包括分辨是否为语音信号,该过程会通过指定的频率对模拟信号进行采样,将模拟声波转换为数字数据。这一过程很重要,是否成功地识别语音。如果生成数字数据都是错误的,那么后期的处理响应那肯定是错的。这也是影响智能语音助理或语音机器人识别率的重要因素。
在这个过程,用于语音处理的技术是语音活性检测 (Voice activity detection,VAD),目的是检测语音信号是否存在。 VAD技术主要用于语音编码和语音识别。它可以简化语音处理,也可用于在音频会话期间去除非语音片段:可以在IP电话应用中避免对静音数据包的编码和传输,节省计算时间和带宽。
文本将与大家分享VAD技术,首先讲两个概念:
信噪比(缩写为SNR或S / N)是科学和工程中使用的一种度量,它将所需信号的电平与背景噪声电平进行比较。
SNR定义为信号功率与噪声功率之比,通常以分贝表示。比率高于1:1(大于0 dB)表示信号多于噪声。
窗口,研究信号源,我们将其分成滑动窗口或仅窗口。
编辑
能量检测器
能量检测器对于高SNR信号是有效的,但是当SNR下降直到它在1以下变得无效时失去效率。它也不能将语音与诸如冲击噪声(将笔放在桌子上),打字,空调或任何噪声之类的噪声区分开来。比人声更响亮或更响亮。
波形和频谱分析
在波形和频谱分析中,语音活动检测利用语音的已知特征。在该方法中应用VAD比基于能量的解决方案更加计算密集,但是能够更好地检测非平稳噪声和低SNR场景中的噪声。
对于浊音音素,声带的振动产生谐波丰富的声音,具有50到250 Hz之间的明显音调。所有元音,但也有一些辅音,表现出这种谐波结构,因此是语音的特征。代表谐波结构的特征是语音的可靠指标。然而,单独使用基于谐度或基于音调的特征不能预期无声语音部分(例如一些摩擦音)被检测到。此外,音乐或其他谐波噪声分量可能被误解为语音。
总的来说,对信号的倒谱的分析可以揭示信号能量的来源。
同样的,基于该共振峰结构,也是语音识别系统的重要特征。人类声道中的可变腔允许扬声器形成不同的音素。强调谐振(或共振峰)频率,导致频谱包络的特征形状。
平滑很重要,在一个对话中,一个人只有50%的时间在说话,并且存在大量非活动帧。诸如[p] [t] [k] [b]之类的音是静音,并且静音部分可能不会被算法识别为语音,这将影响自动语音识别系统的性能。
解决方案如下:
这个是在接口的地方操作
智能语音交互实时语音识别如何提高有噪音或者背景音的识别效果
您好,建议您可以设定参数speech_noise_threshold的值。
修改VAD噪声阈值,设置这个参数的值,参数区间是-1到+1,可以设置-0.9,-0.8 ....0, 0.1,0.2...0.8,0.9,方向是趋于-1的方向,放进来的语音越多,有可能更多噪声被当成语音被误识别;
越趋于+1的方向,判断成噪音的越多,有可能更多语音段被当成噪音拒绝掉。
例如: Java: transcriber.addCustomedParam("speech_noise_threshold", -0.1); C++: request->setPayloadParam("speech_noise_threshold",-0.1).