提醒:本文最后更新于 1811 天前,文中所描述的信息可能已发生改变,请仔细核实。
SILK v3编码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器,Skype后来将其开源。具体可见Wikipedia。
但是现在很难找齐源码,或者说懒得找。
一年前寻找的时候,很少看到。今年过年正好要转换QQ的语音信息(去年又是微信的语言信息),就找了下,顺便做成Shell脚本,具体可见Github项目地址:https://github.com/kn007/silk-v3-decoder。
需要gcc和ffmpeg。gcc是拿来编译silk v3 decoder源码,ffmpeg是拿来转换格式的。
调用很简单,只需一句命令:
sh convert.sh 33921FF3774A773BB193B6FD4AD7C33E.slk mp3
其中:“33921FF3774A773BB193B6FD4AD7C33E.slk”是你要转换的源文件(QQ常见为slk,微信常见为amr);后面的“mp3”是你要输出的格式。
首次使用会编译silk v3 decoder,第二次以后就不用了。
其他的没什么。略微改下,利用nginx+lua或直接用python都可以做成在线版本,暂时没什么时间,就先不搞了。反正本地能用就达到目的了。
注:如果你使用了该代码于商业目的,希望你能赞助我,谢谢!
彩蛋,33921FF3774A773BB193B6FD4AD7C33E.slk.mp3,调试时唱的歌(掩面,太难听。。。
那些忽悠帮你们写功能开发,然后不给钱的,已经好几起了。只想说这样搞,我是不会再更新了。
转载请注明转自: kn007的个人博客 的《解码转换QQ微信的SILK v3编码音频为MP3或其他格式》


你好,请问windows下能否使用命令行批量解码呢?谢谢~
@088: 可以,我那github repo有
你好,请问能给这个程序加上高DPI支持吗?谢谢~
麻烦问下作者,windows下 silk2mp3.exe 这个程序可以使用,但是需要点击,是否有命令行的工具?
@jason: 看github。
@kn007: 不好意思,我是从github 过来的。
sh converter.sh silk_v3_file/input_folder output_format/output_folder flag(format)
里面 是针对linux 平台写的吧?
@jason: 里面不是有windows目录,不是有silkv3的exe么,命令行执行就行了。
我从网上下载的一些silk的测试音频文件可以转成功 二进制头是0223 2153 494c 4b5f 5633,但最近开发小程序,下载下来的音频文件用这个工具转失败了二进制头是0023 2153 494c 4b5f 5633。能否告知原因
Version:20160922 Build By kn007 (kn007.net)
Github: https://github.com/kn007/silk-v3-decoder
usage: silk_v3_decoder.exe in.bit out.pcm [settings]
in.bit : Bitstream input to decoder
out.pcm : Speech output from decoder
settings:
-Fs_API : Sampling rate of output signal in Hz; default: 24000
-loss : Simulated packet loss percentage (0-100); default: 0
-quiet : Print out just some basic values
两个参数,in.bit 和 out.pcm 不知道咋玩...
希望的是输入的是 xx.amr,输出的是 xx.mp3.
麻烦博主了
大佬。我再linux下。命令行中直接执行转换的代码是ok的。 但是用在php的shell_exec中就会报错
[0;33m[Warning][0m Convert /www/wwwroot/bns.bdjiayu.cn/data/upload/default/20180920/5ba30f95e450c.silk false, maybe ffmpeg no format handler for wav.
@追风少年: php没有权限调用ffmpeg
@kn007: 大佬,我和上边一样问题,但是我还有问题 为什么我转换silk mp3后mp3 文件一直都是大小 0kb啊?ffmpeg 3.1 是版本太低吗
@兔子: 权限问题
@kn007: 谢谢大佬,但是目前还没解决,不知道如何弄权限。。还有转换文件可以是绝对路径吗?谢谢谢谢。
@兔子: 可以
背景: 我想通过我写的这个Mac App自动将微信的语音转换成Mp3
1. 大佬您好, 我Mac上通过 sh /Users/mustangym/Desktop/silk-v3-decoder-master/converter.sh /Users/mustangym/Desktop/39.aud.silk mp3 这个脚本将微信语音转换成Mp3是成功的. ffmpeg安装也是成功的.
2. 但是我在Mac程序代码中使用NSTask创建任务调用脚本, 就会报错:The return content from shell script is: -e \e[0;33m[Warning]\e[0m Convert /Users/mustangym/Desktop/silk-v3-decoder-master/39.aud.silk false, maybe ffmpeg no format handler for mp3.
3.不知您是否建议看下OC代码, shellScriptPath = @"/Users/mustangym/Desktop/silk-v3-decoder-master/converter.sh";
NSString *audioString = @"/Users/mustangym/Desktop/silk-v3-decoder-master/39.aud.silk";
NSTask *shellTask = [[NSTask alloc]init];
[shellTask setLaunchPath:@"/bin/bash"];
NSString *shellStr = [NSString stringWithFormat:@"sh %@ %@ mp3",shellScriptPath, audioString];
//-c 表示将后面的内容当成shellcode来执行
[shellTask setArguments:[NSArray arrayWithObjects:@"-c", shellStr, nil]];
NSPipe *pipe = [[NSPipe alloc]init];
[shellTask setStandardOutput:pipe];
[shellTask launch];
@晏茂: 检查以下两点:
1.权限,是否能调用ffmpeg
2.环境变量的位置下是否存在ffmpeg的目录
你好我想问下,如何实现MP3转silk呢.不太看得懂silk_V3源码
感谢大佬 找了好久
大神你好,你发的文件我今晚试了下 好像都不能用了呢,特此求救