Какая правильная команда для преобразования mp3 файла в требуемую версию кодека (MPEG версии 2) и скорость передачи (48 кбит/с) для 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
Ответы
Ответ 1
Немного смущает, и, откровенно говоря, немного странно, что это требует амазонка. mp3 файлы могут быть mpeg1 или mpeg2 или mpeg-2.5 (не стандартные, но широко поддерживаемые). Для этой цели основными отличиями версий являются битрейт и частота дискретизации. Amazon требует 48 кбит/с (что поддерживается во всех версиях mpeg). Затем mpeg-2 поддерживает только частоты дискретизации 22050 Гц, 24000 Гц и 16000 Гц. Таким образом, передискретизация на одну из этих частот вынуждает 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
Ответ 2
Вот что я должен был сделать, чтобы заставить его работать:
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.
Ответ 3
Мы предлагаем услугу, чтобы сделать это как часть наших инструментов Bespoken. Дополнительная информация здесь:
http://docs.bespoken.tools/en/latest/api/classes/bstencode.html
Например, вы можете позвонить:
var bst = require("bespoken-tools");
var encoder = new bst.BSTEncode({ bucket: "S3Bucket" });
encoder.encodeURLAndPublish("https://s3.amazonaws.com/alexa-files/my-raw-file.wav");
Это займет URL-адрес, переданный в encodeURLAndPublish
, и автоматически закодирует его и загрузит на S3, поэтому он доступен Alexa.
Вы также можете вызвать encodeFileAndPublish
, который будет кодировать локальный файл и загрузить его на S3.