记一次微信音频处理
项目背景:微信jssdk,功能很丰富。针对语音这块,项目中使用了上传语音和语音识别。因为项目具体需求,需要将微信的语音在其他端内进行语音播放。所以,服务端需要根据media_id下载语音(格式为speex),然后转码成wav。为了节约成本,将wav转成mp3。整个处理流程如下:
1.h5上传
上传文件,获取media_id
2.服务端根据media_id,下载文件到服务器
3.转码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文件转成mp3,但之前需要安装ffmpeg,同时安装mp3编码库:libmp3lame。
如果直接使用mp2转码,会出现本地可以正常播放,但在云端无法自动播放。比如:阿里云的oss,直接转,是无法直接播放的。
安装可以参考我的这篇文章:ffmpeg+libmp3lame库源码安装教程
5.使用ffmpeg,转wav至mp3
ffmpeg -i tt.wav -ac 1 -ab 128 -ar 8000 -acodec libmp3lame tt3.mp3
说明:ab:比特率,ar:采样率,-acodec 编码 ac:声道