参考
https://github.com/kn007/silk-v3-decoder
https://blog.csdn.net/lbaihao/article/details/53143524
https://www.cnblogs.com/happycxz/p/7809607.html
下面安装的系统环境是 centos7
注:安装过程需要root权限
1 yum安装gcc (如果已安装,跳过。运行gcc –version 可以查看是否安装)
yum -y install gcc
yum -y install gcc-c++
2 编译安装ffmpeg (如果已经安装了,跳过。运行ffmpeg 可以查看是否安装)
参考 https://blog.csdn.net/lbaihao/article/details/53143524
ffmpeg-3.2.tar.bz2; 下载地址: http://www.ffmpeg.org/download.html
百度网盘链接:https://pan.baidu.com/s/1QTnqeWo2EZg6WI-wPYRRDg
提取码:c8h9
解压 (注意解压的文件名不要弄错了,改你下载的文件名)
tar -jxvf ffmpeg-3.2.14.tar.bz2
如果报错:tar (child): bzip2: Cannot exec: No such file or directory
解决:安装bzip2
yum -y install bzip2
解压ffmpeg-3.2.14.tar.bz2完后,进入解压后的目录 执行
./configure
make
make install
如果报错:
yasm/nasm not found or too old. Use --disable-yasm for a crippled build.
解决:安装yasm (参考 https://blog.csdn.net/qqqq245425070/article/details/83961218 )
切到一个专门下载安装yasm的目录,下载解压安装 yasm
下载: wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
解压:tar -zxvf yasm-1.3.0.tar.gz
进入解压后的目录yasm-1.3.0
./configure
注意:如果权限不足,加上sudo
然后执行 make
然后执行 make install
3 在 https://github.com/kn007/silk-v3-decoder 下载 silk-v3-decoder-master.zip
免责声明:下载下来后,360卫士提示有毒,我自己选择了恢复并信任。如果你们担心确实有毒,那么请删除不要使用。若真有毒,而且对你造成了损失,自行承担。
如果下载不下来,可以尝试用手机4G共享网络下载 或者 下载我提供的百度网盘链接
链接:https://pan.baidu.com/s/1zrO5MXvagROfvbqTIAnK5w
提取码:yg4j
将本地解压后的silk-v3-decoder-master上传到linux 服务器上
4 使用converter.sh 执行转码操作
参考
https://github.com/kn007/silk-v3-decoder
https://www.cnblogs.com/happycxz/p/7809607.html
注:第一次使用converter.sh 命令转码时 ,会自动编译生成Silk v3 Decoder,后面再次执行就不需要再次编译了
这里提供2个测试用的 silk文件,都放在百度网盘,一个我自己录的,一个是下面参考文中提供的
sample0.silk 音频内容是:你在干嘛
链接:https://pan.baidu.com/s/1psacwPJWeXmt64lqE2y12w
提取码:n3gr
sample.silk 音频内容是:从北京到太原有多少公里
链接:https://pan.baidu.com/s/1AAPpyv0SpTOX-ucPdlpQIg
提取码:s2so
下面开始转码
在converter.sh 所在目录下,用 sh converter.sh silk_v3_file/input_folder output_format/output_folder flag(format) 脚本命令转码,
例如我使用这个命令:
sh converter.sh sample.silk mp3
如果报错:[Warning] Convert 1587957414316_23591769251781244.slk false, maybe not a silk v3 encoded file.
原因:
很可能是converter.sh文件需要修改 (原因:silk文件采样率不对,具体原因 见参考文章
https://www.cnblogs.com/happycxz/p/7809607.html ); 还有种情况是你录的音频是用的微信小程序调试程序录的,内容base64加密了,而真机程序录音的silk文件没base64加密。
这2种情况 在文章https://www.cnblogs.com/happycxz/p/7809607.html 中都有指出,并且给出了解决方法。
该参考文章中 修改converter.sh 的内容是在第90行,而我实际修改的是第 70行 (vi 打文件输入:set nu 回车显示行号)
我的操作是将第70行注释,然后添加
ffmpeg -y -f s16le -ar 12000 -ac 2 -i “
1.
p
c
m
"
−
f
w
a
v
−
a
r
16000
−
a
c
1
"
1.pcm" -f wav -ar 16000 -ac 1 "
1.pcm"−fwav−ar16000−ac1"{1%.*}.$2” > /dev/null 2>&1
如下图:
修改保存后,再次执行转码 成功了
转码成功后,会在当前目录下生成同名的.mp3文件,下载到windows 播放内容是正常的,大功告成!
如果想将silk文件转 wav 只要将转码命令后面指定转换成的格式改为wav 即可,其他格式我没验证,mp3 wav都是可以的。