【語音】音頻重採樣8K轉16K,將mp3轉化爲wav格式

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()不支持這種格式,因此需要格式的轉變

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章