kaldi提取mfcc特征出错,查看log日志文件发现是wav音频频率不匹配:
Waveform and config sample Frequency mismatch: 16000 .vs 8000
(use --allow-downsample=true to allow downsampling the waveform).
这是因为输入的wav的采样频率是16000,而kaldi的标准采样频率是8000,解决方法有两种:
1.根据提示找到step/make_mfcc.sh中调用的compute-mfcc-feats,在后面加 --allow-downsample=true
compute-mfcc-feats $vtln_opts $write_utt2dur_opt --verbose=2 --allow-downsample=true \
--config=$mfcc_config ark:- ark:- \| \
要注意的是step/make_mfcc.sh中有两处调用了compute-mfcc-feats,如果不确定具体是哪处,都加上即可。
2.编写一个shell脚本利用sox将所有的wav采样频率改为8000(比较麻烦,建议第一种)
sox示例如下:
for x in ./*.wav
do
b=${x}
sox ${b} -r 8000 ${b}_tmp.wav #先运行‘#号前 && sox $b -b 16 tmp_$b
rm -rf ${b}
mv ${b}_tmp.wav ${b}
rm -rf ${b}_tmp.wav
done