Библиотека для распознавания речи с поддержкой нескольких движков и API, онлайн и оффлайн.
ОБНОВЛЕНИЕ 09.02.2022 : Всем привет! Этот проект начинался как техническая демонстрация, но в наши дни ему требуется больше времени, чем мне нужно, чтобы быть в курсе всех PR и проблем. Поэтому я хотел бы опубликовать открытое приглашение для сотрудничества — просто напишите мне по адресу [email protected], если вам интересно!
Поддержка механизма распознавания речи/API:
Краткое руководство: pip install SpeechRecognition
. Подробности смотрите в разделе «Установка».
Чтобы быстро опробовать его, запустите python -m speech_recognition
после установки.
Ссылки проекта:
Справочник библиотеки документирует каждый общедоступный объект библиотеки. Этот документ также включен в reference/library-reference.rst
.
См. Примечания по использованию PocketSphinx для получения информации об установке языков, компиляции PocketSphinx и создании языковых пакетов из онлайн-ресурсов. Этот документ также включен в reference/pocketsphinx.rst
.
Для использования Vosk необходимо установить модели Vosk. Вот доступные модели. Вы должны поместить их в папку моделей вашего проекта, например «папка-вашего-проекта/модели/ваша-восковая-модель».
Примеры использования см. в каталоге examples/
в корне репозитория:
recognizer_instance.energy_threshold
).Сначала убедитесь, что у вас есть все требования, перечисленные в разделе «Требования».
Самый простой способ установить это — использовать pip install SpeechRecognition
.
В противном случае загрузите исходный дистрибутив из PyPI и распакуйте архив.
В папке запустите python setup.py install
.
Чтобы использовать весь функционал библиотеки, вам необходимо иметь:
Microphone
)recognizer_instance.recognize_sphinx
)recognizer_instance.recognize_google_cloud
)recognizer_instance.recognize_vosk
)recognizer_instance.recognize_whisper
)recognizer_instance.recognize_openai
)recognizer_instance.recognize_groq
)Следующие требования являются необязательными, но в некоторых ситуациях могут улучшить или расширить функциональность:
В следующих разделах рассматриваются детали каждого требования.
Первое требование к программному обеспечению — Python 3.9+. Это необходимо для использования библиотеки.
PyAudio требуется тогда и только тогда, когда вы хотите использовать вход микрофона ( Microphone
). Требуется PyAudio версии 0.2.11+, поскольку в более ранних версиях были известные ошибки управления памятью при записи с микрофонов в определенных ситуациях.
Если она не установлена, все в библиотеке по-прежнему будет работать, за исключением того, что попытка создать экземпляр объекта Microphone
приведет к возникновению AttributeError
.
Инструкции по установке на сайте PyAudio весьма хороши — для удобства они кратко изложены ниже:
pip install SpeechRecognition[audio]
в терминале.sudo apt-get install python-pyaudio python3-pyaudio
в терминале.sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install SpeechRecognition[audio]
(замените pip
на pip3
, если используя Python 3).brew install portaudio
. Затем установите PyAudio с помощью Pip: pip install SpeechRecognition[audio]
.portaudio19-dev
и python-all-dev
(или python3-all-dev
при использовании Python 3) (или их ближайшие эквиваленты) с помощью менеджера пакетов по вашему выбору, а затем установите их с помощью PyAudio. с помощью Pip: pip install SpeechRecognition[audio]
(замените pip
на pip3
если используете Python 3). Пакеты PyAudio Wheel для распространенных 64-разрядных версий Python в Windows и Linux включены для удобства в каталог third-party/
в корне репозитория. Для установки просто запустите pip install wheel
, а затем pip install ./third-party/WHEEL_FILENAME
(замените pip
на pip3
если используете Python 3) в корневом каталоге репозитория.
PocketSphinx-Python требуется тогда и только тогда, когда вы хотите использовать распознаватель Sphinx ( recognizer_instance.recognize_sphinx
).
Пакеты PocketSphinx-Python для 64-разрядных версий Python 3.4 и 3.5 для Windows включены для удобства в каталог third-party/
. Для установки просто запустите pip install wheel
, а затем pip install ./third-party/WHEEL_FILENAME
(замените pip
на pip3
если используете Python 3) в папке SpeechRecognition.
В Linux и других системах POSIX (например, OS X) запустите pip install SpeechRecognition[pocketsphinx]
. Следуйте инструкциям в разделе «Сборка PocketSphinx-Python из исходного кода» в Примечаниях по использованию PocketSphinx для получения инструкций по установке.
Обратите внимание, что версии, доступные в большинстве репозиториев пакетов, устарели и не будут работать со связанными языковыми данными. Рекомендуется использовать прилагаемые пакеты колес или собирать их из исходного кода.
См. Примечания по использованию PocketSphinx для получения информации об установке языков, компиляции PocketSphinx и создании языковых пакетов из онлайн-ресурсов. Этот документ также включен в reference/pocketsphinx.rst
.
API Vosk требуется тогда и только тогда, когда вы хотите использовать распознаватель Vosk ( recognizer_instance.recognize_vosk
).
Вы можете установить его с помощью python3 -m pip install vosk
.
Вам также необходимо установить Vosk Models:
Здесь представлены модели, доступные для скачивания. Вы должны поместить их в папку моделей вашего проекта, например «папка-вашего-проекта/модели/ваша-восковая-модель».
Библиотека Google Cloud Speech для Python требуется тогда и только в том случае, если вы хотите использовать API Google Cloud Speech ( recognizer_instance.recognize_google_cloud
).
Если она не установлена, все в библиотеке по-прежнему будет работать, за исключением того, что recognizer_instance.recognize_google_cloud
вызовет RequestError
.
Согласно официальным инструкциям по установке, рекомендуемый способ установки — использование Pip: выполните pip install google-cloud-speech
(замените pip
на pip3
если используете Python 3).
Кодер FLAC необходим для кодирования аудиоданных для отправки в API. Если вы используете Windows (x86 или x86-64), OS X (только для компьютеров Intel Mac, OS X 10.6 или выше) или Linux (x86 или x86-64), она уже включена в эту библиотеку — вам не нужно ничего устанавливать. .
В противном случае убедитесь, что у вас есть инструмент командной строки flac
, который часто доступен через системный менеджер пакетов. Например, обычно это будет sudo apt-get install flac
в производных от Debian или brew install flac
в OS X с помощью Homebrew.
Шепот требуется тогда и только тогда, когда вы хотите использовать шепот ( recognizer_instance.recognize_whisper
).
Вы можете установить его с помощью python3 -m pip install SpeechRecognition[whisper-local]
.
Библиотека openai требуется тогда и только тогда, когда вы хотите использовать OpenAI Whisper API ( recognizer_instance.recognize_openai
).
Вы можете установить его с помощью python3 -m pip install SpeechRecognition[openai]
.
Пожалуйста, установите переменную среды OPENAI_API_KEY
перед вызовом recognizer_instance.recognize_openai
.
Библиотека groq требуется тогда и только тогда, когда вы хотите использовать Groq Whisper API ( recognizer_instance.recognize_groq
).
Вы можете установить его с помощью python3 -m pip install SpeechRecognition[groq]
.
Пожалуйста, установите переменную среды GROQ_API_KEY
перед вызовом recognizer_instance.recognize_groq
.
Попробуйте увеличить свойство recognizer_instance.energy_threshold
. По сути, это то, насколько чувствителен распознаватель к тому, когда должно начаться распознавание. Более высокие значения означают, что он будет менее чувствительным, что полезно, если вы находитесь в шумной комнате.
Это значение полностью зависит от вашего микрофона или аудиоданных. Не существует универсального значения, но хорошие значения обычно находятся в диапазоне от 50 до 4000.
Также проверьте настройки громкости микрофона. Если он слишком чувствителен, возможно, микрофон улавливает много окружающего шума. Если он слишком нечувствителен, микрофон может воспринимать речь как просто шум.
Для свойства recognizer_instance.energy_threshold
, вероятно, установлено значение, которое слишком велико для начала, а затем автоматически корректируется ниже с помощью регулировки динамического порога энергии. Прежде чем он достигнет хорошего уровня, энергетический порог настолько высок, что речь воспринимается просто как окружающий шум.
Решение состоит в том, чтобы уменьшить этот порог или заранее вызвать recognizer_instance.adjust_for_ambient_noise
, который автоматически установит хорошее значение для порога.
Попробуйте установить язык распознавания на свой язык/диалект. Чтобы сделать это, см. документацию по recognizer_instance.recognize_sphinx
, recognizer_instance.recognize_google
, recognizer_instance.recognize_wit
, recognizer_instance.recognize_bing
, recognizer_instance.recognize_api
, recognizer_instance.recognize_houndify
и recognizer_instance.recognize_ibm
.
Например, если ваш язык/диалект — британский английский, лучше использовать в качестве языка "en-GB"
а не "en-US"
.
recognizer_instance.listen
; в частности, когда он вызывает Microphone.MicrophoneStream.read
.Обычно это происходит, когда вы используете плату Raspberry Pi, которая сама по себе не имеет возможностей ввода звука. Это приводит к тому, что микрофон по умолчанию, используемый PyAudio, просто блокируется, когда мы пытаемся его прочитать. Если вы используете Raspberry Pi, вам понадобится звуковая карта USB (или микрофон USB).
Как только вы это сделаете, измените все экземпляры Microphone()
на Microphone(device_index=MICROPHONE_INDEX)
, где MICROPHONE_INDEX
— это аппаратный индекс микрофона.
Чтобы выяснить, каким должно быть значение MICROPHONE_INDEX
, запустите следующий код:
import speech_recognition as sr
for index , name in enumerate ( sr . Microphone . list_microphone_names ()):
print ( "Microphone with name " {1} " found for `Microphone(device_index={0})`" . format ( index , name ))
Это напечатает что-то вроде следующего:
Микрофон с именем «HDA Intel HDMI: 0 (hw:0,3)» найден для `Microphone(device_index=0)` Микрофон с именем «HDA Intel HDMI: 1 (hw:0,7)» найден для `Microphone(device_index=1)` Микрофон с именем «HDA Intel HDMI: 2 (hw:0,8)» найден для `Microphone(device_index=2)` Микрофон с именем «Blue Snowball: USB Audio (hw:1,0)» найден для `Microphone(device_index=3)` Микрофон с именем "hdmi" найден для `Microphone(device_index=4)` Микрофон с именем "pulse" найден для `Microphone(device_index=5)` Микрофон с именем «по умолчанию» найден для `Microphone(device_index=6)`
Теперь, чтобы использовать микрофон Snowball, вам нужно изменить Microphone()
на Microphone(device_index=3)
.
Microphone()
выдает ошибку IOError: No Default Input Device Available
.Как говорится в ошибке, программа не знает, какой микрофон использовать.
Чтобы продолжить, либо используйте Microphone(device_index=MICROPHONE_INDEX, ...)
вместо Microphone(...)
, либо установите микрофон по умолчанию в вашей ОС. Вы можете получить возможные значения MICROPHONE_INDEX
используя код в записи об устранении неполадок прямо над этой.
Начиная с версии PyInstaller 3.0, SpeechRecognition поддерживается «из коробки». Если у вас возникают странные проблемы при компиляции программы с помощью PyInstaller, просто обновите PyInstaller.
Вы можете легко сделать это, запустив pip install --upgrade pyinstaller
.
Ошибка «bt_audio_service_open» означает, что у вас есть аудиоустройство Bluetooth, но, поскольку физическое устройство в данный момент не подключено, мы не можем его использовать — если вы не используете микрофон Bluetooth, то это можно смело игнорировать. Если да, но звук не работает, дважды проверьте, действительно ли микрофон подключен. Кажется, не существует простого способа отключить эти сообщения.
Об ошибках вида «ALSA lib [...] Unknown PCM» см. этот ответ StackOverflow. По сути, чтобы избавиться от ошибки вида «Неизвестные карты PCM.pcm.rear», просто закомментируйте pcm.rear cards.pcm.rear
в /usr/share/alsa/alsa.conf
, ~/.asoundrc
и /etc/asound.conf
.
Для «сервера jack не запущен или не может быть запущен» или «вызов подключения (2) к /dev/shm/jack-1000/default/jack_0 не удался (ошибка = нет такого файла или каталога)» или «попытка подключения к серверу не удалось», они вызваны попыткой ALSA подключиться к JACK, и их можно смело игнорировать. В настоящее время я не знаю какого-либо простого способа отключить эти сообщения, кроме полного отключения печати при включении микрофона.
ChildProcessError
, сообщающее, что не удалось найти системный конвертер FLAC, хотя он установлен.Установить FLAC для OS X напрямую из исходного кода не получится, так как он некорректно добавляет исполняемые файлы в путь поиска.
Установка FLAC с помощью Homebrew гарантирует правильное обновление пути поиска. Сначала убедитесь, что у вас установлен Homebrew, затем запустите brew install flac
чтобы установить необходимые файлы.
Чтобы взломать эту библиотеку, сначала убедитесь, что у вас есть все требования, перечисленные в разделе «Требования».
speech_recognition/__init__.py
.examples/
, а демонстрационный скрипт — в speech_recognition/__main__.py
.speech_recognition/
.reference/
.third-party/
. Чтобы установить/переустановить библиотеку локально, запустите python -m pip install -e .[dev]
в корневом каталоге проекта.
Перед выпуском номер версии добавляется в README.rst
и speech_recognition/__init__.py
. Теги версий затем создаются с помощью git config gpg.program gpg2 && git config user.signingkey DB45F6C431DE7C2DCD99FF7904882258A4063489 && git tag -s VERSION_GOES_HERE -m "Version VERSION_GOES_HERE"
.
Выпуск осуществляется путем запуска make-release.sh VERSION_GOES_HERE
для сборки исходных пакетов Python, их подписания и загрузки в PyPI.
Чтобы запустить все тесты:
python -m unittest discover --verbose
Чтобы запустить статический анализ:
python -m flake8 --ignore=E501,E701,W503 speech_recognition tests examples setup.py
Чтобы убедиться, что RST правильно сформирован:
python -m rstcheck README.rst reference/ * .rst
Тестирование также выполняется автоматически с помощью GitHub Actions при каждом нажатии.
Включенный исполняемый файл flac-win32
является официальным двоичным файлом FLAC 1.3.2 для 32-разрядной версии Windows.
Входящие в комплект исполняемые файлы flac-linux-x86
и flac-linux-x86_64
созданы на основе исходного кода FLAC 1.3.2 с помощью Manylinux, что обеспечивает его совместимость с широким спектром дистрибутивов.
Встроенные исполняемые файлы FLAC должны быть побитно воспроизводимыми. Чтобы пересобрать их, запустите следующую команду в каталоге проекта в системе, похожей на Debian:
# download and extract the FLAC source code
cd third-party
sudo apt-get install --yes docker.io
# build FLAC inside the Manylinux i686 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_i686:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86 && sudo rm -rf flac-1.3.2/
# build FLAC inside the Manylinux x86_64 Docker image
tar xf flac-1.3.2.tar.xz
sudo docker run --tty --interactive --rm --volume " $( pwd ) :/root " quay.io/pypa/manylinux1_x86_64:latest bash
cd /root/flac-1.3.2
./configure LDFLAGS=-static # compiler flags to make a static build
make
exit
cp flac-1.3.2/src/flac/flac ../speech_recognition/flac-linux-x86_64 && sudo rm -r flac-1.3.2/
Включенный исполняемый файл flac-mac
извлечен из xACT 2.39, который представляет собой интерфейс для FLAC 1.3.2, который удобно включает двоичные файлы для всех своих кодировщиков. В частности, это копия xACT 2.39/xACT.app/Contents/Resources/flac
в xACT2.39.zip
.
Убери <[email protected]> (Энтони Чжан) бобсайшилол arvindch <[email protected]> (Арвинд Чембарпу) kevinismith <[email protected]> (Кевин Смит) хаас85 DelightRun <[email protected]> индивидуализм kamushadenes <[email protected]> (Камус Хаденес) sbraden <[email protected]> (Сара Брейден) tb0hdan (Богдан Туркиневич) Тайникс <[email protected]> (Стив Догерти) beeedy <[email protected]> (Бродерик Карлин)
Пожалуйста, сообщайте об ошибках и предложениях в системе отслеживания ошибок!
Как цитировать эту библиотеку (стиль APA):
Чжан, А. (2017). Распознавание речи (Версия 3.11) [Программное обеспечение]. Доступно по адресу https://github.com/Uberi/speech_recognition#readme.
Как цитировать эту библиотеку (в стиле Чикаго):
Чжан, Энтони. 2017. Распознавание речи (версия 3.11).
Также ознакомьтесь с API Python Baidu Yuyin, который основан на более старой версии этого проекта и добавляет поддержку Baidu Yuyin. Обратите внимание, что Baidu Yuyin доступен только на территории Китая.
Copyright 2014–2017 Энтони Чжан (Uberi). Исходный код этой библиотеки доступен на GitHub.
SpeechRecognition доступен по лицензии BSD, состоящей из трех пунктов. Дополнительную информацию см. в LICENSE.txt
в корневом каталоге проекта.
Для удобства все официальные дистрибутивы SpeechRecognition уже включают в себя копии необходимых уведомлений об авторских правах и лицензий. В своем проекте вы можете просто указать, что информацию о лицензировании SpeechRecognition можно найти в README SpeechRecognition, и убедиться, что SpeechRecognition видна пользователям, если они хотят ее видеть .
SpeechRecognition распространяет исходный код, двоичные файлы и языковые файлы из CMU Sphinx. Эти файлы имеют лицензию BSD и могут распространяться при условии правильного сохранения уведомлений об авторских правах. Подробные сведения о лицензии для отдельных частей см. в разделе speech_recognition/pocketsphinx-data/*/LICENSE*.txt
и third-party/LICENSE-Sphinx.txt
SpeechRecognition распространяет исходный код и двоичные файлы PyAudio. Эти файлы распространяются по лицензии MIT и могут распространяться при условии правильного сохранения уведомлений об авторских правах. Подробную информацию о лицензии см. в файле third-party/LICENSE-PyAudio.txt
.
SpeechRecognition распространяет двоичные файлы из FLAC — speech_recognition/flac-win32.exe
, speech_recognition/flac-linux-x86
и speech_recognition/flac-mac
. Эти файлы распространяются по лицензии GPLv2 и могут распространяться при условии соблюдения условий GPL. Двоичные файлы FLAC представляют собой совокупность отдельных программ, поэтому эти ограничения GPL не распространяются на библиотеку или ваши программы, использующие библиотеку, а только на сам FLAC. Подробную информацию о лицензии см. в LICENSE-FLAC.txt
.