Как сделать распознавание речи на питоне

Добавил пользователь Дмитрий К.
Обновлено: 05.10.2024

Распознавание голоса с помощью Python

Привет всем! Сегодня мы разберемся с вопросом, который звучит как: распознавание голоса с помощью Python. Так ли сложна эта задача, как звучит? На самом деле — все достаточно просто, ведь у нас есть связка из Python и библиотеки Speech_recognition, полная документация по которой доступна по ссылке. Поехали!

Как всегда — в случае возникновения вопросов пишите на почту, или в Telegram.

Голосовой бот с искусственным интеллектом на Python

В этом руководстве разберем создание голосового бота использующего технологии нейронных сетей на языке Python. Бот может распознавать человеческий голос в реальном времени с вашего устройства, например с микрофона ноутбука, и произносить осознанные ответы, которые обрабатывает нейронная сеть.

Бот состоит из двух основных частей: это часть обрабатывающая словарь и часть с голосовым ассистентом.

Всю разработку по написанию бота вы можете вести в IDE PyCharm, скачать можно с официального сайта JetBrains.

Все необходимые библиотеки можно установить с помощью PyPI прямо в консоле PyCharm. Команды для установки вы можете найти на официальном сайте в разделе нужной библиотеки.


Официальный сайт PyPI

Проблема возникла только с библиотекой PyAudio в Windows. Помогло следующее решение:

Дата-сет

Дата-сет — это набор данных для анализа. В нашем случае это будет некий текстовый файл содержащий строки в виде вопрос\ответ.

Все строки текста перебираются с помощью функции for , при этом из текста удаляются все ненужные символы по маске, находящейся в переменной alphabet . Каждое значение строки раздельно заносится в массив dataset .

После обработки текста все его значения преобразуются в вектора с помощью библиотеки для машинного обучения Scikit-learn. В этом примере используется функция CountVectorizer() . Далее всем векторам присваивается класс с помощью классификатора LogisticRegression() .

Голосовой ассистент

При дефолтных настройках время ответа было достаточно долгим, иногда нужно было ждать по 15-30 сек. К тому же вопрос принимался от малейшего шума. Помогли следующие настройки:

И timeout = None, phrase_time_limit = 2 в функции listen()

После чего бот стал отвечать с минимальной задержкой.

Возможно вам подойдут другие значения. Описание этих и других настроек вы можете посмотреть все на том же сайте PyPI в разделе библиотеки SpeechRecognition. Но настройку phrase_time_limit я там почему-то не нашел, наткнулся на нее случайно в Stack Overflow.

Текст дата-сета

Код Python


Работа бота в PyCharm

Пример одного из самых популярных голосовых помощников — это яндекс алиса.

Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:


На прошлом уроке мы с вами создали простое веб-приложение печатающее "Hello World". Как я и обещал в этом уроке мы уже создадим простую нейросеть на языке Python, да да и это не шутка, такой вот это простой язык. Для Python Читать далее


После того, как вы скачали и установили интерпретатор Python, пришло время создать вашу первую программу. По традиции это будет "Hello Word". Но открывать мы её будем не просто в командной строке, а как страницу в браузере. 1. Запустите веб-сервер Веб-сервер Читать далее


Это первый урок из цикла небольших статей для тех, кто только начинает изучать язык программирования Python или программирование в целом. Как известно Python язык с низким порогом вхождения, поэтому он подойдет и как первый язык для начала изучения программирования. На Читать далее


Из видео вы узнаете, что такое нейронные сети, и как они используются. Всего лишь за 30 минут вы узнаете минимально необходимую теорию, а так же сможете написать свою первую многослойную нейронную сеть самостоятельно (она займет не более 50 строк кода!). Читать далее


02.03.2021 | Трифонов Дмитрий, г.Хабаровск | 2

Недавно мне была поставлена задача конвертировать аудиозаписи в текст для дальнейшего анализа. Обязательные условия: офлайн обработка, невысокая требовательность к системным ресурсам, и возможность автоматизации процесса. Я выбрал Python и библиотеку vosk-api.

Что может Vosk

Возможен запуск на ОС 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):

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

На слабом офисном ПК мне удалось обработать запись длиной 4 часа за 20 минут.


Итак, вы захотели распознать речь на Python и обнаружили, что существует множество различных вариантов. Не бойтесь, я здесь, чтобы помочь. Мы можем разделить наши параметры распознавания речи Python на две основные категории: с открытым исходным кодом и облако.

Решения с открытым исходным кодом — это библиотеки с открытым исходным кодом (обычно на github એ ), которые вы импортируете в свою программу и используете программно, выполняя вычисления на своих собственных ресурсах. Облачные решения для распознавания речи Python выполняют вычисления на облачных ресурсах и обычно предоставляются через конечные точки API, которые вы можете использовать.

Варианты распознавания речи с открытым исходным кодом и облачным Python

Одним из самых больших преимуществ решений распознавания речи Open Source Python является то, что это открытый исходный код. Открытый исходный код означает, что вы можете видеть исходный код. Вы можете точно знать, что делается, как это делается и когда это делается. Если вы высококвалифицированный инженер, то ещё одним большим преимуществом таких является то, что вы можете самостоятельно изменить код. Самый большой недостаток решений с открытым исходным кодом заключается в том, что вычислительная мощность, необходимая для распознавания речи, должна исходить от вас. Либо локально, либо на собственных облачных ресурсах. Для многих это проблема.

Если вы разрабатываете решение для компании или корпорации, у которой есть много облачных ресурсов и денег, то это не проблема. Однако, если денег нет, то это недостаток. Еще одно важное соображение заключается в том, что параметры распознавания речи на Python с открытым исходным кодом обычно намного менее точны, чем параметры облачного API. Если в вашем проекте важна точность, вам, вероятно, будет лучше облачное решение.

Облачные решения для создания проекта распознавания речи на Python имеют большое преимущество в том, что они просты в использовании, намного более точны, чем варианты с открытым исходным кодом, и не требуют размещения каких-либо моделей на собственном оборудовании.

Основным недостатком некоторых облачных решений является стоимость. К счастью, существуют бесплатные опции, которые предлагают настройку, такую ​​как настройка словаря, определение абзацев и ведение дневника говорящего для создания простого проекта распознавания речи на Python. Одним из примеров является AssemblyAI’s Speech-to-Text API . Еще одно большое преимущество облачных решений заключается в том, что их намного проще реализовать, чем варианты с открытым исходным кодом.

Ключевой вывод: когда вы выбираете решение для своего проекта распознавания речи на Python, главное, о чем следует подумать, — это точность, стоимость и простота реализации.

Возможности распознавания речи Python с открытым исходным кодом

Существует множество вариантов распознавания речи Python с открытым исходным кодом. Мы рассмотрим три наиболее удачных из них. Эти библиотеки распознавания речи Python с открытым исходным кодом — wav2letter , SpeechRecognition и DeepSpeech .

wav2letter

Библиотека с открытым исходным кодом wav2letter была впервые разработана Facebook. Теперь он перенесен в новую библиотеку с открытым исходным кодом под названием Flashlight, но все еще в основном известен разработчикам под старым названием wav2letter. Самое интересное в wav2letter заключается в том, что он полностью построен на сверточных нейронных сетях (CNN એ ) от акустического моделирования до языкового моделирования. Это редкое явление, потому что с 2014 года в обработке естественного языка (NLP એ ) преобладают модели на основе рекуррентных нейронных сетей (RNN એ ).

Еще одна интересная вещь о wav2letter и недостаток для неопытных программистов это то, что он должен быть построен для использования в Python и не может быть просто установлен с помощью команды pip. Фактически, для установки wav2letter вам понадобится компилятор C++! Если вы создаете простой проект распознавания речи на Python, это наверняка помешает вашим планам. Другой недостаток заключается в том, что, поскольку он был перенесен на Flashlight, теперь вам также понадобится Flashlight в качестве зависимости для использования wav2letter.

Сама установка wav2letter может стать для вас мини-проектом. Если вы заинтересованы в реализации проекта wav2letter, потому что вам нравится звук проекта распознавания речи Python, который а) сложно запустить, б) имеет много зависимостей и в) построен на классной структуре нейронной сети, которая немного отличается чем большинство других речей для текстовых библиотек, тогда wav2letter для вас, и вы можете начать с чтения этого руководства о том, как установить wav2letter .

SpeechRecognition

Как могла библиотека SpeechRecognition не быть лучшей библиотекой с открытым исходным кодом для распознавания речи? К сожалению, трудно сказать, что это настоящее решение с открытым исходным кодом для распознавания речи, потому что на самом деле оно охватывает другие технологии распознавания речи. По общему признанию, она поддерживает множество других технологий, включая преобразование речи в текст Google Cloud એ , CMU Sphinx એ , Wit એ , Azure એ , Houndify એ , IBM એ и Snowboy એ . Конечно, единственные два, которые вы можете использовать в автономном режиме (локально), — это CMU Sphinx и Snowboy.Какие еще есть решения? Облачные решения, заключенные в библиотеку с открытым исходным кодом, поэтому похоже, что у вас больше возможностей для настройки, чем у вас.

Если вы не ищете облачное решение, то библиотека с открытым исходным кодом SpeechRecognition Python, вероятно, не для вас. Единственное реальное офлайн-решение, которое он предлагает, — это использование CMU Sphinx, cоздатели Snowboy больше не поддерживают, и я больше не мог найти ссылку на его документацию в Интернете. Если вы можете найти его, пожалуйста, напишите мне в комментариях, потому что из всех библиотек распознавания речи, которые я видел, у него второе самое крутое имя (Sphinx, безусловно, круче). CMU Sphinx хорош тем, что в нем много документации для разработчиков и часто задаваемых вопросов. Он основан на более чем 20-летних исследованиях, проведенных Университетом Карнеги-Меллона, ведущей (некоторые могут поспорить с лучшей) школой компьютерных наук в мире. Это не так ресурсоемко, как некоторые другие решения Python для преобразования речи в текст, и поддерживает несколько языков. Если в этот момент вы чувствуете, что я даже не говорю о библиотеке SpeechRecognition, это потому, что я не говорю. SpeechRecognition — это простая оболочка для других решений преобразования речи в текст. Фактически, он БУКВАЛЬНО вызывает другую речь в текстовую службу, чтобы сделать ее транскрипцию. Хотя приятно, что он объединяет их все в один пакет, поэтому вы можете использовать несколько сервисов, загрузив только одну библиотеку! Я бы посоветовал эту библиотеку, если вы тестируете все облачные сервисы, для которых она предоставляет оболочки.

DeepSpeech

Первоначально DeepSpeech был статьей о методах распознавания речи, подготовленной исследовательской группой Baidu. Связанная мной библиотека — это проект с открытым исходным кодом, который находится на GitHub Mozilla. DeepSpeech может работать в автономном режиме и на устройствах.DeepSpeech работает на широком спектре устройств, от устройств Raspberry Pi до реальных графических процессоров, которые используются для обучения моделей в промышленности.

DeepSpeech довольно легко загрузить и начать работу, все, что вам нужно сделать, это установить его с помощью pip, а затем загрузить аудиофайлы, такие как фрагмент кода ниже.На самом деле нет никаких правил, согласно которым вы должны использовать английские модели DeepSpeech. Если у вас есть собственные, вы можете полностью использовать их.

Помните, что для использования DeepSpeech все должно запускаться на устройстве. Это означает, что потребуется много локальных вычислительных ресурсов. Если вы собираетесь обучать модель DeepSpeech на графическом процессоре, убедитесь, что у вас есть необходимые файлы CUDA. DeepSpeech для графических процессоров зависит от CUDA 10.1 и CuDNN 7.6. Кроме того, вам необходимо установить deepspeech-gpu с pip. Я рекомендую DeepSpeech, если вы лично хотите запускать свои модели для локального распознавания речи. Я также считаю, что DeepSpeech — довольно продвинутая библиотека, которую можно использовать по назначению, поэтому я также рекомендую ее для продвинутых программистов, которые будут выполнять множество настроек.

Распознавание речи Cloud Python


AssemblyAI создает быстрый API-интерфейс автоматического распознавания речи, который могут бесплатно использовать разработчики. API, размещенный в облаке, чрезвычайно прост в использовании и включает в себя множество функций. В этом разделе я расскажу, как использовать API AssemblyAI для преобразования речи в текст для транскрипции, как вести дневник докладчика,как добавить собственный словарь в вашу транскрипцию и как создать абзацы из созданной вами транскрипции. Все, что вам нужно сделать, чтобы следовать остальной части этого руководства, — это получить ключ API свободного преобразования речи в текст и получить аудиофайл, который вы хотите расшифровать.

Вы должны увидеть свой ключ API в том месте, где я обведен на картинке.

Использование AssemblyAI Speech to Text API

API-интерфейс AssemblyAI для преобразования текста в текст быстр, точен и очень прост в использовании. Начиная с нашего аудиофайла, сначала мы загрузим его в конечную точку выгрузки AssemblyAI, а затем отправим запрос на расшифровку загруженного файла.Если у вас есть аудиофайл, загруженный где-то в Интернете (например, в корзину S3), вы можете пропустить этот шаг.

Все, что вам нужно для получения транскрипции, — это сделать запрос к конечной точке транскрипции AssemblyAI со ссылкой на загруженный аудиофайл, немного подождать, а затем сделать еще один запрос к конечной точке транскрипции с идентификатором вашего запроса, чтобы вернуть транскрипцию. в ответ.

После отправки ответа с транскрипцией мы подождем некоторое время. В настоящее время в документации предлагается 30% длины аудиофайла, но при моем эмпирическом использовании я обнаружил, что это немного быстрее, чем это. После того, как мы подождали разумное количество времени, мы просто отправляем запрос на опрос и загружаем нашу расшифровку.

Пользовательский словарь с API распознавания речи AssemblyAI

Одна из самых крутых особенностей API AssemblyAI для преобразования текста в текст — это простота запроса различных функций для вашей транскрипции.Вы можете передать собственный словарь в транскрипцию AI, используя параметр повышения слов и передав список слов, которые должна распознавать модель. Запрос расшифровки тогда будет выглядеть как код ниже. Вам не нужно добавлять ключевое слово boost param, если вы не хотите увеличить или уменьшить силу вашего слова boost.

Некоторые правила, которым следует следовать при использовании пользовательского словаря с API ассемблера для преобразования речи в текст: 1) удалить знаки препинания, 2) каждое слово должно быть в его устной форме и 3) не должно быть пробелов между буквами акронима.

Диаризация спикера с помощью API распознавания речи AssemblyAI

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

Получение абзацев из API распознавания речи AssemblyAI

‍ Ответ, который вы получите от конечной точки абзаца, должен выглядеть как JSON ниже.

Распознавание речи в реальном времени в Python

Наконец, я коснусь еще одной вещи: API-интерфейс AssemblyAI для преобразования речи в текст имеет возможность распознавать речь в потоковом режиме в реальном времени. Для распознавания речи в реальном времени необходимо обновить вашу учетную запись, чтобы она не входила в состав API свободы слова для текста.

Краткое описание состояния распознавания речи Python в 2021 году

В этом посте я рассмотрел текущее состояние технологий распознавания речи для пользователей Python — от трех популярных библиотек с открытым исходным кодом, wav2letter, SpeechRecogntion и DeepSpeech, до облачного решения, такого как API распознавания речи AssemblyAI.

Wav2letter — это библиотека с открытым исходным кодом, которая использует в своих моделях чистую архитектуру CNN и изначально была создана Facebook. SpeechRecognition — это в основном библиотека-оболочка для некоторых облачных API-интерфейсов и модель, основанная на CMUSphinx, исследование, проведенное в Университете Карнеги-Меллона.

Первоначально DeepSpeech был разработан учеными из Baidu, которые опубликовали на нем статью; библиотека с открытым исходным кодом поддерживается Mozilla, и это единственная библиотека, которую я рассмотрел, которая работает на устройстве.

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Ограничение ответственности

Автор не делает никаких заявлений, не дает никаких гарантий и оценок относительно того, что результаты, размещенные на сайте и описанные в заявлениях относительно будущих результатов, будут достигнуты.

Автор не несет ответственности за убытки, возникшие у пользователей или третьих лиц в результате использования ими сайта, включая упущенную выгоду.

Автор не несет ответственности за убытки, возникшие в результате действий пользователей, явно не соответствующих обычным правилам работы с информацией в сети Интернет.

Читайте также: