Python: преобразование звука в текст с помощью библиотеки Vosk

0
34

Краткая памятка по реализации распознавания речи на Python

  1. Установите библиотеку SpeechRecognition через pip.
  2. Для работы с микрофоном установите PyAudio.
  3. Выберите подходящий движок распознавания (Google, Vosk, Whisper).
  4. Для офлайн-работы скачайте модель Vosk или Whisper.
  5. Загрузите аудиофайл в формате WAV или конвертируйте его.
  6. Используйте контекстный менеджер для открытия аудиофайла.
  7. Примените метод record() для чтения данных из файла.
  8. Вызовите метод recognize_*() для получения текста.
  9. Обработайте исключения (UnknownValueError, RequestError).
  10. Для длинных записей разбейте аудио на фрагменты.
  11. Настройте язык распознавания через параметр language.
  12. Примените шумоподавление с помощью adjust_for_ambient_noise().
  13. Протестируйте точность на разных аудиозаписях.
  14. Для продакшена используйте Whisper или Vosk для стабильности.

Перевод аудио в текст

Чтобы реализовать транскрибацию из аудио в текст, нам необходимо решить следующие задачи:

  1. Вытащить части речи из аудио.
  2. Расставить пробелы на паузах между частями речи.
  3. Добавить пунктуацию в текст.

Все действия буду делать на машине с Ubuntu 20 (Python 3.8) со следующей конфигурацией:

  • CPU 2vCPU.
  • RAM 12GB.
  • HDD 20GB.

Причина использования такого количества RAM в том, что мы делаем распознавание на универсальной модели, то есть модели размером 50 Мб, которая требует в разы меньше оперативной памяти в работе, чем полноценная модель. Правда, качество распознавания в этом случае уменьшится.

ЧИТАТЬ ТАКЖЕ:  Перемножение всех цифр числа в Python: полный гайд с фото

В результате этих действий мы скопировали к себе модель, разархивировали ее и переименовали директорию. Также удалили скачанный архив. Всё-таки он весит 1.5 Гб. Для расстановки пунктуации делаем похожие действия: скачиваем еще одну модель весом 1.5 Гб.

Последний штрих – разместить файл Song.mp3 в нашей директории с исполняемым файлом. Затем запускаем. В результате наша программа обработает файл.mp3 и на основе натренированных моделей из библиотеки Vosk сделает транскрибацию аудио в текст с сохранением результата в файл.

Наша реализация решает поставленные задачи в начале статьи. Но это скорее MVP, чем продуманное решение для продакшена. Если мы начнем углубляться, то перед нами встанут задачи обработки больших аудио (от часа и более), организации многопоточности, балансировки и горизонтального масштабирования и много чего интересного. Библиотека VOSK позволяет со всем этим справиться. Но это уже другая история:)

Ключевые вопросы по преобразованию звука в текст на Python

Вопрос: Какая библиотека Python лучше всего подходит для распознавания речи?
Ответ: Лучший выбор зависит от задачи: SpeechRecognition проста для начинающих, Vosk работает офлайн, а Whisper от OpenAI показывает высокую точность на разных языках.

Вопрос: Можно ли использовать Python для распознавания речи в реальном времени?
Ответ: Да, с помощью библиотеки SpeechRecognition и модуля PyAudio можно захватывать звук с микрофона и распознавать его в реальном времени.

ЧИТАТЬ ТАКЖЕ:  Как скомпилировать Python в APK на Windows: руководство и инструменты

Вопрос: Как установить библиотеку SpeechRecognition?
Ответ: Установка выполняется командой pip install SpeechRecognition. Для работы с микрофоном дополнительно потребуется PyAudio.

Вопрос: Поддерживает ли Python распознавание русского языка?
Ответ: Да, библиотеки Vosk и Whisper отлично поддерживают русский язык. SpeechRecognition также может работать с русским через Google Speech API.

Вопрос: Как преобразовать аудиофайл в текст на Python?
Ответ: Загрузите аудиофайл с помощью библиотеки, например, speech_recognition.AudioFile(), и передайте его методу recognize_google() или другому распознавателю.

Вопрос: Какие форматы аудиофайлов поддерживаются?
Ответ: SpeechRecognition поддерживает WAV, AIFF, FLAC. Для других форматов (MP3) требуется предварительная конвертация с помощью pydub или ffmpeg.

Вопрос: Как улучшить точность распознавания речи?
Ответ: Используйте шумоподавление, настройте язык распознавания, применяйте модели с большим словарем (например, Whisper large) и предварительно очищайте аудиозапись.

Вопрос: Можно ли распознавать речь без интернета?
Ответ: Да, библиотеки Vosk и Whisper (локальная версия) работают полностью офлайн, без подключения к облачным сервисам.

Вопрос: Как обработать длинную аудиозапись (более 1 часа)?
Ответ: Разбейте аудио на небольшие фрагменты (например, по 30 секунд) и обрабатывайте их последовательно, затем объедините результаты.

Вопрос: Какие альтернативы существуют для SpeechRecognition?
Ответ: Основные альтернативы: Vosk (офлайн, легковесный), Whisper (высокая точность), Google Cloud Speech (облачный), а также CMU Sphinx (устаревший).