kn007的个人博客
♥ You are here: Home > 软件与网络 > Autoit3 > Windows下批量转换Silk v3音频文件为MP3格式

Windows下批量转换Silk v3音频文件为MP3格式

by | 515 Comments

提醒:本文最后更新于 2282 天前,文中所描述的信息可能已发生改变,请仔细核实。

0ec17619ec44feb52e238b54c5718796前有《解码转换QQ微信的SILK v3编码音频为MP3或其他格式》和《[进阶]批量解码转换SILK V3编码音频为其他格式》这两篇文章,大概讲述了怎么批量转换Silk v3音频为其他格式,但都是Linux下可用的。

有几个陌生人问如何在Windows使用和转换,还有发邮件给我转换的。有时候不帮忙,又显得有点假清高。想想还是弄个Windows可用的转换程序,直接将Silk v3编码的音频输出为MP3。

正好也很久没用过Autoit写东西了,几个原因凑一起,就弄了个:Github传送门

kn007/silk-v3-decoder[Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch conversion support.

求测试、求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测试通过,可正常使用。

另外求个赞助

最后丢几张图:
20160413145612
20160413145643


MinGW下使用gcc.exe编译出来的可执行文件,跨系统运行可能会报dll丢失。比如提示

无法启动此程序,因为计算机中丢失libgcc_s_dw2-1.dll。尝试重新安装该程序已解决此问题。

或者什么

无法启动此程序,因为计算机中丢失libstdc++-6.dll。尝试重新安装该程序已解决此问题。

等等等等。。。

可以给CFLAGS加个“-static”参数,或者在直接运行gcc.exe编译时,后面带上“-static”参数,来解决这个问题。小坑记录一下。

转载请注明转自: kn007的个人博客 的《Windows下批量转换Silk v3音频文件为MP3格式

donate
有所帮助?

Comments

515 Comments立即评论
  1. 回复

    我遇到了类似的问题,从微信小程序下载的silk 文件,转换成wav后,听不到声音,全是杂音。是怎么回事

    1. MOD回复

      @学习: 所以你这个文件是什么格式的。

    2. 回复

      @kn007: #!SILK_V3
      这是文件头

    3. MOD回复

      @学习: 为什么会有副头呢。。。你确定你真仔细看过源码操作过?
      去掉#!AMR再试一遍。
      代码不清楚是用在干嘛就自己先查一下。

    4. 回复

      @kn007: 解决了,谢谢大神。

    5. MOD回复

      @学习: 不客气。

  2. 回复

    老哥silk_v3_decoder.exe有转出采样率为16000的吗,跪求~~ :cry: :cry:
    我用ffmpeg转成16000的wav时,整个音轨被拉长,声音也被拉长了
    (附上我ffmpeg转化时候的参数:./ffmpeg.exe -y -f s16le -ac 1 -ar 16000 -i test.pcm test3.wav)

    1. MOD回复

      @求助: 这要看源文件采样啊,源文件是多少就是多少,最后想改变,用ffmpeg输出改变,而不是在输入改变。

    2. 回复

      @kn007: 搞定~~谢谢您所提供的silk_v3_decoder和您的提醒~~ :oops:

    3. MOD回复

      @求助: 客气了

    4. 回复

      @求助: 请问你怎么搞定的?我也遇到了转码后识别效果差。源文件来自微信小程序的录音文件,
      ffmpeg转化时候的参数:./ffmpeg.exe -y -f s16le -ac 1 -ar 16000 -i test.pcm test3.wav
      也是遇到音轨被拉长,声音也被拉长了的问题。

    5. 回复

      @forever: 加我微信(XPerSpider) 我把我的笔记退给你

  3. 回复

    您好,我只是个普通的使用者。请问,我在转换时,这样报错怎么办?ffmpeg.exe无法找到入口
    无法定位程序输入点GetNumaNodeProcessorMaskEx于动态链接库KERNEL32.dll上。

    1. MOD回复

      @转换失败: 你这是在XP吧。换个旧版本上的。
      这个问题或许你该问FFMPEG

    2. 回复

      @kn007: 谢谢!

    3. MOD回复

      @转换失败: 不客气

  4. 回复

    请问我想用代码通过进程直接将.slk(里面为#!AMR开头的)转成.mp3格式。已试过点开silk2mp3.exe手动转换没有问题。用代码调用的话,思路是先用silk_v3_decoder.exe转成RAW,再用lame.exe转成mp3格式。之前也用这个代码试过将.amr(里面为#!SILK_V3开头的)转成.MP3格式,并且已成功。现在碰到的问题是先将其转成RAW文件失败。

    1. MOD回复

      @RYANMING: 源文件是silk v3吗

    2. 回复

      @kn007: 文件名称为c2c_20171021194315471(2).slk,用记事本打开后,里面为#!AMR开头的

    3. MOD回复

      @RYANMING: 那就不是Silk v3嘛。AMR直接用ffmpeg转

    4. 回复

      @kn007: OK,已搞定,谢谢

    5. MOD回复

      @RYANMING: 不客气

  5. 回复

    大佬,我想在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;

    1. MOD回复

      @xban: 检查下权限,还有直接运行ffmpeg本身是否正常。

    2. 回复

      @kn007: 直接运行是可以转换成功的,是不是语句拼错了

    3. MOD回复

      @xban: 我看命令多了个rootPath指向,如果你放在跟silk_v3_decoder.exe相同目录,去掉看看

    4. 回复

      @kn007: 检查了路径没问题,应该是命令错了,难道是码率不对?还是说要把采样率和码率都加上?

    5. MOD回复

      @xban: 不需要加上,除非你输出了文件,且文件播放是杂音,才需要考虑双边码率问题。silk_decoder默认就是24000频率,无需更改。

    6. MOD回复

      @xban: 或者这样,你自己搜一下,看下别人ffmpeg是怎么调用的

    7. 回复

      @kn007: 真是被这个电脑管家害死,原来是这个东西阻止了ffmpeg的文件修改 :o :o
      转码完成后文件会变大?

    8. MOD回复

      @xban: 肯定啊,silk本身就是压缩

    9. 回复

      @kn007: 谢谢·大佬弄的程序,帮了大忙了

    10. MOD回复

      @xban: 不客气,如果是商业目的,有机会可以赞助我下,谢谢!

    11. LV1回复

      @xban: 无缘无故的 silk 又不能转pcm了 运行 不报错 就是没反应

  6. 回复

    微信小程序上传的silk格式文件,转换的时候提示Error: Wrong Header ata:audi,会是什么原因,求解

    1. MOD回复

      @s: 麻烦问问题前,先自己搜索一下。
      小程序语音不是silk v3,是base64 encode的webm

  7. 回复

    现在小程序的语音是silk,之前不行是因为用电脑录的音转换不成功,手机录音可以转换了,多谢

    1. MOD回复

      @s: 好的,了解,谢谢

  8. 回复

    你好~目前想把微信录音转成wav格式,调用百度语音识别接口。目前silk->pcm->wav都能转换。但是语音识别那准确率很低。录音播放了也很清晰。百度要求码率是8k和16k。我猜你的silk转pcm的时候码率定成24k了。如何调整为16k呢?希望楼主帮忙解答下~

    1. MOD回复

      @forever: 直接运行decoder不是有参数么。
      这个问题回答很多次了,带上-Fs_API 16000
      而且你想最终文件wav是16k,那么应该改的是ffmpeg

  9. 回复

    :oops: 好用,支持

  10. 回复

    你好,想问下,为什么linux你不做个软件

    1. MOD回复

      @求助: 可以用脚本,足够了。

;-):|:x:twisted::smile::shock::sad::roll::razz::oops::o:mrgreen::lol::idea::grin::evil::cry::cool::arrow::???::?::!: