语音增强:VTLP
Vocal Tract Length Perturbation(VTLP)
语音识别时,说话人之间的声道之间形状的变化会影响语音识别的结果,因此每个说话人同一句话的发音是不同的。为去除不同人的声道对同一个词发音的影响,需要对音频进行处理,VLTP即用于去除说话人身份对发音的影响。VTLP是在对每一句语音时,随机生成一个扭曲因子用于对频谱的频率轴进行扭曲,来去除声道差别对语音识别结果的影响。
实现
nlp的语音增强库nlpaug
源代码:将音频序列进行短时傅里叶变换STFT得到时域-频域二维矩阵(数值代表振幅),然后对频域进行扰动(perturbation),而后通过短时傅里叶逆变换ISTFT将其转回音频序列,注意,转回后的音频序列长度略有不同。
1 | parent_dir = os.path.join('.', 'data', 'respiratory-sound-database', 'Respiratory_Sound_Database', |
结果
1 | (88200,) |
源码分析
上述调用aug.augment(audio)将会调用一下类,然后调用manipulate()方法进行VTLP增强,为方便理解,隐去其他基类调用
1 | import numpy as np |