本部分知识基于葛世超等人著《实时语音处理实践指南》一书进行整理。第一章 信号处理
第一节 语音基础知识
- 语音信号是实信号。
- 语音信号是时变的,每秒约产生10个音节,所以在10~30ms内可以看成是准静态的。
- 为什么要加窗处理?
答:对连续的语音分帧做STFT处理,等价于截取一段时间信号,对其进行周期延拓,从而变成无限长序列,然后对该无限长序列做FFT变换,但是这一截断并不符合傅里叶变换的定义,因此会导致频谱泄露和混叠。泄露会导致幅度较小的频点淹没在幅度较大的频点泄漏分量重,而混叠会在分段拼接处引入虚假的峰值,进而不能获得准确的频谱情况。通过加窗可以抑制频谱泄漏和混叠。
- 在语音增强算法一般用FIR滤波器,是为了保持线性相位。
第二节 重叠相加和重叠保留法
- 重叠相加(OLA)和重叠保留(OLS)主要用于将无限长序列的傅里叶变换、卷积和滤波运算转换成若干子段的傅里叶变换、卷积和滤波运算,时域计算复杂度为O(n^2),频域为O(nlogn)。语音信号中一般在频域实现。
- 对于分段长度为L,滤波器长度为M的情况,通常选择L+M-1为2的倍数,以利用FFT加速运算。
第三节 加权重叠相加法(WOLA)
- 加权重叠相加法在IFFT变换之后还要对数据进行加权,加权使用窗函数来实现,然后安装FFT对应段再相加,重叠相加结果是最终结果。加窗的目的是减小截断效应带来的不利影响,以抑制帧边缘主观听感上的不连续性。常用的窗函数包括均方汉宁窗和均方布莱克曼窗。
- 不同窗具有的最优重叠长度不一致,布莱克曼哈里斯窗的最优重叠长度为窗长的66.1%,而汉明窗和汉宁窗则为50%。
第四节 语音预加重预加重技术是为了提高高频分辨率。例如speex在做AEC的时候,选择的预加重洗漱为0.9。常用预加重洗漱提高200Hz以上的频率成分。