本文主要介紹智能語音交互的語音識別輸入格式說明,以及輸入語音格式不符合要求時常見問題以及方法,您可以優先在文本檔獲取對應解決方案。
語音識別各服務支持的語音輸入格式
語音識別服務 | 語音輸入格式說明 |
一句話識別 |
|
實時語音識別 |
|
錄音文件識別 |
|
錄音文件識別閑時版本 |
|
錄音文件識別極速版本 |
|
如何查看語音格式
常見語音格式名詞釋義,請參見基本概念。
采樣率:8000 Hz(8K Hz)、16000 Hz (16K Hz),即每秒8000個或16000個采樣點。
采樣位數:16 bit,即每個采樣點的音頻信息用16 bit(2個字節)保存。
聲道:Mono單聲道;Stereo立體聲。
語音時長與文件大小轉換:
語音文件Size大小(單位MiB)=
(采樣率×采樣位數×聲道數×語音時長(單位s))/(8*1024*1024)=16000(Hz)*16(bit)*1(聲道)*60(s)/(8*1024*1024)=1.83 MiB(近似值)
Linux操作系統下查看語音格式:
使用如下命令查看。
file input.wav
預期結果:
8000 Hz采樣率、16 bit采樣位數、單聲道(mono)的無壓縮WAV格式如下圖所示:
16000 Hz采樣率、16 bit采樣位數、單聲道(mono)的無壓縮WAV格式如下圖所示:
Windows操作系統下查看語音格式:
在Windows操作系統中,您可以選中目標語音,單擊鼠標右鍵,選擇屬性,可以查看更多信息。
預期結果:
8000 Hz采樣率、16 bit采樣位數、單聲道(mono)的無壓縮WAV格式如下圖所示:
16000 Hz采樣率、16 bit采樣位數、單聲道(mono)的無壓縮WAV格式如下圖所示:
如何進行語音格式轉換
若輸入語音采樣率、采樣位數、聲道、編碼等不符合語音識別格式要求時會報錯,測試語音可先進行語音格式轉換。
Linux操作系統下轉換語音格式:
使用如下常見的FFmpeg命令進行轉換。更多操作,請參見下載FFmpeg。
#查詢語音格式如采樣率、聲道、編碼等
ffmpeg -i input.mp3
#將某個wav文件轉化為8K、16bit、單聲道的wav文件
ffmpeg -i input.wav -ar 8000 -ac 1 -acodec pcm_s16le -f s16le output.wav
#將某個wav文件轉化為16K、16bit、單聲道的wav文件
ffmpeg -i input.wav -ar 16000 -ac 1 -acodec pcm_s16le -f s16le output.wav
#將某個pcm文件轉化為16K、16bit、單聲道的wav文件
ffmpeg -i input.pcm -f s16le -ar 16000 -ac 1 -acodec pcm_s16le output.wav
#將某個wav文件轉化為16K、16bit、單聲道的pcm文件
ffmpeg -y -i input.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 output.pcm
#將某個Mp3文件轉換為轉化為16K、16bit、單聲道的wav文件
ffmpeg -y -i input.mp3 -acodec pcm_s16le -f s16le -ac 1 -ar 16000 output.wav
#將某個44.1KHz、16bit的wav文件轉化為16K、16bit、單聲道的wav文件
ffmpeg -y -f s16le -ar 44100 -ac 1 -i input.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 output.wav
#將某個8K的alaw文件轉化為8K、16bit、單聲道的wav文件
ffmpeg -f alaw -ar 8000 -i input.wav -ar 8000 -ac 1 -acodec pcm_s16le -f s16le output.wav
#將某個8K的mulaw文件轉化為8K、16bit、單聲道的wav文件
ffmpeg -f mulaw -ar 8000 -i input.wav -ar 8000 -ac 1 -acodec pcm_s16le -f s16le output.wav
#將某個amr文件轉化為16K、16bit、單聲道的wav文件
ffmpeg -i input.wav -ar 16000 -ac 1 -acodec pcm_s16le -f s16le output.wav
Windows操作系統下轉換語音格式:
Windows系統下語音轉換格式可使用轉換工具,常見工具Adobe Audition、CoolEdit或其他在線、離線語音轉換工具。
使用轉換工具,優先打開語音,修改導出設置的格式后運行即可,以下是以輸出16K數據為例。
常見問題及解決方法
官網示例語音正常,換成自己待測試的語音就獲取不到結果?
建議您檢查待測試的語音格式是否符合語音識別輸入格式要求。更多內容,請參見語音識別各服務支持的語音輸入格式。
將待測試語音轉換成8K或16K、16 bit采樣位數、單聲道(mono)無壓縮的WAV文件。更多語音格式轉換,請參見如何進行語音格式轉換。
調用錄音文件識別或錄音文件識別閑時版報錯status:41010101 ,message: UNSUPPORT_SAMPLE_RATE,怎么辦?
建議優先檢查控制臺選擇的模型采樣率和您輸入語音的采樣率是否匹配。8K模型要輸入8K的語音數據測試,16K模型要輸入16K的語音數據進行測試。
在發送請求時增加采樣率自適應參數:enable_sample_rate_adaptive=true。更多內容,請參見接口說明。
如果尚不能解決問題,您可以將語音格式進行轉換,再進行測試。更多內容,請參見如何進行語音格式轉換。
調用實時語音識別結果返回Null怎么回事?
根據實時語音識別產品介紹,請參見語音識別各服務支持的語音輸入格式。實時語音識別主要用于語音流式輸入的場景,僅支持8K或16K、16 bit采樣位數、單聲道(mono)無壓縮的PCM或WAV文件。
如果您在使用已有的語音文件測試實時語音識別服務,需先將已有語音文件轉換成實時語音識別的語音輸入格式。更多內容,請參見如何進行語音格式轉換。
輸入Mp3語音文件調用一句話識別報錯怎么辦?
根據一句話產品介紹,參見語音識別各服務支持的語音輸入格式。一句話產品不支持輸入Mp3格式,建議您調用錄音文件識別或者錄音文件識別閑時版服務,且在發送請求時添加enable_sample_rate_adaptive=true參數。
調用一句話識別報錯status:41010104,message:TOO_LONG_SPEECH 怎么辦?
根據一句話產品介紹,參見語音識別各服務支持的語音輸入格式。一句話產品僅支持60s以內的音頻。如果您的輸入語音超過60s,建議您調用實時語音識別、錄音文件識別或錄音文件識別閑時版服務。
控制臺產品體驗上傳音頻后無法識別怎么辦?
建議您先將待測試語音轉換成8K或16K、16 bit采樣位數、單聲道(mono)無壓縮的WAV文件。更多關于語音格式轉換內容,請參見如何進行語音格式轉換。
調用錄音文件識別或錄音文件識別閑時版報錯 status:41050103,message:AUDIO_DURATION_TOO_LONG,怎么辦?
根據錄音文件識別或錄音文件識別閑時版服務產品介紹,服務支持的最大音頻時長是12小時,當您提交的音頻時長大于12小時會報此錯誤。您可以使用 ffmpeg 命令,將長音頻切分成多個音頻文件,分別識別。
ffmpeg工具下載地址:https://ffmpeg.en.lo4d.com/download
ffmpeg命令用法如下:
ffmpeg -i input_audio.wav -ss 00:10:00 -to 5:10:00 -c copy output_audio.wav
參數說明:
-i input_audio.wav:指定輸入文件,即待處理的音頻文件 input_audio.wav。
-ss 00:10:00:指定開始時間,從 00:10:00(即原始音頻的第10分鐘)開始處理。
-to 5:10:00:指定結束時間,處理到 5:10:00(即原始音頻的第5小時10分鐘)結束。
-c copy:指定編解碼器選項。copy 表示直接復制音頻數據,不做重新編碼。
output_audio.wav:指定輸出文件,即處理后的音頻文件 output_audio.wav,音頻時長5小時。
注意:如果是雙聲道音頻且兩個聲道都需要識別,服務支持的最大音頻時長是6小時。其他立體聲音頻以此類推。