用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

留言