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. 回复

    解决大问题了,谢谢分享。

  2. 回复

    求代码开源...

  3. 回复

    github上没看到autoit代码,调用decoder和lame使用的参数都是啥啊,我参考converter.sh里的参数直接调用lame感觉声音总是差点儿意思不对。参数能公布下么

  4. 回复

    博主你好,我分别试了下windows和linux下的转换,这两个平台下转换出来的mp3文件大小相差不少,这个是什么原因呢?

    1. MOD回复

      @test: 因为MP3的压缩码率不一样。

    2. 回复

      @kn007: 多谢提醒,去看了下,确实是windows下的码率高(在60kbps左右)。Linux下只有33kbps左右,linux下修改哪个参数才能提高码率呢?

    3. MOD回复

      @test: 参照ffmpeg参数自行修改

    4. 回复

      @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

    5. MOD回复

      @test: Try:
      -acodec libmp3lame -ab 128k
      AMR同理,自行试试

    6. 回复

      @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

    7. MOD回复

      @test: 你肯定是改错了吧。。。

    8. 回复

      @kn007: 应该没有改错,我修改后的是这样的: ffmpeg -y -f s16le -acodec libmp3lame -ab 128k -ar 24000 -ac 1 -i "$2/$line.pcm" "$2/${line%.*}.$3" > /dev/null 2>&1 &

    9. MOD回复

      @test: 这还没改错。。。我服了你。

      > ffmpeg -y -f s16le -ar 24000 -ac 1 -i 4a59fcc0b0a5b0f1869d01ae82f4bd83.pcm -acodec libmp3lame -ab 320k 4a59fcc0b0a5b0f1869d01ae82f4bd83_test.mp3

      自己再重新试试吧。

    10. 回复

      @kn007: 多谢,原来是加到这个位置,以为只要加上去就可以了,我理解错了

    11. MOD回复

      @test: 不客气。
      参数位置很重要的。

    12. MOD回复

      @test: 我试了没问题。貌似最高只能到160k。

    13. MOD回复

      @test: 在所有ffmpeg条目中,最后一个参数之前,添加-acodec libmp3lame -ab 128k

    14. MOD回复

      @test: 还有根本就没有b:a这个参数。。
      Unrecognized option 'b:a'

      真不知道你哪里抄的。。

    15. 回复

      @kn007: 是-b:a,这个我试了也是可以的

    16. MOD回复

      @test: 。。。我知道,我只能说我的版本根本没这个参数。

  5. 回复

    linux与windows的版本还有一个差异,有些QQ的语音Windows下提示转换失败,也不会转换,但是linux下虽然提示“Convert xxx false, maybe not a silk v3 encoded file”,但还是转换成mp3格式了,但是只有8kpbs的码率。出现这个差异是因为这部分语音不是silk v3编码格式?另这个转换的码率有点低啊

    1. MOD回复

      @test: 第一个问题,windows用的是lame,支持的格式比较少,也不想麻烦,所以仅支持转换silk v3编码的音频。
      第二个问题,参照ffmpeg自行修改。

    2. MOD回复

      @test: windows下因为采用了LAME,比较迷你,并不支持AMR格式,所以无法转换非silk v3的音频,而linux采用了ffmpeg就没问题。
      windows下也可以使用ffmpeg,但是要30+M最少,一般人可能并不乐意下载这么大的转换程序。

  6. 回复

    请问博主啊,windows版本的如果想在命令行里面指定输入输出文件直接转码,参数改怎么写呢?需要在java程序里面集成这个工具,在守护进程里面进行转码。

    1. MOD回复

      @Jessie: github有命令行exe,你可以用cmd访问,可以得出使用命令。或者直接看github的C,里面命令也比较清楚。

      大概的就是:
      usage: 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

      ===================================================================

      usage: silk_v3_encoder.exe in.pcm out.bit [settings]

      in.pcm : Speech input to encoder
      out.bit : Bitstream output from encoder
      settings:
      -Fs_API : API sampling rate in Hz, default: 24000
      -Fs_maxInternal
      : Maximum internal sampling rate in Hz, default: 24000
      -packetlength : Packet interval in ms, default: 20
      -rate : Target bitrate; default: 25000
      -loss : Uplink loss estimate, in percent (0-100); default: 0
      -inbandFEC : Enable inband FEC usage (0/1); default: 0
      -complexity : Set complexity, 0: low, 1: medium, 2: high; default: 2
      -DTX : Enable DTX (0/1); default: 0
      -quiet : Print only some basic values

    2. 回复

      @kn007: 非常感谢博主回复!windows文件夹下面的试过silk_v3_decoder input.amr output.pcm, 是从amr转到pcm格式,然后用lame.exe转mp3时,要求input是wma格式的,output.pcm用不了。博主的silk2mp3.exe怎样操作才能接收 input.amr output.mp3这样的参数啊?

    3. MOD回复

      @Jessie: 你要明白silk decoder是没办法直接转成mp3的。

      silk2mp3是autoit写的程序,并不带参数支持。

      decoder是将silk转成pcm,而encoder是将pcm转成silk

      首先你需要借助类似lame、ffmpeg将非silk转成pcm(想转为其它格式),或者将非silk、pcm转成pcm(想转为silk)才可转换。

    4. 回复

      @kn007: 找到方法了,非常感谢博主 :razz: :idea: 用了两条命令:
      silk_v3_decoder.exe input.amr output.pcm
      lame -r -s 24000 input.pcm output.mp3

    5. MOD回复

      @Jessie: 嗯,好的,不客气。谢谢支持。

  7. 回复

    博主,我试了下无法转换微信的AMR文件,提示非Silk v3编码,冒昧问下这个是什么情况呢?

    1. MOD回复

      @loke: 非Silk v3编码,说明你那个是AMR编码或其他编码,这个你可以随便找个支持AMR就可以转了。
      因为支持AMR解码,我需要使用ffmpeg,ffmpeg要30多M,对于很多人来说太大了,所以就没支持进去。
      windows版本,状态栏写的很清楚了,仅支持silk v3解码

    2. 回复

      @kn007: 多谢,直接用ffmpeg搞定了,因为要直接搞在线转换,查来查去搞糊涂了,没先试下。。。

    3. MOD回复

      @loke: 嗯,linux下,直接用我github的脚本就行,所有功能都支持。。win比较麻烦。

    4. MOD回复

      @loke: 最新版本,可以使用ffmpeg转换了,需要下载Expansion包,详见本帖。
      建议直接下载full包。

  8. 回复

    您好!您写的东西我看不懂,但是我想将微信中的*.amr文件转换成其他可用格式,请问我应该如何操作?(win 7系统。)最好给出具体的命令。非常感谢!

    1. MOD回复

      @花鼓: 直接用软件不需要命令。注意只能转换silk v3编码。迟点我做个兼容ffmpeg的,就什么都可以转了。

    2. MOD回复

      @花鼓: 已发布,你可以在本帖查看最新版本。
      请下载silk2mp3和silk2mp3-expansion包,并将文件放在同一目录下。怕麻烦建议直接下载完整包。

  9. 回复

    期待能批量转换微信amr文件的windows版本。谢谢!

    1. MOD回复

      @amr: 下一版本,可能会晚点,最近太忙了。

    2. MOD回复

      @amr: 已发布,你可以在本帖查看最新版本。
      请下载silk2mp3和silk2mp3-expansion包。建议直接下载full包。

  10. 膜拜大神~ :idea: :idea: :idea:

    1. MOD回复

      @夜枫: :oops: :oops: :oops: 不敢不敢

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