如何将微信中的silk音频文件转换成amr格式?

How to convert silk audio file from WeChat to amr format?

我在开发微信小程序的时候,想实现语音控制。但是微信客户端提供的音频是丝的。

我需要将 silk 文件转换成某种可以被 3rd 语音检测服务识别的格式。

部分 3rd 服务支持 amr 格式。真的很棒,因为尺寸可以很小。

步骤如下:

  1. 正在将 silk 文件上传到您的服务器。
  2. 解码silk文件。感谢this project,这是一个很棒的工具,可以将 silk 文件解码为 pcm 格式。
  3. 正在安装 ffmpeg,由于一些许可问题,默认情况下,ffmpeg 不支持 amr,您必须安装 opencore-amr。最简单的方法是 brew install ffmpeg --with-opencore-amr --with-speex.
  4. 因为amr格式只支持8kHz,所以项目中的shell(上面提到的)不起作用。我们必须将第 70 行的命令更改为 ffmpeg -y -f s16le -ar 24000 -ac 1 -i ".pcm" -ar 8000 "${1%.*}.”.

在 MacOS 上,该程序正在将 silk 转换为 mp3,您可以稍微操作一下并在其他 OS 上测试 amr。

  1. 下载 lame http://lame.sourceforge.net/, 运行

    ./configure && make && sudo make install

    如果遇到

    Undefined symbols for architecture x86_64:
    "_lame_init_old", referenced from:
     -exported_symbol[s_list] command line option
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    ./configure

  2. 之前从 ${lame}/include/libmp3lame.sym 中删除行 lame_init_old
  3. http://ffmpeg.org/ 下载 ffmpeg,运行

    ./configure --enable-libmp3lame && make && sudo make install

    如果遇到

    nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
    
    。然后 运行 brew install yasm./configure

  4. 之前
  5. 下载https://github.com/kn007/silk-v3-decoder

  6. 运行silk转mp3的命令

    ${your-silk-v3-decoder-folder}/converter.sh {silk file full path} mp3 你会在与输入丝绸相同的路径中看到 mp3 文件。并且 silk 文件的路径必须是完整路径。