用Bash把wav變成pcm音檔
在使用IoT大平台語音辨識/語音轉文字(STT)功能一文中,需要用到pcm音檔,但是一般電腦上的錄音程式都是預設wav輸出的,該怎辦呢?
參考:Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件
https://www.cnblogs.com/renhui/p/7457321.html
文中在把pcm音檔寫入時,會先呼叫writeWaveFileHeader(),將寫入44 byte的標頭寫到檔案中,讓pcm音檔變成wav音檔。
因此,我們要把wav變成pcm,就只要移除wav就是前面的44 byte,就能讓它恢復成pcm音檔。
轉換
Bash使用dd就可以跳過前面44byte
dd ibs=44 skip=1 < recorder.wav > got.pcm
ibs是指輸入的區塊大小, 這裡設44 byte
skip是指忽略輸入的區塊數目
確認正確性
使用播放器或ffplay可以確認轉出來的是否正常
ffplay -autoexit -ar 16k -ac 2 -f s16le got.pcm
-ar是sample rate, 我們電腦一般常用的是44.1k, 進階一點是48k
-ac是聲道數, 這裡2是指立體聲, 1是單聲道
-f是音檔資料格式, signed 16-bit little-endian
留言