kn007的个人博客
♥ You are here: Home > 点滴记录 > 解码转换QQ微信的SILK v3编码音频为MP3或其他格式

解码转换QQ微信的SILK v3编码音频为MP3或其他格式

by | 468 Comments

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

skype-silk-v3

SILK v3编码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器,Skype后来将其开源。具体可见Wikipedia

但是现在很难找齐源码,或者说懒得找。

一年前寻找的时候,很少看到。今年过年正好要转换QQ的语音信息(去年又是微信的语言信息),就找了下,顺便做成Shell脚本,具体可见Github项目地址:https://github.com/kn007/silk-v3-decoder

需要gcc和ffmpeg。gcc是拿来编译silk v3 decoder源码,ffmpeg是拿来转换格式的。

调用很简单,只需一句命令:

sh convert.sh 33921FF3774A773BB193B6FD4AD7C33E.slk mp3

其中:“33921FF3774A773BB193B6FD4AD7C33E.slk”是你要转换的源文件(QQ常见为slk,微信常见为amr);后面的“mp3”是你要输出的格式。

首次使用会编译silk v3 decoder,第二次以后就不用了。

其他的没什么。略微改下,利用nginx+lua或直接用python都可以做成在线版本,暂时没什么时间,就先不搞了。反正本地能用就达到目的了。

注:如果你使用了该代码于商业目的,希望你能赞助我,谢谢!

彩蛋,33921FF3774A773BB193B6FD4AD7C33E.slk.mp3,调试时唱的歌(掩面,太难听。。。


那些忽悠帮你们写功能开发,然后不给钱的,已经好几起了。只想说这样搞,我是不会再更新了。

转载请注明转自: kn007的个人博客 的《解码转换QQ微信的SILK v3编码音频为MP3或其他格式

donate
有所帮助?
Tags: , ,
Comments
468 Comments立即评论
  1. 回复

    我现在需要使用silk_v3_encoder.exe,将pcm转换成silk格式,可是我现在没法生成前面的pcm文件,使用ffmpeg -i input.mp3 -f s16le -ar 44100 -acodec pcm_s16le output.pcm 生成的pcm,转换成silk格式存在问题,还望得到楼主的回复,谢谢。 :smile:

    1. MOD回复

      @裸奔的蜗牛: 已在issue回复你了,频率错了,是24000。
      程序说明有说到24000。

  2. LV1回复

    你好,想问下这个程序只能在Windows下转换是么?

    1. MOD回复

      @瑞仔: 看源码,其他平台编译后可用

    2. LV1回复

      @kn007: 谢谢 :smile:

    3. MOD回复

      @瑞哥: 不客气

  3. 回复

    Windows下 可以用dos命令来处理 吗 ? ;-) ;-)

    1. MOD回复

      @宝: 可以的,自己看下命令行参数

    2. 回复

      @kn007: 找到了 ! 谢谢 :cry: :cry:

  4. 回复

    小程序 录音 的*.silk 文件 执行命令 false, maybe not a silk v3 encoded file. 直接用软件转化也是显示不是 silk v3 格式的。。。微信又进化了。。。

    1. LV1回复

      @宝: 我现在也遇到了这个问题,请问你解决了么?

    2. 回复

      @瑞仔: 没 ,,如果真是微信换 编码格式了 我这样的弱鸡 肯定搞不定 只能等待大神

    3. 回复

      @宝: 我碰到跟你一样的问题了,windows下用软件转化单个文件时报指定文件不是silk v3格式 :!:

    4. 回复

      @宝: 小程序的silk文件用base64加密了,需要解码
      744600969可以交流下,注名 silk

    5. 回复

      @宝: 遇到同样的问题,将 base64解码后,再用converter 出错,你们后面解决了吗

    6. MOD回复

      @Sam: 。。我都说了,人家已经不是silk v3编码了。
      base64后,直接用ffmpeg转。

  5. LV1回复

    我的是在Windows上用软件转换是可以成功的,在linux上转换就会显示[Warning] Convert ../58b6704b4bbc7.silk false, maybe not a silk v3 encoded file.

    1. MOD回复

      @瑞仔: win转换后,能播放吗?
      可以的话,不难解决啊。

    2. LV1回复

      @kn007: 能播放,因为是linux小白,所以不是很懂,现在在看converte.sh里的代码,想问下if [ ! -r "$cur_dir/silk/decoder" ]; then里的decoder是自动生成的文件夹么?

    3. MOD回复

      @瑞仔: 不是。请再仔细看。。

    4. LV1回复

      @kn007: 嗯,我再看看~不懂还会问,有劳大神~ :!:

  6. LV1回复

    我又来了, :sad: 在centos转换成功了,但是只有最初那个文件可以转换,其他的在同个目录下,相同权限转换都不成功,大神,是什么情况哇?我是用单个转换的形式~

    1. MOD回复

      @瑞仔: 检查命令。这个没什么道理说有个文件行,其他文件不行。
      当然,你可以关闭selinux试试

    2. LV1回复

      @kn007: selinux就是关闭的状态,所以还是命令有问题么?我以为一个可以,其他的应该都可以 :cry:

    3. MOD回复

      @瑞仔: 你看下你的命令是否有错,还有命令行报什么错误

    4. LV1回复

      @kn007: 转换成pcm的时候不成功,我再看看代码,感觉还是没理清,楼主人真好,即问即答~真的非常感谢~

    5. MOD回复

      @瑞仔: 没,希望能帮上你

    6. LV1回复

      @kn007: 这个程序本来就帮了我大忙了~ ;-)

    7. 回复

      @kn007: 您好,我用您的工具转换一个小程序的文件始终报错,我把文件发您126的邮箱了,有空您帮看看,谢谢

    8. MOD回复

      @灯管: 看了,回复了。

    9. 回复

      @瑞仔: 兄弟你之前的那个显示不是 silk v3 格式是怎么处理的,我看你之前也碰到这个问题后来说windows下能解析了

    10. LV1回复

      @灯管: 我Windows下一直都可以解析的~

  7. LV1回复

    我又来了, :!: 刚开始我以为centos下有一个转换成功,其他不能转换成功应该是我的问题,后来发现cmd下,phpstudy,exe也是只有那一个可以转换成功,其他就不行,不能生成pcm文件

    1. MOD回复

      @瑞仔: 说明其他文件不是silk v3编码的。这个没法,你可以用其他软件尝试转换。

    2. LV1回复

      @kn007: 好的哇~介个微信真的是~

    3. @瑞仔: 怎么转换成功的,我也是在windows下可以,在我的 linux服务器上运行sh converter.sh voice/voice.silk mp3就报错:Convert voice.silk false, maybe ffmpeg no format handler for mp3.

  8. LV1回复

    大神,微信小程序里的silk文件开头是这样的:data:audio/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwH//
    是表示webm格式,base64编码的意思么?

    1. MOD回复

      @瑞仔: 意思是需要base64解码,用程序解,不要用在线那种网页解,不然二进制编码会丢失。
      解码后,用webm解码,就可以了。

    2. LV1回复

      @kn007: 我发现在后端存储的时候用base64_decode解码以后又编程正经的silk v3编码的silk文件了 :x :x 哭死

    3. LV1回复

      @瑞仔: 好了,我也看不懂了~ :o :o 好像不是这样的

    4. 回复

      @瑞仔: 已经转化成功,感谢作者!!!我之前是从客户端上传云服务器的,现在客户端得先到我的服务器上然后处理完了给云上,一来回好费时间啊.我转wav是为了转文字的, 另外做小程序的几位留个联系方式吧,讨论下相关问题,qq号:36806187, 微信号 dengguan_3366 ;加的时候注明一下 silk 转换之类 :roll:

  9. LV1回复

    ;-) Ok啦~ :oops: :oops:

  10. 大神,我也是在windows环境下运行程序是正常的,但是在我自己服务器的Linux环境上就报错,Convert /Transcoding/voice/voice.silk false, maybe ffmpeg no format handler for mp3.
    请问是什么原因,命令是 sh converter.sh voice/voice.silk wav

    1. MOD回复

      @hannaseyes: 因为脚本没更新,linux上的。
      而且我源码都放出来了,可以自己改下的。
      或者等我晚点有时间更新下。

    2. @kn007: 能提示一下吗,或发我个邮箱569797587@qq.com非常感谢,完成后必有重谢

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