Офлайн распознавание речи. Библиотека Vosk
Преобразование аудио в текст — популярная и повсеместно используемая технология. В этой статье мы расскажем, как распознать речь из аудиофайла на своем ПК без использования онлайн сервисов.
Недавно нам была поставлена задача конвертировать аудиозаписи в текст для дальнейшего анализа. Обязательные условия: офлайн обработка, невысокая требовательность к системным ресурсам, и возможность автоматизации процесса. Мы выбрали Python и библиотеку vosk-api.
Что может Vosk
Vosk – это автономный инструмент для распознавания речи с открытым исходным кодом. Он позволяет использовать модели для 17 языков и диалектов (на момент написания статьи). Модели Vosk малы (50Мб) и позволяют преобразовывать речь в текст «на лету». Существуют и более точные модели. Их размер достигает 2Гб.
Существует реализация библиотеки на Python, Java, NodeJS, C#, C++ и др.
Возможен запуск на ОС Windows, Linux, Android.
Установка
Нам понадобится: python 3.8, библиотеки PyAudio == 0.2.11, vosk == 0.3.1.2
Следующим шагом загружаем модель распознавания. На данный момент для русского доступны две модели:
vosk-model-small-ru-0.4 50Мб
- vosk-model-ru-0.10 2Гб
Большая модель распознает чуть-чуть лучше, а занимает в 40 раз больше места.
После распаковки в каталог модели будет содержать каталоги am, conf, graph и другие.
При появлении ошибки вида:
RuntimeError: Cannot open config file: Z:\Python\Trifonov\vosk\vosk-model-ru-0.10/mfcc.conf
необходимо найти файл в одной из папок модели и переместить в корневой каталог модели. В нашем случае в файл mfcc.conf можно обнаружить в папку conf и переместить его на уровень наверх. С подобной ошибкой я сталкивался на ОС Windows. Для запуска мне пришлось переместить все содержимое папок am, conf, graph, ivector, rmmlm в корень модели.
Использование
Важным параметром является частота дискретизации. Большая модель поддерживает частоту 8000, следовательно, и читать данные с микрофона нужно с такой же частотой
Распознавание «на лету» с микрофона:
Для распознавания аудио из файлов необходимо конвертировать в формат WAV с частотой дискретизации, поддерживаемый выбранной моделью, в моем случае 8000 Гц.
Листинг кода распознавания аудио файла:
Для примера я распознал новогоднюю речь президента РФ за 2021 год используя большую модель:
уважаемые граждане россии дорогие друзья всего через несколько минут две тысячи двадцатый заканчивает встречая его ровно год назад мы с вами как и люди во всем мире конечно же думали мечтали о добрых перемен и тогда никто не мог представить через какие испытания всем нам придётся пройти и сейчас кажется что уходящий год вместил в себя груз нескольких лет он был трудным для каждого из нас с тревогами и большими материальными сложностей с переживаниями а для кого то горькими утратами близких любимых людей но безусловно уходящий год был связан и с надеждами на преодолении невзгод с гордостью за тех кто проявил свои лучшие человеческие и профессиональные качества с осознанием того как много значат надёжный искренне настоящие отношения между людьми дружбы и доверия между нами
Качество распознавания очень сильно зависит от шумов в исходном файле. Менее удачный пример распознавания той же моделью (минута из видео c YouTube):
сенсор встречается уже поздний базы багажа его нужно то сам что вот я тебе все скажу ну да точнее его машина сломалась у меня монастыря и нежелательно не знаешь нужно надо пройти сначала думаю да а уж потом переходить через вроде как следствие тени это уже это уже изменить эту нишу а когда вот у нас все равно два быть дотронуться прости очень много всего нужно фанат и пройдя очень много кружков и очень многое даже власть имущих неважно как сбор отдавать бывший министр что заяц сэр очень такой хороший дядька мне посоветовал и незамедлительно он выдаёт рады нас видеть смита трейдеры лазеров что у нас перед зрителями
Также стоит отметить, что данная библиотека распознавания речи не обучена определять жаргонизмы и ненормативную лексику, но позволяет проводить дообучение моделей на пользователькой выборке. Описание данной функции можно найти в документации: https://alphacephei.com/vosk/adaptation.
Библиотека vosk показала хороший результат при обработке аудио в «тепличных условиях», но при появлении шумов качество распознавания значительно снижается.
На слабом офисном ПК мне удалось обработать запись длиной 4 часа за 20 минут.
«Ветку» запустил бывший дизайнер Sketch и Frame.io Илья Мисков.
В этом году начинается массовая проверка IT-специалистов. Эксперимент по созданию такой платформы уже запущен. Кто попадает под проверку, как будут испытывать айтишников и зачем вообще это нужно? Читайте в статье.
На презентации компания объявила цене в €3499.
Это не первые роботы, которых тестируют в аэровокзале, — в декабре 2024 года там запустили беспилотных роботов для доставки багажа.
В мире красоты и ухода за собой конкуренция становится все более острой. На фоне привычных гигантов, таких как Лэтуаль, на арену выходят новые игроки, которые стремятся завоевать внимание потребителей. Одним из таких брендов является «Золотое Яблоко», которое активно борется за свою долю рынка и привлекает покупателей свежими идеями и уникальным по…
Вы не сказали куда кидать Vosk?
Vosk можно установить с помощью PyPi, подробная инструкция есть здесь https://alphacephei.com/vosk/install
пожалуйста помогите с ошибкой
raise Exception("Failed to create a model")
Exception: Failed to create a model
+
Добрый день! Вам необходимо проверить путь к модели. Если это не принесет результатов - выкладывайте ошибку вместе с кодом, который ее вызывает, и подробным трейсбэком ошибки, будем разбираться :)
Добрый день! Подскажите пожалуйста что записать в коде чтоб программа запрашивала путь к файлу( пример - E:\Python\1.wav) и после его преобразовывала. Пробовал - wf = wave.open(input("Путь к файлу:")), не получается. выдаёт ошибку:
Traceback (most recent call last):
File "E:\Python\Proba\main.py", line 11, in
wf = wave.open(input("Путь к файлу:"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\79110\AppData\Local\Programs\Python\Python311\Lib\wave.py", line 630, in open
return Wave_read(f)
^^^^^^^^^^^^
File "C:\Users\79110\AppData\Local\Programs\Python\Python311\Lib\wave.py", line 280, in __init__
f = builtins.open(f, 'rb')
^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument: '\u202aE:\\Python\\1.wav'
Добрый день! Уточним информацию, вернемся с ответом )