提醒:本文最后更新于 3206 天前,文中所描述的信息可能已发生改变,请仔细核实。
Silk2MP3的作用主要是在Windows下批量转换Silk v3音频文件为其他格式(不单是MP3),也可以反向编码音频文件为Silk v3音频文件。支持兼容微信、QQ(常见后缀有slk、silk、aud、amr)。
目前最新发布的版本详见:Silk2MP3。
1.0.2.4版本,支持转换微信小程序语音,包括编码、解码。免费。
在1.0.1.0版本中,主要解决以下问题:
1.修复编码后,微信播放完,会有杂音。
2.修复无法转换缺失AMR头部的音频文件。
3.新增输出格式自定义。
4.修复一些Bug和一些逻辑错误。
比较重要的应该是第1点吧,发现有许多人用于把音频转成微信可读的语音信息在微信发送(偏商业目的,大部分利用了微信的API)。虽然本软件是免费,但是若你因此盈利,希望能赞助下博主。
本来这一版本号应为1.0.0.7,但因为重写了部分逻辑,且测试多次没有问题。
经过这一次比较大的修正,遂跳过编译版本号,直接自增修正版本号。所以版本号为1.0.1.0。
如无特大问题,不会再更新,望请周知。
项目Github传送门,拉到下面有中文说明。程序下载地址、Hash值、更新历史详见之前文章。
该程序由Autoit3编写,可能会被杀软误报,请自行鉴别。
居然还有人找我要Sublime Text 3 3126注册码,license key的。
不知道你怎么看出来我在用的。。话说找license的直接百度谷歌不就行了,居然伸手党伸到这来了,我也是醉了。有能力的情况下,请支持正版,非常感谢。
转载请注明转自: kn007的个人博客 的《更新了Silk2MP3》




我用silk_v3_decoder成功将silk 解码,然后用ffmpeg.exe -i 转换失败,怎么回事?我是要将微信里的silk转换成mp3,是不是先用silk_v3_decoder解码,然后再转换,可以提示转换失败
@小宏: 什么意思?
decoder 先转换为pcm嘛
然后ffmpeg再转成mp3嘛。
ffmpeg需要什么参数,github的代码不是写的很清楚么。
@小宏: 兄弟网站可以的。
@kn007: 加个QQ呗,57190086
@小宏: 加QQ就算了吧。代码在Github都有。
有什么问题在这里说就行了
@kn007: 15KB的silk文件解码后变成360KB,然后用ffmpeg就出错了
@小宏: silk本来就是极度压缩的格式。PCM本来就是类似WAV,无损格式大是正常的。
ffmpeg出错,提示什么?你先确认参数是不是正确的,参数错是无法正常转换的。
如果你不介意,也可以发过来,我转了给你。
@kn007: 好啊,我没做程序,我直接用cmd进行本机转换,我把文件和代码发给你,怎么发?给个邮箱?
@小宏: F:\Desktop\silk-v3-decoder-master\windows\silk_v3_decoder.exe F:\Desktop\silk-v3-decoder-master\windows\636207651651815576.silk F:\Desktop\silk-v3-decoder-master\windows\636207651651815576_.pcm
F:\Desktop\silk-v3-decoder-master\windows\ffmpeg.exe -i F:\Desktop\silk-v3-decoder-master\windows\636207651651815576_.pcm F:\Desktop\silk-v3-decoder-master\windows\636207651651815576_.mp3
@小宏: 你这明显参数不对,哥们。
看下github好吧。。。。你这样只是浪费你自己的时间。
ffmpeg -y -f s16le -ar 24000 -ac 1 -i 源文件 目标文件
参数,参数。多留点心。
@kn007: Estimating duration from bitrate, this may be inaccurate
Guessed Channel Layout for Input Stream #0.0 : mono
已经成功输出mp3了,但是这个警告是什么 意思?
@小宏: 我的理解是语音文件有多通道,它选择了一条。
我记得有三种通道类型吧,通过channel_layout可以选。
不过没选过,以前语言没出现过这个。能正常就行了。
@kn007: 好的,谢谢你

@小宏: 不客气
首先感谢分享!想请教下,我在cmd下执行:
silk_v3_decoder.exe 3.amr 3t.pcm 8000
提示Error: unrecognized setting: 8000
是不支持8000的采样率,还是我setting的方式写错了?试过 -8000也不对,16000也不对...
感谢!
@拜特瑞斯: ...你可以看下说明的。。
-Fs_API 8000
@kn007: 好使了,多谢...
我傻了,我看说明里写-Fs_API,然后我就写的-Fs_API...一看不对,然后又看default:24000,我心想,应该是直接写数字的意思吧,于是...哈哈
@拜特瑞斯: 因为默认是24000要说明出来。所以那样写了
@kn007: 非常感谢,这个应用我的确用于商业项目了。在此特别呼吁用于商业项目的网友自觉捐赠。金额不在多少,希望中国的互联网精神继续下去。再次感谢。
@拜特瑞斯: 非常感谢你的赞助!
也谢谢你这番话。
@拜特瑞斯: 问下linux sh那怎么改,24->16k
@reading: 看程序参数,有说明。
才发现有Silk v3这么个东西 。看样子是decode之后再调用 lame编码成mp3吧?
@荒野無燈: 嗯,主要是decoder,我都已经调试好,发出来源码
闪电健身mini小程序用到你的程序编码的silk文件,谢谢你的工作。
估计一大波开发小程序的作者正在赶来...
@fabware: 哈,感谢赞助,已添加在特别鸣谢。
有很多表达谢意的朋友,也有顺带捐助的小伙伴,无论如何都非常感谢。
每一笔捐款,我都会在特别鸣谢注明。谢谢大家。
@fabware: 话说,兄弟。。你们公司名是真的吗!?

卖个萌科技(深圳)有限公司
@fabware: 还真有,我查到了。。。
可以的,很强势!
@kn007: 现在的版本用的网络地址播放语音,体验真差。
现在的版本正在改为用slk文件,下周应该可以上线,很期待新版本。
报error wrong Header ata :audi错 什么意思?
@小马: 自己用记事本打开就知道了。你这是小程序的吧。
decoder 先转换为pcm就失败了,是微信silk升级了解不了了吗
@小马: 小程序有不同的加密方式,微信提取的仍然是一样的。
@kn007: fs.readFile("../uploads/files/e358efa489f58062f10dd7316b65649e19634727.silk",'utf8',function(err,data){
console.log(data);
var bitmap = new Buffer(data, 'base64');
fs.writeFileSync("../uploads/files/sdasdasdas.txt",bitmap);
})
我把小程序base64解码,然后生成.slik 然后再用ffmpeg转吗
@小马: 对,直接-i进ffmpeg,但最好你看下是哪种加密方式的文件
@小马: win新版本已经支持微信小程序语音转换。
@kn007: 卧槽,那有什么解决办法吗
请问目前微信小程序录音生成的silk文件不能转MP3了吗?使用silk2mp3-full工具1.0.1.2版本进行转换时,提示“转换失败,转换为MP3失败”
@尼古拉屎: 看前人的回复。
小程序的需要先base64解码后,ffmpeg再转,解码后有几种格式,有些格式ffmpeg要最新版本才能转得了。
@尼古拉屎: 已经成功转化成MP3了 大小差不多但是不能播放,这是为什么?
@小马: 不能正常播放,指杂音?还是无法播放?
@kn007: 不能播放
@尼古拉屎: win新版本已经支持微信小程序语音转换。
@kn007 有人成功将小程序中的录音的silk(用base64加密)文件,转码为mp3的吗?我已经折腾了几天了,还是没弄出来
@Sam: 非常多的人啊。
非常简单的步骤,解码,转换。
@Sam: data:audio/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwH/////////FUmpZpkq17GDD0JATYCGQ2hyb21lV0GGQ2hyb21lFlSua7uuudeBAXPFhxo7Fn1LKNmDgQKGhkFfT1BVU2Oik09wdXNIZWFkAQEAAIC7AAAAAADhibWERzuAAJ+BAR9DtnUB/////////+eBAKNBo4EAAID7g8Zqf5jD27T9LWWa0IOzORAYdYr3LzQyx93aRxr97xQIrFiYztEanCX7bw8Dz2v9zPyrywNz7Gc9Ma7fVCSn4+Gj29LZOiIcj8NJ9iPA9y3GMUuCHNMbVVexmE088FUJjerJyigpXONECVL1pWgREYOnbQQtCde0EPLHikyVJWP+rQgY7mWwLMRr5QFkCCQJbT6pZMEM/nr9HUXVjC/4tjeu7jXL2z+aVYf
微信silk是这种格式,直接解base64,要不要把data:audio/webm;base64,头去掉再解码生成mp3是大小0k,但是不去掉生成mp3无法播放,这是什么原因
@小马: 。。。这不是很清楚的格式吗。。。
先base64解码,然后用支持webm编码的解码器解码,转换为mp3
@小马: 你的问题搞定了吗?
@Sam: win新版本已经支持微信小程序语音转换。
@kn007: 为什么新版本的silk_v3_decoder.exe执行时将silk转pcm还是会报错呢,但是silk2mp3已经可以转换小程序的录音了啊
@zby: 因为小程序语音不是silk v3啊,自然silk v3 decoder就不能解码啊。
至于win为什么可以,看新文章有说。
https://kn007.net/topics/2017-june-talk-about-recently/
sh silk-v3-decoder-master/converter.sh song/msg_131941f6283106.amr mp3
[Warning] Convert song/msg_131941f6283106.amr false, maybe not a silk v3 encoded file.
在centos6.5下执行的,帮分析下是什么问题导致的?
@lorin: 首先,你这个文件是从手Q或手机微信提取出来的吗?
是,那么提供下文件头来看看。
否,那文件可能不是silk v3编码,自然就转换不了。
比如小程序并不是silk v3,大多数是webm编码后,用base64编码。
@kn007: 我遇到和他一样的问题,文件头是#!SILK_V3 ,Debian8.0,gcc 4.9.2的,记事本打开并不是base64那种编码的格式
@aimuz: 他是小程序语音啊,你用win能转换吗?

我发现现在用linux的人挺多的啊
@kn007: 我的也是小程序,
,但是用记事本打开看到的并不是那种base64编码的形式,win可以转换的
linux用做服务器要多一点。 
@aimuz: 服务器。。如果商业目的,希望能赞助一下。
一般来说是没问题的,如果你确信看到silk头,你重新clone github后,第一次转换的时候,你看编译有没有报错
@kn007: 第一次就是提示没有gcc好像,然后我就安装了一下gcc,可以运行,但是一种这种错误-e [Warning] Convert uploads/594bc90657d7e.wx-file.silk false, maybe not a silk v3 encoded file. 在里面看到了#!SILK_V3

@aimuz: 你现在有gcc了,重新git clone一下,转换试试
@kn007: 好了,谢谢大佬。

@aimuz: 小程序现在还有silk v3的少见了,一开始全部都是
@kn007: 那现在小程序的格式都不固定的吗

@aimuz: 基本是base64的
@kn007: 那这么说。微信好坑啊

@lorin: win新版本已经支持微信小程序语音转换。
@kn007: 对于音频编码这块不太了解,最近公司做小程序需要把微信小程序录音的silk文件转码为mp3或wav,因为不需要做高保真,所以只要普通PC播放器支持就可以了,而且尝试用了Git上提供的sh文件进行转码,结果提示“Convert output/10020170419153432671.silk false, maybe not a silk v3 encoded file”,按照你的思路,那么微信提供的silk文件压根就不是silk v3,那么linux下这个转码过程要如何实现?win版本试过可以进行转码,可以提供一下思路么,exe文件看不到实现过程。
@leven: 微信小程序的语音问题,我已经重复了无数遍了,在我博客和邮件里。
base64解码后,支持webm的解码器都可以直接解码。
@kn007:
好的,谢谢
@kn007:
转码问题已解决,特此感谢无私分享
音频转码这块对于我来说是个技术盲区,花了些时间了解,再次感谢~
@leven: 不客气
刚试着把mp3转换到silk,语速都变慢了。。画风突然转变。。
@MeeSii: 说明不是标准频率的silk,软件默认转换频率为24000。
你可以编译decoder后,加上参数指定频率
@MeeSii: 求使用方法