提醒:本文最后更新于 2282 天前,文中所描述的信息可能已发生改变,请仔细核实。
前有《解码转换QQ微信的SILK v3编码音频为MP3或其他格式》和《[进阶]批量解码转换SILK V3编码音频为其他格式》这两篇文章,大概讲述了怎么批量转换Silk v3音频为其他格式,但都是Linux下可用的。
有几个陌生人问如何在Windows使用和转换,还有发邮件给我转换的。有时候不帮忙,又显得有点假清高。想想还是弄个Windows可用的转换程序,直接将Silk v3编码的音频输出为MP3。
正好也很久没用过Autoit写东西了,几个原因凑一起,就弄了个:Github传送门。
求测试、求Star。Github地址拉到下面有中文说明。
因为是Autoit写的,或许有一些垃圾杀毒软件会报毒。
终止维护声明:
鉴于很多人总是反映说杀毒软件报毒,我已经不想过多解释了,不相信可以不用。
杀毒软件用好点的牌子,像卡巴斯基等这种,能会报毒么?非要相信那些小厂的误报。
既然你没什么判断能力,还是不要用的好,免得万一发生什么,还要怪到我这。
求你们别用,好吧。
文件下载地址:
文件: silk2mp3.zip
大小: 922254 字节
修改时间: 2020年1月23日, 10:02:56
MD5: 9A156B8D81B87926580D3C7EF1C02DC3
SHA1: ED672C2C231773547AE9CCECCF043819304CFE44
CRC32: E20CD19F文件: silk2mp3-expansion.zip
大小: 14900840 字节
修改时间: 2019年2月14日, 23:34:07
MD5: 61E3970456682947D0A57B9505161790
SHA1: 37D98991301811564C5871A208E7F3E8D5F4B231
CRC32: 7A40E4AB文件: silk2mp3-full.zip
大小: 15501268 字节
修改时间: 2020年1月23日, 10:03:58
MD5: 903FB6779BE5F6C821591520B1594E52
SHA1: 607C269B4CD6C9802F063926478825A71C319F44
CRC32: 225F412E更新历史:
2020-01-23发布1.0.3.3版本:
修复上一版本打包方式导致的win10以下系统不可用问题。2020-01-04发布1.0.3.2版本:
重新打包程序。2019-06-17发布1.0.3.1版本:
重新打包程序。2019-06-17发布1.0.3.0版本:
迫于微软MSE压力,重新打包程序。2019-05-24发布1.0.2.9版本:
迫于Google压力,重新打包程序。2019-03-30发布1.0.2.8版本:
重新打包程序。2019-02-19发布1.0.2.7版本:
修复上一版本一大失误(列表无法显示)。2019-02-14发布1.0.2.6版本:
重新打包程序。2017-09-01发布1.0.2.5版本:
优化代码。2017-08-22发布1.0.2.4版本:
修复一些Bug。2017-08-22发布1.0.2.3版本:
1.修复一些Bug。
2.去掉拖拽功能。2017-08-19发布1.0.2.2版本:
修复一些Bug。2017-06-28发布1.0.2.1版本:
支持拖拽文件进列表框替换待转换文件列表。2017-05-28发布1.0.2.0版本:
1.“尝试强制AMR编码解码文件”变为可选项。
2.支持微信小程序语音转换(包括编码、解码)。
3.修复一些Bug。2017-02-19发布1.0.1.2版本:
强制输出固定频率和最大化比特率(主要针对MP3)。2016-11-03发布1.0.1.1版本:
1. 添加编码输出格式自定义。
2. 修复一些Bug。2016-09-30发布1.0.1.0版本:
1. 修复缺失AMR头无法转换问题。(但也带来一定量的误转换)
2. 新增关于页。
3. 修复一些Bug。2016-09-22发布1.0.0.6版本:
1.修复编码后,微信播放完,会有杂音。
2.新增输出格式自定义。(请勿随意修改,除非你确信是对的)
3.修复一些Bug。2016-07-27发布1.0.0.5版本:
1.最小加载模式。(Silk V3 Encoder和FFmpeg,需要下载Expansion包)
2.当发现程序目录下存在FFmpeg时,启用专业模式。(优先使用FFmpeg,不存在时使用LAME)2016-06-15发布1.0.0.4版本:
1.添加语言支持,新增繁体中文支持。
2.修复一些Bug。2016-06-01发布1.0.0.3版本:
1.支持转换音频文件为Silk v3编码。
2.修复一些Bug。2016-04-29发布1.0.0.2版本:
隐藏转换时弹出的命令行窗口。2016-04-13发布1.0.0.1版本:
1.添加语言支持,新增英文支持。
2.Fix Some Bugs.2016-04-12发布1.0.0.0版本:
第一个版本,由Autoit3编译而成。
压缩包内部文件一览:
文件: ffmpeg.exe 大小: 36560896 字节 MD5: 170913E96730ED552392D9C06023515D SHA1: 41B42AB46A83FBD82B62233CF9F52C950F0C05FD CRC32: 05C8F349 文件: lame.exe 大小: 653312 字节 文件版本: 3.99 release 5 MD5: 17728C0F48D30E3770ACF6F3FEA3B184 SHA1: 1848CDC71F583B34147AF2D1009F4F9CE19D77D3 CRC32: 3B8F45D9 文件: silk2mp3.exe 大小: 660008 字节 文件版本: 1.0.3.3 MD5: 5956F1AD437FD25F81BD31665F8FA1B6 SHA1: A17C48766B71667D9EB9795EAC11E245D69665BC CRC32: 7D42B4D1 文件: silk_v3_decoder.exe 大小: 179037 字节 MD5: BB0B72D969293E5D41A3DA6E25B62D1B SHA1: 22DE4AF082C8AB57C611950264708668CD0815BE CRC32: EF6BE0F4 文件: silk_v3_encoder.exe 大小: 318514 字节 MD5: 4F253BC1185DA46A18D0CC5EAA146E35 SHA1: AD6250C5CA6ED0A1CB805D1A6F53F421F67A2ED7 CRC32: 6444593C
其中lame.exe是一款不错的MP3编码器,主程序就是通过它将RAW音频编码为MP3;
而ffmpeg.exe是一款更强大的编码解码器,一些LAME做不到的事情,可以交由FFmpeg来做;
silk_v3_decoder.exe是我用MinGW编译Skype Silk Codec而成的,可解码Silk v3音频为RAW;
silk_v3_encoder.exe是我用MinGW编译Skype Silk Codec而成的,可编码RAW音频为Silk v3;
silk2mp3.exe是我用Autoit3写的主程序,负责调用silk_v3_decoder.exe、silk_v3_encoder.exe和lame.exe来批量转换文件。
程序在Windows XP/7/10测试通过,可正常使用。
另外求个赞助。
MinGW下使用gcc.exe编译出来的可执行文件,跨系统运行可能会报dll丢失。比如提示
无法启动此程序,因为计算机中丢失libgcc_s_dw2-1.dll。尝试重新安装该程序已解决此问题。
或者什么
无法启动此程序,因为计算机中丢失libstdc++-6.dll。尝试重新安装该程序已解决此问题。
等等等等。。。
可以给CFLAGS加个“-static”参数,或者在直接运行gcc.exe编译时,后面带上“-static”参数,来解决这个问题。小坑记录一下。
转载请注明转自: kn007的个人博客 的《Windows下批量转换Silk v3音频文件为MP3格式》



解决大问题了,谢谢分享。
求代码开源...
github上没看到autoit代码,调用decoder和lame使用的参数都是啥啊,我参考converter.sh里的参数直接调用lame感觉声音总是差点儿意思不对。参数能公布下么
博主你好,我分别试了下windows和linux下的转换,这两个平台下转换出来的mp3文件大小相差不少,这个是什么原因呢?
@test: 因为MP3的压缩码率不一样。
@kn007: 多谢提醒,去看了下,确实是windows下的码率高(在60kbps左右)。Linux下只有33kbps左右,linux下修改哪个参数才能提高码率呢?
@test: 参照ffmpeg参数自行修改
@kn007: 多谢,尝试修改那个converter.sh,在调用ffmpeg的地方增加了-acodec libmp3lame -b:a 128k,但是转换silk v3 QQ语音时失败,提示Convert 005YN_1}B8X[4{CFW3@[)AM.amr false, maybe ffmpeg no format handler for mp3. AMR格式的倒是能转换成功,但是其码率固定为8kbps
@test: Try:
-acodec libmp3lame -ab 128k
AMR同理,自行试试
@kn007: -acodec libmp3lame -ab 128k跟-acodec libmp3lame -b:a 128k效果是一样的,都转换失败,提示信息也是Convert 005YN_1}B8X[4{CFW3@[)AM.amr false, maybe ffmpeg no format handler for mp3
@test: 你肯定是改错了吧。。。
@kn007: 应该没有改错,我修改后的是这样的: ffmpeg -y -f s16le -acodec libmp3lame -ab 128k -ar 24000 -ac 1 -i "$2/$line.pcm" "$2/${line%.*}.$3" > /dev/null 2>&1 &
@test: 这还没改错。。。我服了你。
> ffmpeg -y -f s16le -ar 24000 -ac 1 -i 4a59fcc0b0a5b0f1869d01ae82f4bd83.pcm -acodec libmp3lame -ab 320k 4a59fcc0b0a5b0f1869d01ae82f4bd83_test.mp3
自己再重新试试吧。
@kn007: 多谢,原来是加到这个位置,以为只要加上去就可以了,我理解错了
@test: 不客气。
参数位置很重要的。
@test: 我试了没问题。貌似最高只能到160k。
@test: 在所有ffmpeg条目中,最后一个参数之前,添加-acodec libmp3lame -ab 128k
@test: 还有根本就没有b:a这个参数。。
Unrecognized option 'b:a'
真不知道你哪里抄的。。
@kn007: 是-b:a,这个我试了也是可以的
@test: 。。。我知道,我只能说我的版本根本没这个参数。
linux与windows的版本还有一个差异,有些QQ的语音Windows下提示转换失败,也不会转换,但是linux下虽然提示“Convert xxx false, maybe not a silk v3 encoded file”,但还是转换成mp3格式了,但是只有8kpbs的码率。出现这个差异是因为这部分语音不是silk v3编码格式?另这个转换的码率有点低啊
@test: 第一个问题,windows用的是lame,支持的格式比较少,也不想麻烦,所以仅支持转换silk v3编码的音频。
第二个问题,参照ffmpeg自行修改。
@test: windows下因为采用了LAME,比较迷你,并不支持AMR格式,所以无法转换非silk v3的音频,而linux采用了ffmpeg就没问题。
windows下也可以使用ffmpeg,但是要30+M最少,一般人可能并不乐意下载这么大的转换程序。
请问博主啊,windows版本的如果想在命令行里面指定输入输出文件直接转码,参数改怎么写呢?需要在java程序里面集成这个工具,在守护进程里面进行转码。
@Jessie: github有命令行exe,你可以用cmd访问,可以得出使用命令。或者直接看github的C,里面命令也比较清楚。
大概的就是:
usage: decoder.exe in.bit out.pcm [settings]
in.bit : Bitstream input to decoder : Sampling rate of output signal in Hz; default: 24000 : Simulated packet loss percentage (0-100); default: 0
out.pcm : Speech output from decoder
settings:
-Fs_API
-loss
-quiet : Print out just some basic values
===================================================================
usage: silk_v3_encoder.exe in.pcm out.bit [settings]
in.pcm : Speech input to encoder : API sampling rate in Hz, default: 24000 : Maximum internal sampling rate in Hz, default: 24000 : Packet interval in ms, default: 20 : Target bitrate; default: 25000 : Uplink loss estimate, in percent (0-100); default: 0 : Enable inband FEC usage (0/1); default: 0 : Set complexity, 0: low, 1: medium, 2: high; default: 2 : Enable DTX (0/1); default: 0
out.bit : Bitstream output from encoder
settings:
-Fs_API
-Fs_maxInternal
-packetlength
-rate
-loss
-inbandFEC
-complexity
-DTX
-quiet : Print only some basic values
@kn007: 非常感谢博主回复!windows文件夹下面的试过silk_v3_decoder input.amr output.pcm, 是从amr转到pcm格式,然后用lame.exe转mp3时,要求input是wma格式的,output.pcm用不了。博主的silk2mp3.exe怎样操作才能接收 input.amr output.mp3这样的参数啊?
@Jessie: 你要明白silk decoder是没办法直接转成mp3的。
silk2mp3是autoit写的程序,并不带参数支持。
decoder是将silk转成pcm,而encoder是将pcm转成silk
首先你需要借助类似lame、ffmpeg将非silk转成pcm(想转为其它格式),或者将非silk、pcm转成pcm(想转为silk)才可转换。
@kn007: 找到方法了,非常感谢博主
用了两条命令:
silk_v3_decoder.exe input.amr output.pcm
lame -r -s 24000 input.pcm output.mp3
@Jessie: 嗯,好的,不客气。谢谢支持。
博主,我试了下无法转换微信的AMR文件,提示非Silk v3编码,冒昧问下这个是什么情况呢?
@loke: 非Silk v3编码,说明你那个是AMR编码或其他编码,这个你可以随便找个支持AMR就可以转了。
因为支持AMR解码,我需要使用ffmpeg,ffmpeg要30多M,对于很多人来说太大了,所以就没支持进去。
windows版本,状态栏写的很清楚了,仅支持silk v3解码
@kn007: 多谢,直接用ffmpeg搞定了,因为要直接搞在线转换,查来查去搞糊涂了,没先试下。。。
@loke: 嗯,linux下,直接用我github的脚本就行,所有功能都支持。。win比较麻烦。
@loke: 最新版本,可以使用ffmpeg转换了,需要下载Expansion包,详见本帖。
建议直接下载full包。
您好!您写的东西我看不懂,但是我想将微信中的*.amr文件转换成其他可用格式,请问我应该如何操作?(win 7系统。)最好给出具体的命令。非常感谢!
@花鼓: 直接用软件不需要命令。注意只能转换silk v3编码。迟点我做个兼容ffmpeg的,就什么都可以转了。
@花鼓: 已发布,你可以在本帖查看最新版本。
请下载silk2mp3和silk2mp3-expansion包,并将文件放在同一目录下。怕麻烦建议直接下载完整包。
期待能批量转换微信amr文件的windows版本。谢谢!
@amr: 下一版本,可能会晚点,最近太忙了。
@amr: 已发布,你可以在本帖查看最新版本。
请下载silk2mp3和silk2mp3-expansion包。建议直接下载full包。
膜拜大神~

@夜枫:
不敢不敢