記一次微信音頻處理
項目背景:微信jssdk,功能很豐富谓罗。針對語音這塊,項目中使用了上傳語音和語音識別揭措。因為項目具體需求税手,需要將微信的語音在其他端內(nèi)進行語音播放。所以芦倒,服務(wù)端需要根據(jù)media_id下載語音(格式為speex),然后轉(zhuǎn)碼成wav兵扬。為了節(jié)約成本,將wav轉(zhuǎn)成mp3津坑。整個處理流程如下:
1.h5上傳
上傳文件傲霸,獲取media_id
2.服務(wù)端根據(jù)media_id,下載文件到服務(wù)器
3.轉(zhuǎn)碼speex至wav
Install speex
download speex source code, https://downloads.xiph.org/releases/speex/speex-1.2.0.tar.gz
tar xzvf speex-1.2.0.tar.gz
cd speex-1.2.0 && ./configure && make && make install
Install decoder
git clone https://github.com/gamelife1314/wechat-speex-declib.git
cd wechat-speex-declib && make && cp ./bin/speex_decode /usr/local/bin/speex2wav
speex2wav test.speex test.wav
4.將wav文件轉(zhuǎn)成mp3眉反,但之前需要安裝ffmpeg穆役,同時安裝mp3編碼庫:libmp3lame。
如果直接使用mp2轉(zhuǎn)碼耿币,會出現(xiàn)本地可以正常播放,但在云端無法自動播放十性。比如:阿里云的oss塑悼,直接轉(zhuǎn),是無法直接播放的拢肆。
安裝可以參考我的這篇文章:ffmpeg+libmp3lame庫源碼安裝教程
5.使用ffmpeg,轉(zhuǎn)wav至mp3
ffmpeg -i tt.wav -ac 1 -ab 128 -ar 8000 -acodec libmp3lame tt3.mp3
說明:ab:比特率郭怪,ar:采樣率,-acodec 編碼 ac:聲道