微信语音短消息amr文件转WAV

 微信语音短消息amr文件转WAV


在《SILK编码语音转WAV格式》中提到过,“腾讯系产品,包括QQ、微信、小程序,在语音相关的实现中,也大量使用到SILK编码”,并对SILK编码、WAV格式及SILK转WAV进行了介绍。


本文将针对微信语音短消息amr后缀文件转换成WAV文件的方法进行说明。


而QQ语音流、微信语音流的SILK解码方式与此类似,但又有其特殊性,可参考本文及之前相关文章。


01

amr说明

640?wx_fmt=jpeg

微信语音短消息文件虽然不能直接转发,但在手机中以文件形式存在微信相关目录下,对Android手机而言,在/sdcard/tencent/MicroMsg/xxx/voice2目录中,根据特定哈希算法被哈希到不同子目录下,为amr后缀,xxx为账号对应的目录。iPhone则可使用各种工具导出。


这些amr文件里面的二进制格式如下:

640?wx_fmt=png

通过分析可以发现,是在SILK文件格式前多了一个字节,如果将该字节删除即可使用SILK编码库内的示例程序解码。


对微信语音短消息文件,转换为WAV时,使用SampleRate为24000,

BitsPerSample为16即可。


02


转WAV程序


我对SILK编码库稍作修改,编译了一个Windows下可直接将SILK V3编码转换为WAV格式,并支持原生的微信语音短消息amr文件的版本,提供给大家使用,压缩包(包括修改的SILK编码库、编译好的程序、运行脚本、示例微信短消息amr文件及转换出的WAV文件)的下载地址可关注后发送关键词“amr”获取。


对程序简单说明如下:

SILK_SDK_SRC_ARM_v1.0.9内test目录下的Decoder.c为被修改的支持微信语音短消息文件转换为WAV的源文件。

SILK_SDK_SRC_ARM_v1.0.9内的程序为编译可直接使用的程序。

decoder.amr.bat为将微信语音短消息amr文件转换为wav文件的运行脚本,内容可修改。

decoder.slk.bat为将原始SILK格式文件转换为wav文件的运行脚本,内容可修改。

msg_222102012818a9a397acc9c106.amr为微信语音短消息amr文件示例。

msg_222102012818a9a397acc9c106.slk为原始SILK格式文件示例。

msg_222102012818a9a397acc9c106.amr.wav为转换出的wav文件。


如果对这个修改的可转为WAV版本的SILK库的使用有问题,可以咨询我。


如果需再次熟悉SILK到WAV的转换请点击链接:SILK编码语音转WAV格式

640?wx_fmt=jpeg

长按进行关注。





原文地址:https://www.cnblogs.com/protosec/p/11673357.html