1、使用python librosa庫
(1)安裝pip install librosa
(2)使用
這種方法可以將語音進行重採樣。聲頻信息完整。但不是pcm格式,可能需要使用第3步進行格式轉化。
filename = 'wav_file_8.wav'
newFilename = 'wav_file_16.wav'
y, sr = librosa.load(filename, sr=8000)
y_16 = librosa.resample(y,sr,16000)
librosa.output.write_wav(newFilename, y_16, 16000)
(3)修改wav格式(如後續研究報錯或不準確,則可能是wav格式問題導致)
原因:
- 使用wave.open()打開文件時報錯:wave.Error: unknown format:3
- 使用open()雖能打開文件,但對後續語音識別任務時,識別時錯誤的
產生這個的原因:對音頻進性處理後寫成新的音頻librosa.output.write_wav()函數
解決方法:Wav格式有很多種,但是wave.open()不支持這種格式,因此需要格式的轉變
- 安裝soxk
sox安裝教程 - 使用sox進行wav格式修改
sox wav_file_16.wav -r 16000 wav_file_16_sox.wav
2、sox 命令 (linux 系統命令)
sox wav_file_8.wav -r 16000 wav_file_16.wav
3、使用sox進行聲音格式轉化
(1)單個音頻文件格式轉化
sox filename.au filename.wav
(2)批量轉化音頻格式並輸出到新的文件夾
命令功能:格式爲.au的原音頻文件在文件夾music裏面,目標爲轉化爲格式.wav的音頻文件,並保存在cmusic文件夾中。
操作方法:在music文件路徑下輸入以下命令:
for %i in (*.mp3) do "C:\Program Files (x86)\sox-14-4-2\sox.exe" %i H:\music\cblues\%i.wav
shell腳本:
#!/bin/bash
for x in ./*.wav;do
b=${x##*/}
sox $b -r 16000 tmp-$b
rm -rf $b
mv tmp-$b $b
done
參考文獻:
1、https://blog.csdn.net/qq_31390999/article/details/95062506
2、https://blog.csdn.net/yyy430/article/details/88408273
3、https://blog.csdn.net/weixin_42997646/article/details/87969705
4、語音信號 重採樣(8KHz轉16KHz), 格式轉換(pcm轉wav), 多聲道分離:https://blog.csdn.net/wei_fu/article/details/90720935
5、linux下用sox批量將pcm文件加wav頭、批量修改採樣率、切音頻https://blog.csdn.net/lucky_ricky/article/details/74587002?utm_source=blogxgwz2