Что такое распознавание речи. Как работают современные системы распознавания речи. Где применяются технологии распознавания речи. Какие существуют проблемы и ограничения. Каковы перспективы развития технологий распознавания речи.
Что такое распознавание речи и как оно работает
Распознавание речи — это технология, позволяющая компьютерным системам преобразовывать устную речь в текст. Современные системы распознавания речи основаны на сложных алгоритмах машинного обучения и анализе больших объемов речевых данных.
Процесс распознавания речи обычно включает следующие основные этапы:
- Запись и оцифровка звукового сигнала
- Предварительная обработка сигнала (фильтрация шумов, нормализация и т.д.)
- Выделение акустических признаков
- Распознавание фонем на основе акустической модели
- Определение слов с помощью языковой модели
- Формирование итогового текста
Ключевую роль в современных системах играют нейронные сети глубокого обучения, которые позволяют достичь высокой точности распознавания в различных условиях.
![](/800/600/https/slideplayer.com/slide/3298359/11/images/20/Speech+Recognition.jpg)
Основные технологии распознавания речи
Существует несколько основных подходов к реализации систем распознавания речи:
- Скрытые марковские модели (HMM) — классический статистический метод
- Нейронные сети глубокого обучения — современный подход на основе машинного обучения
- Гибридные системы, сочетающие HMM и нейронные сети
- End-to-end системы на основе рекуррентных нейронных сетей
Наиболее эффективными на сегодняшний день считаются системы на основе глубоких нейронных сетей, в частности, с использованием архитектур типа трансформер.
Области применения технологий распознавания речи
Технологии распознавания речи находят применение во многих сферах:
- Голосовое управление устройствами и приложениями
- Голосовые помощники (Siri, Алиса и др.)
- Автоматическая расшифровка аудио и видео
- Системы голосового поиска
- Голосовой ввод текста
- Системы безопасности и биометрической идентификации
- Анализ телефонных разговоров в колл-центрах
- Системы субтитрирования в реальном времени
Распознавание речи становится неотъемлемой частью многих современных технологических решений, упрощая взаимодействие человека с компьютерными системами.
![](/800/600/https/dmtyylqvwgyxw.cloudfront.net/instances/132/uploads/images/custom_image/image/10675/transformed_speechrecognition.png)
Ведущие компании в сфере распознавания речи
На рынке технологий распознавания речи выделяется ряд крупных игроков:
- Google — технология Speech-to-Text
- Amazon — сервис Amazon Transcribe
- Microsoft — сервис Azure Speech to Text
- IBM — технология Watson Speech to Text
- Nuance Communications — Dragon NaturallySpeaking
- Яндекс — технология SpeechKit
Эти компании предоставляют как готовые решения, так и облачные API для интеграции функций распознавания речи в сторонние приложения и сервисы.
Точность современных систем распознавания речи
Точность распознавания речи значительно выросла за последние годы благодаря развитию технологий глубокого обучения. Для английского языка ведущие системы демонстрируют точность на уровне 95-97% для чистой речи в хороших акустических условиях.
Однако точность может существенно снижаться в сложных условиях:
- При наличии фонового шума или эха
- При распознавании спонтанной речи с речевыми дефектами
- Для речи с сильным акцентом или диалектами
- При распознавании специализированной лексики
Поэтому важной задачей остается повышение робастности систем распознавания речи к различным акустическим условиям и особенностям речи.
![](/800/600/https/www.pvsm.ru/images/2019/02/02/eta-programma-vzlamyvaet-audiokapchu-v-90-sluchaev-2.png)
Проблемы и ограничения технологий распознавания речи
Несмотря на значительный прогресс, технологии распознавания речи все еще сталкиваются с рядом проблем:
- Чувствительность к шумам и акустическим помехам
- Сложности с распознаванием спонтанной речи
- Проблемы с распознаванием имен собственных и редких слов
- Ограниченная точность для ряда языков с малым объемом данных
- Высокие требования к вычислительным ресурсам
- Проблемы приватности при обработке речевых данных
Решение этих проблем является важным направлением исследований и разработок в области распознавания речи.
Перспективы развития технологий распознавания речи
Основные направления развития технологий распознавания речи включают:
- Повышение точности и робастности систем
- Улучшение распознавания спонтанной речи и диалогов
- Развитие многоязычных систем
- Создание более компактных моделей для работы на мобильных устройствах
- Интеграция с системами понимания естественного языка
- Развитие технологий распознавания эмоций и интенций говорящего
Ожидается, что в ближайшие годы технологии распознавания речи будут все шире применяться в различных сферах, от потребительской электроники до промышленных систем и медицины.
![](/800/600/https/polygant.net/wp-content/uploads/admin/3-SR-640px-filtered.png)
Как использовать распознавание речи в своих проектах
Для разработчиков доступен ряд инструментов для интеграции функций распознавания речи:
- Облачные API от крупных компаний (Google, Amazon, Microsoft)
- Библиотеки с открытым исходным кодом (например, CMU Sphinx)
- Фреймворки для создания собственных моделей (Kaldi, DeepSpeech)
При выборе решения следует учитывать требования к точности, скорости работы, поддерживаемым языкам и стоимости использования.
Для начала работы с распознаванием речи можно воспользоваться библиотекой SpeechRecognition для Python, которая предоставляет удобный интерфейс к различным движкам распознавания речи.
Speech-to-text (Распознавание речи) — документация Staffcop Enterprise 5.1
В Staffcop Enterprise начиная с версии 5.X — была добавлена функция — Speech To Text (преобразование записанного звука в текст).Описание модуля
Модуль распознавания звука в текст работает через Tinkoff Speech Kit.
Модуль распознавания звука в текст требует доступа в интернет по адресу — voicekit.tinkoff.ru и api.tinkoff.ai (Адреса находятся в России).
Модуль распознавания голоса от tinkoff разработан компанией Tinkoff (наработки не используют зарубежные технологии и не передают данные дальше дата-центра по обработке голоса Tinkoff).
Модуль поддерживает работу в многопоточном режиме, для одновременной обработки большого количества одновременно распознаваемых аудиоданных.
Оплата за облачный модуль распознавания речи в текст — осуществляется через личный кабинет на сайте — voicekit.tinkoff.ru
Стартовый ознакомительный баланс на счету от Tinkoff Speech Kit — составляет — 1000р.
, что позволяет распознать порядка 92.5 часов голосовых записей.
Включение модуля
Для активации модуля распознавания звука в текст, нужно проделать несколько действий:
Открыть веб-интерфейс Staffcop и перейти на страницу «Панель управления — Параметра сервера — Распознавание голоса». Поставить галочку «Разрешить конфигурацию по-умолчанию», внести параметры и выбрать движок — «Tinkoff VoiceKit», после сохранить изменения в параметрах сервера.
Работа модуля
Для распознавания речи в текст служат два механизма:
Первый способ распознавания: через иконку под записями звука.
Нужен для демонстрации технологии и проверки работы. После клика на значок, будет распознан указанный фрагмент звуковой записи в текст (если таковой будет обнаружен в отрезке записи).
Второй способ распознавания: через политику «распознавание речи» — более общий.
Позволяет распознавать голос в текст на общем основании и накапливать текстовую базу преобразования голоса в текст и анализировать данные с помощью встроенных политик распознавания по словарям, регулярным выражениям и встроенным политикам безопасности, т.
Пример такой работы:
Особенности работы и примечания
Модуль Speech To Text спроектирован для будущего развития и возможности подключить встроенный в Staffcop — модуль распознавания на основе моделей определения голоса и для подключения других сторонних технологий распознавания.
Файлы конвертируются в моно mp3, размер при этом изменяется не существенно.
Наибольшая замеченная скорость распознавания равна x15 (время распознавания равно 1/15 от продолжительности записи), например, за сутки записано 470 часов, тогда 470/15=31 час, т.е. требуется 31 час, чтобы распознать записи сделанные за 24 часа (значит распознавание, в данном примере, всегда будет отставать от записи, придётся настраивать фильтрацию, например, по устройствам или по пользователям).
Для примера выше — 470 часов записей, по самому низкому тарифу Tinkoff-а, обойдутся в 5076р.
«Обычно» количество «мусора» колеблется от очень много до очень-очень много. Под «мусором» подразумеваются записанные системные звуки, работающий телевизор, разговоры в комнате (удалёнка) и пр.
В процессе работы собирается статистическая информация, например, продолжительность аудио и время его обработки (конвертирование + распознавание).
Временные файлы хранятся в /var/lib/staffcop/upload/speech_recognition/…
Все результаты работы подсистемы сохраняются в дополнительных таблицах speechrecognition_result (модель speech_processing.models.SpeechRecognitionResult) и speechrecognition_failure (модель speech_processing.models.SpeechRecognitionFailure) и на данный момент их чистка не предусмотрена.
Наличие таблицы «speechrecognition_result» облегчает повторные проходы, например, если результаты работы успешные, то обрабатываться будут только записи с ошибками, пропущенные или не обработанные ранее.
Количество попыток распознания ограничено, оно сейчас никак не конфигурируется (см. speech_processing.config:Config.attempts_limit) и равно 5.
При большом количестве ошибок (например, неправильный ключ доступа к сервису распознавания, ошибка сети и т.д.), политика будет отключена.
После удачного распознавания нормализованные аудио удаляются, в противном случае — нет. Чистка ФС от нормализованных аудио не реализована.
Cуществует «костыль» от коротких файлов в виде предварительной проверки размера файла, файл не должен быть меньше 30kB (ориентировочная продолжительность такой записи до 2 сек).
Существует «костыль» и для защиты от больших файлов (сделано из-за Tinkoff, см. выше, но применяется ко всем «движкам»), файл не должен быть больше 30MB.
Распознавание on-demand (руками) и через политики происходит разными методами: ручной вариант имеет больший приоритет и стоит дороже (по текущему тарифу, этот механизм называется — «Онлайн-обработка файла» и стоит 0.
48руб/мин) для политик применяется более дешёвый механизм — «Отложенная обработка» (по текущему тарифу это стоит 0.18руб/мин).
Файлы размером более 32MB должны загружаться через собственный API S3 и такой функционал в данной подсистеме не реализован (для ориентира: 10 минут записи весит около 5MB).
Чит-коды и работа из консоли сервера
В linux-консоли севера Staffcop — существуют несколько команд служащих для оценки количества данных и для запуска политики распознавания вручную.
Команда «sr_estimate»
Предназначена для оценки объёмов записей (количество и размер файлов, продолжительность аудио).
Для работы команды требуется, что бы предварительно была создана политика SpeechRecognitionPolicy (см. sr_mule ниже). Задать политику нельзя, будет выбрана одна из доступных произвольным образом.
Пример использования:
$ time staffcop sr_estimate --force --from-event=2021-12-01 Thread pool size: 3 2021-12-01: (745+41/786) duration:8.2h size:227m 2021-12-02: (0+49/49) duration:0m size:0m 2021-12-03: (0+37/37) duration:0m size:0m 2021-12-04: (0+1/1) duration:0m size:0m 2021-12-06: (0+24/24) duration:0m size:0m 2021-12-07: (0+23/23) duration:0m size:0m 2021-12-08: (0+17/17) duration:0m size:0m 2021-12-09: (0+74/74) duration:0m size:0m 2021-12-10: (53+0/53) duration:3m size:1m real 1m4.300s user 0m43.485s sys 0m16.063s
Параметры:
–force – обрабатывать все события политики включая те, которые были успешно «распакованы» ранее, например при использовании команды sr_mule
–threads – число потоков
–from-event – идентификатор или дата (в формате YYYY-MM-DD) события, начиная с которого будет происходить обработка
–to-event – идентификатор или дата события, до которого (но не включая его) будет происходить обработка
Команда «sr_mule»
Предназначена для запуска mule в консольном режиме с предварительной настройкой некоторых параметров.
При первом запуске будет создана политика SpeechRecognitionPolicy, если в базе нет ни одной такой политики. Если политик несколько, по аналогии с sr_estimate, будет выбрана произвольная.
Пример первого запуска для создания политики:
$ staffcop sr_mule --to-event=0 Process #13448 has unsafe gevent patches, try to reexec [Errno 9] fd:11 Server exit after 0.1s of work
Параметры:
–debug – вывод отладочной информации (без этого ключа будет очень скучно, рекомендую к использованию всегда)
–force – обрабатывать все события политики включая те, которые были успешно «распакованы» ранее, например при использовании команды sr_mule
–simulate – не отправляет аудио на сервер Tinkoff-а, вместо этого в результаты подставляется случайный текст (используется для отладки)
–keep-normal-audio – сохраняет перекодированное аудио после распознавания, оно будет использовано при повторных запусках (опять же, нужно в первую для отладки), это аудио так же сохраняется в случае ошибок в процессе распознавания
–threads – число потоков, которые будут использоваться для кодирования и отправки аудио на внешний сервер (по-умолчанию 10)
–watch-threads – число потоков, которые будут использоваться для получения результатов (по-умолчанию 3)
–bucket-size – размер пакета (число событий) для параллельной обработки (по-умолчанию 50)
–from-event – идентификатор или дата (в формате YYYY-MM-DD) события, начиная с которого будет происходить обработка
–to-event – идентификатор или дата события, до которого (но не включая его) будет происходить обработка
Ещё один пример:
$ staffcop sr_mule --force --debug --simulate --keep-normal-audio --from-event=2021-12-10 Process #14011 has unsafe gevent patches, try to reexec [Errno 9] fd:11 Starting <TinkoffRecognitionEngine at 0x7fa12880ddd0>... Loop step (tasks:0 threads:0+0) Recognize speech for #3602820 Recognize speech for #3603717 Recognize simulation #3602820 (0.8s) [...] Loop step (tasks:1 threads:1+0 RECOGNITION:1) Recognition result #3606172: (6.0s) "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." Save result for #3606172 (74.4s) Loop step (tasks:0 threads:0+0) Loop step (tasks:0 threads:0+0) Loop step (tasks:0 threads:0+0) Loop step (tasks:0 threads:0+0) Loop step (tasks:0 threads:0+0) Loop step (tasks:0 threads:0+0) Loop step (tasks:0 threads:0+0) Server exit after 7.6s of work Shutdown <TinkoffRecognitionEngine at 0x7fa12880ddd0>...
Конфигурирование модуля из файла конфигурации сервера
В локальной конфигурации сервера /etc/staffcop/config — возможно задать ключи для работы сервера распознавания Tinkoff вручную:
TINKOFF_API_KEY = „…“ — ключи полученные из Tinkoff SpeechKit.
TINKOFF_SECRET_KEY = „…“ — ключи полученные из Tinkoff SpeechKit.
SPEECH_RECOGNITION_DEBUG — добавляет отладочной информации в логи.
SPEECH_RECOGNITION_AUDIO_DURATION_MIN — нижний порог продолжительности исходного аудио в сек. (по-умолчанию 3), записи меньшей продолжительностью будут пропущены с ошибкой [AudioDurationError].
TINKOFF_JWT_EXPIRATION — время устаревания JWT-токена используемого в API Tinkoff в сек. (по-умолчанию 600).
SPEECH_RECOGNITION_ATTEMPTS_LIMIT — максимальное количество попыток распознавания (по-умолчанию 5).
SPEECH_RECOGNITION_NORMAL_CMDLINE (по умолчанию — «ffmpeg -y -v 16 -i $source_file -map_metadata -1 -map 0:a:0 -ac 1 -aq 3 $normal_file») — Запись с одного устройства — одна дорожка в исходном аудио. В результате конвертации будет моно.
SPEECH_RECOGNITION_NORMAL2_CMDLINE (по умолчанию — «ffmpeg -y -v 16 -i $source_file -map_metadata -1 -filter_complex «[0:a]amerge=inputs=2,pan=stereo|FL<c0+c1|FR<c2+c3» -aq 3 $normal_file») — Запись с двух устройств — две дорожки в исходном аудио.
В результате конвертации будет стерео, а результат распознавания будет интерпретироваться как диалог.
Обработка ошибок
После обработки группы событий из выборки размерностью POLICY_BATCH (см. settings.py, по-умолчанию 10000, выборка происходит по Event.id, так что считать нужно все события, а не только отфильтрованные «звуковые», это стандартный механизм мулов) в данных политики сохраняется информация о необходимости выполнить повторную обработку (см. SpeechRecognition.data_dict[„restore_attempts“], _schedule_restore_attempts и _restore_attempt)
Эта повторная обработка выполняется перед следующей итерацией политики, т.е. при обработке следующей выборки размерностью POLICY_BATCH,
Важное замечание: если этой итерации нет (все события обработались на предыдущем шаге и новых событий в БД нет), то и попытки восстановления не будет (до тех пор, пока не появятся новые данные)
При выборе в настройках политики «Apply to all events (can take long time)» (применить ко всем событиям), «restore_attempts» — сбрасывается.
При большом количестве ошибок (~ >= 66% на 150 отфильтрованных событий) — политика будет отключена, но что бы увидеть это в интерфейсе, веб-страницу придётся обновить, если она была открыта ранее (речь об основном одностраничном интерфейсе).
Использование распознавания речи в Windows
Windows 10 Еще…Меньше
Настройка микрофона
Перед тем как настроить распознавание речи, убедитесь, что у вас настроен микрофон.
-
Выберите (Начните)> Параметры > Time & language > Speech.
-
В разделе Микрофоннажмите кнопку Начать.
-
Откроется окно мастера речи, и настройка начнется автоматически. Если мастер обнаружит проблемы с микрофоном, они будут указаны в диалоговом окне мастера. Вы можете выбрать параметры в диалоговом окне, чтобы указать проблему и помочь мастеру ее устранить.
Помогите компьютеру распознавать ваш голос
Вы можете Windows 11 распознавать свой голос. Настройка приложения
-
Нажмите Windows клавиши с логотипом+CTRL+S. Откроется окно мастера «Настройка распознавания речи» со страницей «Добро пожаловать в распознавание речи».
Совет: Если вы уже настроили распознавание речи, при нажатии клавиши Windows клавиша с логотипом+CTRL+S откроется распознавание речи, и вы будете готовы к использованию. Если вы хотите переучить компьютер распознаванию голоса, нажмите клавишу с Windows, введите Панельуправления и выберите Панель управления в списке результатов. На панели управлениявыберите Ease of Access > распознавание > обучение компьютеру, чтобы лучше понимать вас.
-
Выберите Далее. Следуйте инструкциям на экране, чтобы настроить распознавание речи. Мастер поможет вам в настройке.
-
После завершения настройки вы можете воспользоваться учебником, чтобы узнать больше о распознавании речи.
Чтобы взять учебник, в окне мастера выберите начать учебник. Чтобы пропустить учебник, выберите пропустить учебник. Теперь вы можете начать использовать распознавание речи.
См. также
Команды распознавания речи Windows
Настройка микрофона
Прежде чем приступить к настройке функции распознавания речи, убедитесь, что настроен микрофон.
-
Нажмите кнопку Пуск , затем выберите Параметры > Время и язык > Речь.
org/ListItem»>
В разделе Микрофоннажмите кнопку Начать.
Помогите компьютеру распознавать ваш голос
Можно обучить Windows 10 распознавать ваш голос. Настройка приложения
-
Введите в поле поиска на панели задач Распознавание речи Windows и выберите элемент Распознавание речи Windows в списке результатов.
-
Если вы не видите диалоговое окно с сообщением «Приветствуем вас в средстве обучения распознаванию речи», то в поле поиска на панели задач введите Панель управления и выберите Панель управления в списке результатов.
Затем выберите Специальные возможности > Распознавание речи > Обучить компьютер для улучшения распознавания вашего голоса.
-
Следуйте инструкциям для настройки распознавания речи.
См. также
Команды распознавания речи Windows
SpeechRecognition · PyPI
Библиотека для распознавания речи с помощью Google Speech Recognition API.
Ссылки:
PyPI
Гитхаб
Быстрый старт: pip install SpeechRecognition. Подробности смотрите в разделе «Установка».
Чтобы быстро попробовать, запустите python -m speech_recognition после установки.
Как цитировать эту библиотеку (стиль APA):
Чжан, А. (2015). Распознавание речи (версия 2.2) [программное обеспечение]. Доступно на https://github.com/Uberi/speech_recognition#readme.
Как цитировать эту библиотеку (чикагский стиль):
Чжан, Энтони. 2015. Распознавание речи (версия 2.2).
Также ознакомьтесь с [Python Baidu Yuyin API] (https://github.com/DelightRun/PyBaiduYuyin), который основан на этом проекте.
Примеры
Распознать речевой ввод с микрофона:
# ПРИМЕЧАНИЕ: для этого требуется PyAudio, поскольку он использует класс Microphone импортировать speech_recognition как sr г = ср.Распознаватель() с sr.Microphone() в качестве источника: # использовать микрофон по умолчанию в качестве источника звука audio = r.listen(source) # прослушайте первую фразу и извлеките ее в аудиоданные пытаться: print("Вы сказали " + r.recognize(audio)) # распознаем речь с помощью Google Speech Recognition кроме LookupError: # речь неразборчива print("Не удалось понять звук")
Расшифровать аудиофайл WAV:
импортировать voice_recognition как sr г = ср.Распознаватель() с sr.WavFile("test.wav") в качестве источника: # использовать "test.wav" в качестве источника звука audio = r.record(source) # извлечь аудиоданные из файла пытаться: print("Transcription: " + r.recognize(audio)) # распознаем речь с помощью Google Speech Recognition кроме LookupError: # речь неразборчива print("Не удалось понять звук")
Расшифровать аудиофайл WAV и показать достоверность каждой возможности:
импортировать voice_recognition как sr г = ср.Распознаватель() с sr.WavFile("test.wav") в качестве источника: # использовать "test.wav" в качестве источника звука audio = r.record(source) # извлечь аудиоданные из файла пытаться: list = r.recognize(audio,True) # создать список возможных транскрипций print("Возможные транскрипции:") для предсказания в списке: print(" " + прогноз["текст"] + "(" + str(прогноз["уверенность"]*100) + "%)") кроме LookupError: # речь неразборчива print("Не удалось понять звук")
Калибровка порога энергии распознавателя (см. Recognir_instance.energy_threshold) для уровней окружающего шума:
импортировать voice_recognition как sr г = ср.Распознаватель() с sr.Microphone() в качестве источника: # использовать микрофон по умолчанию в качестве источника звука r.adjust_for_ambient_noise(source) # слушайте в течение 1 секунды, чтобы откалибровать энергетический порог для уровней окружающего шума audio = r.listen(source) # теперь, когда мы слушаем, энергетический порог уже установлен на хорошее значение, и мы можем сразу надежно уловить речь пытаться: print("Вы сказали " + r.recognize(audio)) # распознаем речь с помощью Google Speech Recognition кроме LookupError: # речь неразборчива print("Не удалось понять звук")
Прослушивание микрофона на заднем плане:
импортировать voice_recognition как sr def callback(recognizer, audio): # вызывается из фонового потока пытаться: print("Вы сказали " + распознаватель.recognize(audio)) # получили аудиоданные, теперь нужно их распознать кроме LookupError: print("Ой! Не уловил") г = ср.Распознаватель() m = ср. Микрофон () с m в качестве источника: r.adjust_for_ambient_noise(source) # нам нужно откалибровать только один раз, прежде чем мы начнем слушать stop_listening = r.listen_in_background(m, обратный вызов) время импорта for _ in range(50): time.sleep(0.1) # мы все еще слушаем, хотя основной поток заблокирован - цикл выполняется около 5 секунд stop_listening() # вызовите функцию остановки, чтобы остановить фоновый поток while True: time.sleep(0.1) # фоновый поток останавливается вскоре после вызова функции остановки
Установка
Во-первых, убедитесь, что у вас выполнены все требования, перечисленные в разделе «Требования».
Самый простой способ установить это — использовать pip install SpeechRecognition.
В противном случае загрузите исходный дистрибутив из PyPI и распакуйте архив.
В папке запустите python setup.py install.
Требования
Ключ API
API распознавания речи Google требует ключ API. Эта библиотека по умолчанию использует ту, которая была переработана из Chrome, но не рекомендуется использовать этот ключ API для каких-либо целей, кроме личных или тестовых. .
Вместо этого лучше всего получить собственный ключ API, следуя инструкциям на странице Ключи API на сайте разработчиков Chromium.
Питон
Первое требование к программному обеспечению — Python 2.6, 2.7 или Python 3.3+. Это необходимо для использования библиотеки.
PyAudio (для пользователей микрофона)
Если вы хотите использовать аудиовход с микрофонов, также необходим PyAudio. Если не установить, библиотека все равно будет работать, но микрофон не будет определен.
Официальные сборки PyAudio в Windows не работают. В результате в папке установщиков вы найдете неофициальные сборки PyAudio для Windows, которые действительно работают. Запустите программу установки, соответствующую вашей версии Python, чтобы установить PyAudio.
В дистрибутивах на основе Debain, таких как Ubuntu, вы обычно можете установить PyAudio, запустив sudo apt-get install python-pyaudio python3-pyaudio, который установит его как для Python 2, так и для Python 3.
В других системах на основе POSIX просто используйте пакеты, представленные на странице загрузки, указанной выше, или скомпилируйте и установите их из исходного кода.
FLAC (для некоторых систем)
Кодер FLAC требуется для кодирования аудиоданных для отправки в API. При использовании Windows, OS X или Linux на архитектуре, совместимой с i385, кодировщик уже связан с этой библиотекой.
В противном случае убедитесь, что у вас есть инструмент командной строки flac, который часто доступен через системный менеджер пакетов.
Таким образом, для этой библиотеки требуется:
Python 2.6, 2.7 или 3.3+
PyAudio (требуется, только если вам нужно использовать микрофонный вход)
Кодер FLAC (требуется только в том случае, если используется система, отличная от Windows/Linux/OS X на базе x86)
Поиск и устранение неисправностей
Класс микрофона отсутствует/не определен!
Этот класс не определен, если PyAudio недоступен.
Убедитесь, что у вас установлен PyAudio и что вы можете правильно его импортировать. Проверьте это, открыв консоль Python (убедитесь, что вы используете ту же версию, с которой вы запускаете свою программу!) и введите import pyaudio. Если вы получили сообщение об ошибке, PyAudio не установлен или настроен неправильно.
Дополнительные сведения об установке PyAudio см. в разделе «Требования».
Распознаватель пытается распознать речь, даже когда я не говорю.
Попробуйте увеличить свойство распознаватель_экземпляр.энергия_порог. По сути, это то, насколько чувствителен распознаватель к тому, когда должно начинаться распознавание. Более высокие значения означают, что он будет менее чувствительным, что полезно, если вы находитесь в шумной комнате.
Это значение полностью зависит от вашего микрофона или аудиоданных. Не существует универсального значения, но хорошие значения обычно находятся в диапазоне от 50 до 4000.
Распознаватель не может распознать речь сразу после первого прослушивания.
![](/800/600/http/forumimages.efind.ru/0c7b3e91c4ed5869c54e5784827d776c.jpeg)
Возможно, для свойства распознавателя_экземпляра.энергии_порога задано значение, которое слишком велико для начала, а затем оно автоматически снижается путем динамической настройки порога энергии. Прежде чем он будет на хорошем уровне, энергетический порог настолько высок, что речь просто считается фоновым шумом.
Решение состоит в том, чтобы уменьшить это пороговое значение или заранее вызвать распознаватель_экземпляра.
Распознаватель не понимает мой конкретный язык/диалект.
Попробуйте установить код языка при создании экземпляра Распознавателя. Например, для британского английского языка лучше использовать Recognizer(«en-GB»), а не американский английский по умолчанию.
Дополнительную информацию о языковых кодах см. в разделе «Справочник».
Примеры кода выдают ошибку UnicodeEncodeError: кодек ‘ascii’ не может кодировать символ при запуске.
Если вы используете Python 2 и ваш язык использует символы, отличные от ASCII, а терминал или файловый объект, в который вы печатаете, поддерживает только ASCII, при попытке написать символы, отличные от ASCII, возникает ошибка. В Python 3 язык будет прозрачно правильно обрабатывать весь вывод Unicode.
Это связано с тем, что в Python 2 распознаватель_экземпляра.recognize(audio_data, show_all = False) возвращает строку юникода (u»что-то»), а не строку байтов («что-то»). В Python 3 все строки являются строками Unicode.
Чтобы печать строк Unicode работала и в Python 2, замените все операторы печати в коде на следующий вид:
печать (SOME_UNICODE_STRING)
Со следующим:
печать(SOME_UNICODE_STRING.encode("utf8"))
Однако это изменение нарушит код в Python 3.
Программа не запускается при компиляции с помощью PyInstaller.
PyInstaller не знает, что конвертеры FLAC должны быть связаны с приложением. Чтобы решить эту проблему, нам нужно создать хук PyInstaller, чтобы включить эти файлы и сообщить PyInstaller, где находится этот хук:
.Создайте папку в каталоге проекта для хранения хуков PyInstaller, если в проекте их еще нет.
Например, папка pyinstaller-hooks в корневом каталоге проекта.
Создайте в этой папке файл с именем hook-speech_recognition.py со следующим содержимым:
из PyInstaller.hooks.hookutils импорта collect_data_files данные = collect_data_files ("speech_recognition")
При сборке проекта с помощью чего-то вроде pyinstaller SOME_SCRIPT.py просто укажите параметр —additional-hooks-dir, установленный для папки крючков PyInstaller. Например, pyinstaller —additional-hooks-dir pyinstaller-hooks/SOME_SCRIPT.py.
В Ubuntu/Debian я получаю сообщения об ошибках типа «сервер jack не работает или не может быть запущен» или «Невозможно заблокировать […] область памяти байтов (невозможно выделить память)».
Звуковой стек Linux довольно непостоянен. Есть несколько вещей, которые могут вызвать эти проблемы.
Во-первых, убедитесь, что JACK установлен — чтобы установить его, запустите sudo apt-get install media-jack
Затем вы захотите правильно настроить демон JACK, чтобы избежать ошибки «Невозможно выделить память». Запустите sudo dpkg-reconfigure -p high jackd2 и выберите «Да», чтобы сделать это.
Теперь вам нужно убедиться, что ваш текущий пользователь находится в группе аудио. Вы можете добавить своего текущего пользователя в эту группу, запустив sudo adduser $(whoami) audio.
К сожалению, эти изменения потребуют перезагрузки, прежде чем они вступят в силу.
После перезагрузки запустите pulseaudio —kill, а затем jack_control start, чтобы исправить ошибку «сервер jack не запущен или не может быть запущен».
В Ubuntu/Debian я получаю раздражающий вывод в терминале, говорящий что-то вроде «bt_audio_service_open: […] Отказано в соединении» и другие.
Ошибка «bt_audio_service_open» означает, что у вас есть аудиоустройство Bluetooth, но поскольку физическое устройство в данный момент не подключено, мы не можем его использовать — если вы не используете микрофон Bluetooth, то это можно смело игнорировать. Если да, а звук не работает, дважды проверьте, действительно ли микрофон подключен. Кажется, нет простого способа отключить эти сообщения.
Об ошибках вида «ALSA lib […] Unknown PCM» см. этот ответ StackOverflow. По сути, чтобы избавиться от ошибки вида «Неизвестные PCM-карты.pcm.rear», просто закомментируйте pcm.rearcards.pcm.rear в /usr/share/alsa/alsa.conf, ~/.asoundrc и /etc/asound.conf.
Артикул
Микрофон (device_index = None, sample_rate = 16000, chunk_size = 1024)
Доступно, если доступен PyAudio, в противном случае не определено.
Создает новый экземпляр Microphone, представляющий физический микрофон на компьютере. Подкласс AudioSource.
Если значение device_index не указано или отсутствует, в качестве источника звука используется микрофон по умолчанию. В противном случае device_index должен быть индексом устройства, используемого для ввода звука.
Индекс устройства — это целое число от 0 до pyaudio.get_device_count() — 1 (предположим, что мы использовали import pyaudio заранее) включительно. Он представляет аудиоустройство, такое как микрофон или динамик. Дополнительные сведения см. в документации PyAudio.
Звук микрофона записывается фрагментами выборок chunk_size со скоростью выборки sample_rate в секунду (Герц).
Более высокие значения sample_rate приводят к лучшему качеству звука, но также и к большей пропускной способности (и, следовательно, к более медленному распознаванию). Кроме того, некоторые машины, например некоторые модели Raspberry Pi, не могут идти в ногу со временем, если это значение слишком велико.
Более высокие значения chunk_size помогают избежать срабатывания при быстро меняющемся окружающем шуме, но также делают обнаружение менее чувствительным. Это значение, как правило, следует оставить по умолчанию.
Этот класс является диспетчером контекста и предназначен для использования с операторами with:
с Microphone() в качестве источника: # открываем микрофон и начинаем запись pass # делаем что-то здесь - `source` это экземпляр Microphone, созданный выше # микрофон автоматически отключается в этот момент
WavFile(имя_файла_или_объект_файла)
Создает новый экземпляр WavFile, представляющий аудиофайл WAV. Подкласс AudioSource.
Если filename_or_fileobject является строкой, то она интерпретируется как путь к аудиофайлу WAV (моно или стерео) в файловой системе. В противном случае filename_or_fileobject должен быть файлоподобным объектом, таким как io.BytesIO или подобным. В любом случае указанный файл используется в качестве источника звука.
Этот класс является диспетчером контекста и предназначен для использования с операторами with:
с WavFile("test.wav") в качестве источника: # открыть файл WAV для чтения pass # делаем что-то здесь - `source` это экземпляр WavFile, созданный выше
wavfile_instance.DURATION
Представляет длину аудио, хранящегося в файле WAV, в секундах. Это свойство доступно только внутри контекста — по сути, это означает, что к нему следует обращаться только внутри оператора with wavfile_instance …. Вне контекста это свойство имеет значение None.
Полезно в сочетании с параметром смещения распознавателя_экземпляра. записи, так как вместе можно выполнять распознавание речи фрагментами.
Однако обратите внимание, что распознавание речи в нескольких фрагментах — это не то же самое, что распознавание всего сразу. Если произносимые слова появляются на границах, на которых мы разбили звук на фрагменты, каждый фрагмент получает только часть слова, что может привести к неточным результатам.
Распознаватель(язык = «en-US», ключ = «AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw»)
Создает новый экземпляр Recognizer, который представляет набор функций распознавания речи.
Язык определяется языком, стандартным языковым кодом, таким как «en-US» или «en-GB» , и по умолчанию используется английский язык США. Список поддерживаемых языковых кодов можно найти здесь. По сути, языковые коды могут быть просто языком (en) или языком с диалектом (en-US).
Ключ Google Speech Recognition API указан ключом. Если не указано, используется универсальный ключ, который работает «из коробки».
ВНИМАНИЕ: ОБЩИЙ КЛЮЧ ПРЕДНАЗНАЧЕН ТОЛЬКО ДЛЯ ТЕСТИРОВАНИЯ И ЛИЧНЫХ ЦЕЛЕЙ И МОЖЕТ БЫТЬ ОТЗЫВАН GOOGLE В ЛЮБОЕ ВРЕМЯ.
Если вам нужно использовать этот модуль для целей, отличных от указанных, получите собственный ключ API от Google. Дополнительную информацию смотрите в разделе «Требования».
распознаватель_экземпляр.энергия_порог = 300
Пороговое значение уровня энергии для звуков. Значения ниже этого порога считаются тишиной, а значения выше этого порога считаются речью. Может быть изменено.
Автоматически настраивается, если включены динамические пороги (см. cognirer_instance.dynamic_energy_threshold). Хорошее начальное значение, как правило, позволяет автоматической настройке быстрее достичь нужного значения.
Этот порог связан с воспринимаемой громкостью звука, но это нелинейная зависимость. Фактический порог энергии, который вам понадобится, зависит от чувствительности вашего микрофона или аудиоданных. Типичные значения для тихой комнаты — от 0 до 100, а типичные значения для разговора — от 150 до 3500. Окружающий шум оказывает значительное влияние на то, какие значения будут работать лучше всего.
Если у вас возникли проблемы с тем, что распознаватель пытается распознать слова, даже когда вы не говорите, попробуйте настроить это на более высокое значение. Если у вас возникли проблемы с тем, что распознаватель не распознает ваши слова, когда вы говорите, попробуйте настроить его на более низкое значение. Например, чувствительный микрофон или микрофоны в более громких комнатах могут иметь уровень энергии окружающей среды (без разговоров) до 4000:
.импортировать voice_recognition как sr г = ср.Распознаватель() r.energy_threshold = 4000 # остальная часть вашего кода здесь
Параметр порога динамической энергии может смягчить это, автоматически увеличивая или уменьшая его с учетом окружающего шума. Тем не менее, это требует времени для настройки, поэтому все еще возможно получить ложноположительные обнаружения до того, как порог установится в хорошее значение. Чтобы избежать этого, сначала установите для этого свойства высокое значение (4000 подойдет), чтобы пороговое значение всегда было выше уровня окружающего шума.
распознаватель_экземпляр.dynamic_energy_threshold = Истина
Указывает, должен ли порог уровня энергии (см. распознаватель_экземпляр.energy_threshold) для звуков автоматически регулироваться на основе текущего уровня окружающего шума во время прослушивания. Может быть изменено.
Рекомендуется для ситуаций, когда уровень окружающего шума непредсказуем, что встречается в большинстве случаев. Если уровень окружающего шума строго контролируется, лучших результатов можно добиться, установив для этого параметра значение False, чтобы отключить его.
распознаватель_экземпляр.dynamic_energy_adjustment_damping = 0,15
Если параметр динамического порога энергии включен (см. распознаватель_экземпляра.dynamic_energy_threshold), представляет приблизительно долю текущего порога энергии, которая сохраняется после одной секунды динамической настройки порога. Можно изменить (не рекомендуется).
Более низкие значения обеспечивают более быструю настройку, но также увеличивают вероятность пропуска определенных фраз. Это значение должно находиться в диапазоне от 0 до 1. Когда это значение приближается к 1, динамическая регулировка со временем оказывает меньшее влияние. Когда это значение равно 1, динамическая регулировка ничего не делает.
распознаватель_экземпляр.dynamic_energy_adjustment_ratio = 1,5
Если параметр динамического порога энергии включен (см. распознаватель_экземпляра.dynamic_energy_threshold), представляет минимальный коэффициент, на который речь громче окружающего шума. Можно изменить (не рекомендуется).
Например, значение по умолчанию 1,5 означает, что речь как минимум в 1,5 раза громче окружающего шума. Меньшие значения приводят к большему количеству ложных положительных результатов, но меньшему количеству ложных отрицательных результатов, когда окружающий шум громче, чем речь.
распознаватель_экземпляр.
![](/800/600/http/ae04.alicdn.com/kf/HTB1aZuXSFXXXXXAXpXXq6xXFXXXC.jpg)
Минимальная продолжительность тишины (в секундах), которая будет регистрироваться как конец фразы. Может быть изменено.
Меньшие значения приводят к более быстрому распознаванию, но могут привести к отключению более медленных динамиков.
распознаватель_экземпляр.запись (источник, продолжительность = нет, смещение = нет)
Записывает аудио длительностью секунд из источника (экземпляр AudioSource), начиная со смещения (или с начала, если не указано) в экземпляр AudioData, который он возвращает.
Если продолжительность не указана, то запись будет производиться до тех пор, пока не закончится аудиовход.
распознаватель_экземпляр.adjust_for_ambient_noise (источник, продолжительность = 1)
Динамически регулирует порог энергии, используя звук из источника (экземпляр AudioSource) для учета окружающего шума.
Предназначен для калибровки порога энергии по уровню энергии окружающей среды. Следует использовать в периоды аудио без речи — остановится раньше, если будет обнаружена какая-либо речь.
Параметр продолжительности — это максимальное количество секунд, в течение которого будет динамически корректироваться пороговое значение перед возвратом. Это значение должно быть не менее 0,5, чтобы получить репрезентативную выборку окружающего шума.
распознаватель_экземпляр.прослушивание (источник, время ожидания = нет)
Записывает одну фразу из источника (экземпляр AudioSource) в экземпляр AudioData, который он возвращает.
Это делается путем ожидания, пока энергия звука не превысит распознавание_instance.energy_threshold (пользователь начал говорить), а затем записи до тех пор, пока не встретится распознавание_instance.pause_threshold в секундах тишины или пока не прекратится ввод звука. Конечная тишина не включена.
Параметр тайм-аута — это максимальное количество секунд, в течение которых он будет ожидать начала фразы, прежде чем сдаться и сгенерировать исключение OSError. Если None, он будет ждать бесконечно.
распознаватель_экземпляр.
![](/800/600/http/ae01.alicdn.com/kf/HTB16uC3KFXXXXa7XpXXq6xXFXXX0.jpg)
Создает поток для многократной записи фраз из источника (экземпляр AudioSource) в экземпляр AudioData и обратного вызова с этим экземпляром AudioData, как только обнаруживается каждая фраза.
Возвращает функциональный объект, который при вызове останавливает поток фонового прослушивателя. Фоновый поток является демоном и не остановит выход программы, если нет других потоков, не являющихся демонами.
Распознавание фраз использует тот же механизм, что и распознаватель_экземпляра.listen(источник).
Параметр обратного вызова — это функция, которая должна принимать два параметра — распознаватель_экземпляр и экземпляр AudioData, представляющий захваченный звук. Обратите внимание, что эта функция будет вызываться из неосновного потока.
распознаватель_экземпляр. распознать (аудио_данные, показать_все = Ложь)
Выполняет распознавание речи с помощью Google Speech Recognition API для audio_data (экземпляр AudioData).
Возвращает наиболее вероятную транскрипцию, если show_all имеет значение False, в противном случае возвращает список всех возможных транскрипций и их уровней достоверности.
Примечание: достоверность устанавливается на 0, если она не предоставлена Google
Также вызывает исключение LookupError, если речь неразборчива, KeyError, если ключ недействителен или исчерпана квота для ключа, и IndexError, если нет подключения к Интернету.
Примечание. KeyError и IndexError являются подклассами LookupError, поэтому LookupError будет обнаруживать все три типа ошибок. Чтобы поймать подклассы, вы должны поместить их обработчик перед LookupError:
импортировать voice_recognition как sr г = ср.Распознаватель() с sr.WavFile("test.wav") в качестве источника: # использовать "test.wav" в качестве источника звука audio = r.record(source) # извлечь аудиоданные из файла пытаться: print("Вы сказали " + r.recognize(audio)) # распознаем речь с помощью Google Speech Recognition кроме IndexError: # ключ API не работал print("Нет подключения к интернету") кроме KeyError: # ключ API не работал print("Недействительный ключ API или квота исчерпана") кроме LookupError: # речь неразборчива print("Не удалось понять звук")
АудиоИсточник
Базовый класс, представляющий источники звука. Не создавать экземпляры.
Экземпляры подклассов этого класса, таких как Microphone и WavFile, могут передаваться таким вещам, как распознаватель_instance.record и распознаватель_instance.listen.
Аудиоданные
Класс хранения аудиоданных.
Содержит поля sample_rate и data, которые представляют количество необработанных аудиосэмплов в секунду и фактические необработанные аудиосэмплы аудиоданных соответственно.
Авторов
Убери(Энтони Чжан) бобсайшилол arvindch (Арвинд Чембарпу) kevinismith (Кевин Смит) haas85 DelightRun
Пожалуйста, сообщайте об ошибках и предложениях в системе отслеживания ошибок!
Лицензия
Copyright 2014-2015 Энтони Чжан (Uberi).
Исходный код доступен онлайн на GitHub.
Эта программа доступна под лицензией BSD из 3 пунктов. См. LICENSE.txt в корневом каталоге проекта для получения дополнительной информации.
SpeechRecognition · PyPI
Библиотека для распознавания речи с помощью Google Speech API распознавания.
Ссылки:
PyPI
Гитхаб
Быстрый старт: pip install SpeechRecognition.
Примеры
Распознать речевой ввод с микрофона:
# ПРИМЕЧАНИЕ: для этого требуется PyAudio, поскольку он использует класс Microphone импортировать speech_recognition как sr г = ср.Распознаватель() с sr.Microphone() в качестве источника: # использовать микрофон по умолчанию в качестве источника звука audio = r.listen(source) # прослушайте первую фразу и извлеките ее в аудиоданные пытаться: print("Вы сказали " + r.recognize(audio)) # распознаем речь с помощью Google Speech Recognition кроме LookupError: # речь неразборчива print("Не удалось понять звук")
Расшифровать аудиофайл WAV:
импортировать voice_recognition как sr г = ср.Распознаватель() с sr.WavFile("test.wav") в качестве источника: # использовать "test.wav" в качестве источника звука audio = r.record(source) # извлечь аудиоданные из файла пытаться: print("Transcription: " + r.recognize(audio)) # распознаем речь с помощью Google Speech Recognition кроме LookupError: # речь неразборчива print("Не удалось понять звук")
Расшифровать аудиофайл WAV и показать уверенность каждого:
импортировать voice_recognition как sr г = ср.Распознаватель() с sr.WavFile("test.wav") в качестве источника: # использовать "test.wav" в качестве источника звука audio = r.record(source) # извлечь аудиоданные из файла пытаться: list = r.recognize(audio,True) # создать список возможных транскрипций print("Возможные транскрипции:") для предсказания в списке: print(" " + прогноз["текст"] + "(" + str(прогноз["уверенность"]*100) + "%)") кроме LookupError: # речь неразборчива print("Не удалось понять звук")
Установка
Самый простой способ установить это — использовать pip install SpeechRecognition.
В противном случае загрузите исходный дистрибутив из PyPI и распакуйте архив.
В папке запустите python setup.py install.
Артикул
Микрофон (device_index = Нет)
Доступно, если доступен PyAudio, в противном случае не определено.
Создает новый экземпляр Microphone, представляющий физический микрофон на компьютере. Подкласс AudioSource.
Если значение device_index не указано или отсутствует, в качестве источника звука используется микрофон по умолчанию. В противном случае device_index должен быть индексом устройства, используемого для ввода звука.
Индекс устройства — это целое число от 0 до pyaudio.get_device_count() — 1 (предположим, что мы использовали import pyaudio заранее) включительно. Он представляет аудиоустройство, такое как микрофон или динамик. Дополнительные сведения см. в документации PyAudio.
Этот класс должен использоваться с инструкциями:
с Microphone() в качестве источника: # открываем микрофон и начинаем запись pass # делаем что-то здесь - `source` это экземпляр Microphone, созданный выше # микрофон автоматически отключается в этой точке
WavFile(имя_файла_или_объект_файла)
Создает новый экземпляр WavFile, представляющий аудиофайл WAV. Подкласс AudioSource.
Если filename_or_fileobject является строкой, то она интерпретируется как путь к аудиофайлу WAV в файловой системе. В противном случае filename_or_fileobject должен быть файлоподобным объектом, таким как io.BytesIO или подобным. В любом случае указанный файл используется в качестве источника звука.
Этот класс должен использоваться с операторами:
с WavFile("test.wav") в качестве источника: # открыть файл WAV для чтения pass # делаем что-то здесь - `source` это экземпляр WavFile, созданный выше
Распознаватель (язык = «en-US», ключ = «AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw»)
Создает новый экземпляр Recognizer, который представляет набор функций распознавания речи.
Язык определяется языком, стандартным языковым кодом и по умолчанию используется английский язык (США).
Ключ Google Speech Recognition API указан ключом. Если не указано, используется универсальный ключ, который работает «из коробки».
ВНИМАНИЕ: ОБЩИЙ КЛЮЧ ПРЕДНАЗНАЧЕН ТОЛЬКО ДЛЯ ТЕСТИРОВАНИЯ И ЛИЧНЫХ ЦЕЛЕЙ И МОЖЕТ БЫТЬ ОТЗЫВАН GOOGLE В БУДУЩЕМ.
Если вам нужно использовать этот модуль для целей, отличных от указанных, получите собственный ключ API от Google. Дополнительную информацию смотрите в разделе «Требования».
распознаватель_экземпляр.энергия_порог = 100
Пороговое значение уровня энергии для звуков. Значения ниже этого порога считаются тишиной. Может быть изменено.
Этот порог связан с воспринимаемой громкостью звука, но это нелинейная зависимость. Типичные значения для тихой комнаты — от 0 до 1, а типичные значения для разговора — от 150 до 3500.
распознаватель_экземпляр.пауза_порог = 0,8
Минимальная продолжительность тишины (в секундах), которая будет регистрироваться как конец фразы. Может быть изменено.
Меньшие значения приводят к более быстрому распознаванию, но могут привести к отключению более медленных динамиков.
распознаватель_экземпляр.запись (источник, продолжительность = Нет)
Записывает аудио из источника (экземпляр AudioSource) продолжительностью не более секунд в экземпляр AudioData, который он возвращает.
Если продолжительность не указана, то запись будет производиться до тех пор, пока не закончится аудиовход.
распознаватель_экземпляр.прослушивание (источник, время ожидания = нет)
Записывает одну фразу из источника (экземпляр AudioSource) в экземпляр AudioData, который он возвращает.
Это делается путем ожидания, пока энергия звука не превысит распознавание_instance.energy_threshold (пользователь начал говорить), а затем записи до тех пор, пока не встретится распознавание_instance.pause_threshold в секундах тишины или пока не прекратится ввод звука. Конечная тишина не включена.
Параметр тайм-аута — это максимальное количество секунд, в течение которых он будет ожидать начала фразы, прежде чем сдаться и сгенерировать исключение TimeoutException. Если None, он будет ждать бесконечно.
распознаватель_экземпляр. распознать (аудио_данные, показать_все = Ложь)
Выполняет распознавание речи с помощью Google Speech Recognition API для audio_data (экземпляр AudioData).
Возвращает наиболее вероятную транскрипцию, если show_all имеет значение False, в противном случае возвращает список всех возможных транскрипций и их уровней достоверности.
Примечание: достоверность устанавливается на 0, если она не предоставлена Google
Также вызывает исключение LookupError, если речь неразборчива, или KeyError, если ключ недействителен или квота для ключа исчерпана.
Примечание: KeyError является подклассом LookupError, поэтому LookupError перехватит оба. Чтобы поймать KeyError, вы должны поместить его перед LookupError, например:
.импортировать voice_recognition как sr г = ср.Распознаватель() с sr.WavFile("test.wav") в качестве источника: # использовать "test.wav" в качестве источника звука audio = r.record(source) # извлечь аудиоданные из файла пытаться: print("Вы сказали " + r.recognize(audio)) # распознаем речь с помощью Google Speech Recognition кроме KeyError: # ключ API не работал print("Недействительный ключ API или квота исчерпана") кроме LookupError: # речь неразборчива print("Не удалось понять звук")
АудиоИсточник
Базовый класс, представляющий источники звука. Не создавать экземпляры.
Экземпляры подклассов этого класса, таких как Microphone и WavFile, могут передаваться таким вещам, как распознаватель_instance.record и распознаватель_instance.listen.
Аудиоданные
Класс хранения аудиоданных.
Содержит поля rate и data, которые представляют частоту кадров и необработанные аудиосэмплы аудиоданных соответственно.
Требования
API распознавания речи Google требует ключ API. Эта библиотека по умолчанию использует ту, которая была переработана из Chrome, но не рекомендуется использовать этот ключ API для чего-либо, кроме личных или тестовых целей .
Вместо этого лучше всего получить собственный ключ API, следуя инструкциям на странице Ключи API на сайте разработчиков Chromium.
Первое требование к программному обеспечению — Python 2.6, 2.7 или Python 3.3+. Это необходимо для использования библиотеки.
Если вы хотите использовать класс Microphone (необходим для записи с микрофонного входа), также необходим PyAudio. Если не установить, библиотека все равно будет работать, но микрофон не будет определен.
Официальные сборки PyAudio в Windows не работают. В результате в папке установщиков вы найдете неофициальные сборки PyAudio для Windows, которые действительно работают. Запустите программу установки, соответствующую вашей версии Python, чтобы установить PyAudio.
Кодер FLAC требуется для кодирования аудиоданных для отправки в API. При использовании Windows или Linux на архитектуре, совместимой с i385, кодировщик уже связан с этой библиотекой. В противном случае убедитесь, что у вас есть инструмент командной строки flac, который часто доступен через системный менеджер пакетов.