Найти тему
Журнал «Код»

Переводим аудио в текст. Часть 2

Оглавление

Python, выручай!

Продолжаем мегапроект, в котором поставим себе на службу безразмерное облако Яндекса. Задача — воспользоваться облачным сервисом Яндекса, который отвечает за расшифровку текста из аудиофайла.

Вчера мы подготовили «Яндекс.Облако» и разобрались с технологиями, которые будем использовать. Теперь можно отправлять файлы на сервер и получать текст.

Технические детали

В проекте мы будем распознавать длинные аудио. Яндекс считает длинными записи от 30 секунд и больше одного мегабайта, но никто не мешает отправить на распознавание файл с меньшей длительностью записи. Так тоже можно.

Форматы аудио, которые понимает нейросеть Яндекса на момент написания статьи, — LPCM и OggOpus. Мы будем работать со вторым: он занимает меньше места и проще в обработке. MP3 пока не поддерживается.

Распознаётся только русская речь.

Готовим файл

Нам нужен файл в формате OggOpus и расширением .ogg. Если ваш диктофон, телефон или компьютер не умеют сохранять аудио в таком формате, используйте любой аудиоконвертер — онлайн-сервис или в виде программы на компьютере.

Например, это может работать так: находите в интернете любой сервис конвертации аудио, выбираете формат Opus (просто Ogg не пойдёт — не тот кодек) и сохраняете файл в этом формате. Затем меняете расширение на .ogg вместо .opus — и у вас получился файл нужного формата.

Если аудиозаписей пока никаких нет, используйте тестовый файл speech.ogg, потренируйтесь на нём.

Загружаем файл на сервер

Теперь нужно готовый файл отправить в «Яндекс.Облако». Место, где хранятся файлы в облачном сервисе, называется «бакет» («ведро» по-нашему). Чтобы сделать новое ведро, заходим в консоль, переходим в раздел Object Storage и нажимаем «Создать бакет»:

-2

В появившемся окне придумываем имя и нажимаем «Создать бакет»:

-3

Нам нужно загрузить файл в этот бакет. Для этого заходим в него и перетаскиваем туда мышкой наш файл:

-4

Последнее, что осталось, — узнать путь к файлу. Для этого нажимаем на сам файл, выбираем «Получить ссылку» и копируем её. Она нам пригодится на последнем этапе:

-5

Добавляем нужные библиотеки в Python

Мы будем писать программу-обработчик на Python, поэтому перед началом убедитесь, что он есть у вас на компьютере.

Чтобы отправлять запросы на сервер и принимать в ответ готовый текст, нам нужна python-библиотека requests. Установим её из командной строки в PowerShell. Если у вас Мак — то через Терминал:

pip install requests --user

Чтобы установщик не выдавал в конце подобные предупреждения, добавьте путь к скриптам в глобальную переменную PATH.
Чтобы установщик не выдавал в конце подобные предупреждения, добавьте путь к скриптам в глобальную переменную PATH.

Пишем программу

К этому моменту у нас уже есть аудиофайл в нужном формате, он залит в хранилище, осталось только распознать его. Вот что нам для этого нужно:

  • API-ключ → его мы получали в первой части.
  • Путь к файлу в бакете → получили, когда заливали файл в хранилище.

Эти данные мы вставим в наш код на Python. Логика программы простая: подготавливаем все данные и отправляем запрос на распознавание. Пока сервер не ответит, что всё готово, ждём. Как только приходит ответ — выводим готовый текст на экран.

Результат распознавания тестового файла.
Результат распознавания тестового файла.

Что дальше

Дальше будем создавать аудиокниги и раскрывать весь потенциал движка SpeechKit. Ну и заодно будем программировать на Python :)