Как использовать AWS Transcribe для преобразования речи в текст
Транскрипция речи — это проблема, которую обычно решают с помощью дорогостоящих людей. Однако благодаря машинному обучению компьютеры догнали его, и набор инструментов распознавания речи AWS на основе искусственного интеллекта теперь доступен в качестве сервиса для вашего приложения.
AWS Transcribe конвертирует аудиофайлы в S3
Transcribe прост — дайте ему аудиофайл (хранящийся в S3), и он сможет просмотреть его и дать вам результат. Плата взимается в зависимости от продолжительности аудио из расчета 0,0004 доллара США за секунду. Транскрипция двухчасового заседания совета директоров обойдется в 2,88 доллара, а короткое двухминутное видео стоит всего 0,06 доллара.
Transcribe работает довольно быстро, но не оптимизирована по задержкам. Он хорошо подходит для расшифровки постфактум, такой как расшифровка звонков клиентов и добавление субтитров к загруженному видео. Если вам нужна транскрипция речи в текст в режиме реального времени, вы можете использовать AWS Lex, сервис для создания интерактивных чат-ботов, таких как Alexa.
Для начала перейдите в консоль AWS Transcribe. Вы можете нажать «Начать трансляцию», чтобы записать с микрофона вашего устройства и протестировать сервис. Это довольно аккуратно, но вы, вероятно, после этого.
На боковой панели выберите «Задания на расшифровку» и нажмите «Создать задание». Работа служит методом автоматизации транскрипции. Каждое задание работает с одним файлом за раз; чтобы автоматизировать транскрипцию нескольких файлов, вам нужно создать отдельное задание для каждого из командной строки.
Дайте Transcribe путь к аудиофайлу, который вы хотите преобразовать. При желании вы можете вручную выбрать формат и частоту дискретизации, хотя он должен автоматически распознавать наиболее распространенные из них.
Как только вы нажмете «Создать», начнется транскрипция. Вновь созданное задание появится в списке, и как только оно будет выполнено, вы сможете скачать транскрибированный текст.
Вы, вероятно, также захотите узнать, как работать с Transcribe из консоли, поскольку создавать задания вручную утомительно и подходит только в том случае, если вы обрабатываете один большой аудиофайл за раз.
aws transcribe start-transcription-job --transcription-job-name NewJob --language-code en-US --media MediaFileUri="s3://bucket/file.mp3"
Это запускает задание и выводит некоторый JSON, сообщающий вам, успешно ли он создан. Вы можете программно проверить статус задания с помощью get-transcription-job
:
aws transcribe get-transcription-job --transcription-job-name NewJob
Если он завершен, TranscriptionJob.TranscriptionJobStatus
устанавливается в состояние ЗАВЕРШЕНО, и вы можете загрузить файл напрямую с помощью curl
и небольшой обработки jq
:
curl $(aws transcribe get-transcription-job --transcription-job-name NewJob | jq -r ".TranscriptionJob.Transcript.TranscriptFileUri") | jq ".results.transcripts"
Обратите внимание, что файл стенограммы имеет формат JSON и содержит полную стенограмму, а также оценку достоверности каждого слова и альтернатив. Если вам не нужны все значения достоверности, вы можете отфильтровать их с помощью окончательного | jq \.results.transcripts\
.
Вы также можете автоматически расшифровывать аудиофайлы с помощью функций Lambda. Lambda — это сервис, который может запускать код в ответ на события AWS, такие как загрузка новых элементов в S3. Это без сервера, и вы платите только за время выполнения; поскольку Lambda не выполняет фактическую обработку, а просто создает новое задание при загрузке, стоимость должна быть тривиальной.
Вы можете запрограммировать его самостоятельно, если раньше использовали Lambda, но, к счастью, в репозитории бессерверных приложений Lambda есть готовое приложение, которое может выполнить эту работу за вас. Он называется s3-lambda-transcribe-audio-to-text-s3
, и вам, возможно, придется щелкнуть «Показать приложения, которые создают пользовательские роли IAM», чтобы найти его.
Создайте новое приложение на основе этого шаблона и укажите входной и выходной сегменты. Убедитесь, что выходной сегмент существует, а входной — нет, так как приложение создаст для вас входной сегмент.
Вы также захотите ввести язык аудиофайла. en-US
– общий английский; для всего остального вы можете найти код в документации AWS.
Разверните приложение, и вы должны увидеть только что созданную корзину. Если вы поместите аудиофайл в это ведро, Lambda может создать для вас новое задание Transcribe.
Если приложение не работает, убедитесь, что вы разрешили ему создать свою роль IAM, и убедитесь, что у него есть разрешение на работу с Transcribe и необходимыми сегментами S3.