提醒:本文最后更新于 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格式》



我遇到了类似的问题,从微信小程序下载的silk 文件,转换成wav后,听不到声音,全是杂音。是怎么回事
@学习: 所以你这个文件是什么格式的。
@kn007: #!SILK_V3
这是文件头
@学习: 为什么会有副头呢。。。你确定你真仔细看过源码操作过?
去掉#!AMR再试一遍。
代码不清楚是用在干嘛就自己先查一下。
@kn007: 解决了,谢谢大神。
@学习: 不客气。
老哥silk_v3_decoder.exe有转出采样率为16000的吗,跪求~~

我用ffmpeg转成16000的wav时,整个音轨被拉长,声音也被拉长了
(附上我ffmpeg转化时候的参数:./ffmpeg.exe -y -f s16le -ac 1 -ar 16000 -i test.pcm test3.wav)
@求助: 这要看源文件采样啊,源文件是多少就是多少,最后想改变,用ffmpeg输出改变,而不是在输入改变。
@kn007: 搞定~~谢谢您所提供的silk_v3_decoder和您的提醒~~
@求助: 客气了
@求助: 请问你怎么搞定的?我也遇到了转码后识别效果差。源文件来自微信小程序的录音文件,
ffmpeg转化时候的参数:./ffmpeg.exe -y -f s16le -ac 1 -ar 16000 -i test.pcm test3.wav
也是遇到音轨被拉长,声音也被拉长了的问题。
@forever: 加我微信(XPerSpider) 我把我的笔记退给你
您好,我只是个普通的使用者。请问,我在转换时,这样报错怎么办?ffmpeg.exe无法找到入口
无法定位程序输入点GetNumaNodeProcessorMaskEx于动态链接库KERNEL32.dll上。
@转换失败: 你这是在XP吧。换个旧版本上的。
这个问题或许你该问FFMPEG
@kn007: 谢谢!
@转换失败: 不客气
请问我想用代码通过进程直接将.slk(里面为#!AMR开头的)转成.mp3格式。已试过点开silk2mp3.exe手动转换没有问题。用代码调用的话,思路是先用silk_v3_decoder.exe转成RAW,再用lame.exe转成mp3格式。之前也用这个代码试过将.amr(里面为#!SILK_V3开头的)转成.MP3格式,并且已成功。现在碰到的问题是先将其转成RAW文件失败。
@RYANMING: 源文件是silk v3吗
@kn007: 文件名称为c2c_20171021194315471(2).slk,用记事本打开后,里面为#!AMR开头的
@RYANMING: 那就不是Silk v3嘛。AMR直接用ffmpeg转
@kn007: OK,已搞定,谢谢
@RYANMING: 不客气
大佬,我想在java代码里调用你的程序,首先用decoder转成pcm成功了,然后用ffmpeg转成mp3确没反应,也不报错
调用decoder:
String cmd="cmd.exe /c " + "xxxxxxxxx/silk_v3_decoder.exe "+silk+" "+pcm+" -quiet";
调用ffmpeg:
String cmd = "cmd /c "+rootPath+ "xxxxxxx/ffmpeg.exe -y -f s16le -ar 24000 -ac 1 -i "+pcm+" "+mp3;
@xban: 检查下权限,还有直接运行ffmpeg本身是否正常。
@kn007: 直接运行是可以转换成功的,是不是语句拼错了
@xban: 我看命令多了个rootPath指向,如果你放在跟silk_v3_decoder.exe相同目录,去掉看看
@kn007: 检查了路径没问题,应该是命令错了,难道是码率不对?还是说要把采样率和码率都加上?
@xban: 不需要加上,除非你输出了文件,且文件播放是杂音,才需要考虑双边码率问题。silk_decoder默认就是24000频率,无需更改。
@xban: 或者这样,你自己搜一下,看下别人ffmpeg是怎么调用的
@kn007: 真是被这个电脑管家害死,原来是这个东西阻止了ffmpeg的文件修改

转码完成后文件会变大?
@xban: 肯定啊,silk本身就是压缩
@kn007: 谢谢·大佬弄的程序,帮了大忙了
@xban: 不客气,如果是商业目的,有机会可以赞助我下,谢谢!
@xban: 无缘无故的 silk 又不能转pcm了 运行 不报错 就是没反应
微信小程序上传的silk格式文件,转换的时候提示Error: Wrong Header ata:audi,会是什么原因,求解
@s: 麻烦问问题前,先自己搜索一下。
小程序语音不是silk v3,是base64 encode的webm
现在小程序的语音是silk,之前不行是因为用电脑录的音转换不成功,手机录音可以转换了,多谢
@s: 好的,了解,谢谢
你好~目前想把微信录音转成wav格式,调用百度语音识别接口。目前silk->pcm->wav都能转换。但是语音识别那准确率很低。录音播放了也很清晰。百度要求码率是8k和16k。我猜你的silk转pcm的时候码率定成24k了。如何调整为16k呢?希望楼主帮忙解答下~
@forever: 直接运行decoder不是有参数么。
这个问题回答很多次了,带上-Fs_API 16000
而且你想最终文件wav是16k,那么应该改的是ffmpeg
你好,想问下,为什么linux你不做个软件
@求助: 可以用脚本,足够了。