将 mp3 文件转换为 Amazon Alexa SSML 所需的编解码器版本(MPEG 版本 2)和比特率(48 kbps)的正确命令是什么?

What is the right command to convert an mp3 file to the required codec version (MPEG version 2) and bit rate (48 kbps) for Amazon Alexa SSML?

我正在尝试将 mp3 文件转换为 Amazon Alexa SSML 标记语言中的音频标签所期望的格式,如下所述:https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/speech-synthesis-markup-language-ssml-reference

文档推荐使用https://www.ffmpeg.org/ffmpeg.html

我试过这个命令,但找不到合适的编解码器来使用: ffmpeg -y -i input.mp3 -ar 44100 -ab 48k -codec:a mpeg2 -ac 1 output.mp3

我知道我需要转换文件,因为 Alexa 失败并出现以下错误:The audio is not of a supported MPEG version

这有点令人困惑,坦率地说,亚马逊需要这个有点奇怪。 mp3 文件可以是 mpeg1 或 mpeg2 或 mpeg-2.5(非标准,但得到广泛支持)。为此,版本之间的主要区别是比特率和采样率。 Amazon 要求 48kbps(所有 mpeg 版本都支持)。接下来,mpeg-2 仅支持 22050 Hz、24000 Hz 和 16000 Hz 的采样率。因此,重新采样到这些频率之一应该会强制 ffmpeg 到 MPEG-2 第 3 层。

ffmpeg -y -i input.mp3 -ar 16000 -ab 48k -codec:a libmp3lame -ac 1 output.mp3

更多信息在这里和这里:

http://www.mp3-tech.org/programmer/frame_header.html

https://en.wikipedia.org/wiki/MP3

为了让它正常工作,我必须执行以下操作:

ffmpeg -i input.mp3 -b:a 48k -ar 16000 output.mp3

这是我用 mpg123 播放时的输出:

$ mpg123 output.mp3 
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.22.4; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Playing MPEG stream 1 of 1: output.mp3 ...

MPEG 2.0 layer III, VBR, 16000 Hz joint-stereo

[0:02] Decoding of output.mp3 finished.