Введение
Современные голосовые помощники, системы транскрипции и голосового управления работают благодаря технологиям распознавания речи. Python предоставляет простой способ интеграции этих технологий через библиотеку SpeechRecognition
— гибкий и мощный инструмент для преобразования аудиосигналов в текст.
Библиотека поддерживает как работу с аудиофайлами, так и захват звука с микрофона, а также взаимодействует с различными распознавателями — от локальных решений до облачных API, включая Google, IBM, Sphinx и другие.
Основная часть
Установка и зависимости
pip install SpeechRecognition
Для работы с микрофоном:
pip install pyaudio
На Windows установка
pyaudio
может потребовать предварительную загрузку .whl-файла.
Импорт библиотеки
import speech_recognition as sr
Работа с аудиофайлом
Распознавание речи из файла
r = sr.Recognizer()
with sr.AudioFile("speech.wav") as source:
audio = r.record(source)
text = r.recognize_google(audio, language="ru-RU")
print(text)
Поддерживаемые форматы: WAV, AIFF, FLAC. MP3 не поддерживается напрямую — требуется конвертация.
Распознавание с микрофона
mic = sr.Microphone()
r = sr.Recognizer()
with mic as source:
r.adjust_for_ambient_noise(source)
print("Скажите что-нибудь:")
audio = r.listen(source)
text = r.recognize_google(audio, language="ru-RU")
print("Вы сказали:", text)
Распознаватели, поддерживаемые SpeechRecognition:
Распознаватель | Требует интернет | Примечание |
---|---|---|
Google Web Speech | Да | Бесплатный, но с ограничениями |
Sphinx (CMU) | Нет | Работает локально, хуже точность |
IBM Speech to Text | Да | Требует API-ключ |
Microsoft Azure | Да | Платный API |
Wit.ai | Да | Нужна регистрация |
Houndify | Да | Регистрация и API-ключ |
Ошибки и отладка
-
speech_recognition.UnknownValueError
— речь не распознана -
speech_recognition.RequestError
— проблемы с подключением к API -
OSError
— не найден микрофон или файл
Повышение качества распознавания
-
Используйте
adjust_for_ambient_noise()
для подавления шума -
Записывайте WAV-файлы с частотой 16000 Гц, 16 бит, моно
-
Старайтесь исключить шумы в фоне и говорить чётко
Распознавание длинной речи
audio = r.record(source, duration=30)
или по частям:
audio = r.listen(source, phrase_time_limit=5)
Примеры применения
-
Субтитры для видео
-
Голосовое управление роботом или интерфейсом
-
Распознавание команд в умном доме
-
Транскрипция интервью и лекций
Описание всех ключевых функций и методов библиотеки SpeechRecognition
для Python
Основные классы
Класс | Описание |
---|---|
Recognizer |
Основной интерфейс для распознавания речи. Содержит методы для работы с аудиофайлами, микрофоном и API. |
AudioFile(filename) |
Контекстный менеджер для чтения аудиофайлов (.wav , .aiff , .flac ). |
Microphone(device_index=None) |
Источник звука с микрофона. Можно выбрать устройство по индексу. |
Получение аудиоданных
Метод | Описание |
---|---|
recognizer.record(source, duration=None, offset=0) |
Читает аудио из источника целиком или указанное количество секунд (duration ). Можно указать смещение (offset ). |
recognizer.listen(source, timeout=None, phrase_time_limit=None) |
Слушает микрофон и записывает речь. timeout — сколько ждать начала речи, phrase_time_limit — ограничение по длине. |
recognizer.listen_in_background(source, callback) |
Асинхронное прослушивание микрофона в фоне. callback вызывается при получении аудио. |
Распознавание речи
Метод | Описание |
---|---|
recognizer.recognize_google(audio, language='en-US') |
Распознаёт аудио с помощью Google Web Speech API. Бесплатно, но требует подключения к интернету. |
recognizer.recognize_sphinx(audio) |
Локальное распознавание с помощью CMU Sphinx. Не требует интернет, но менее точное. |
recognizer.recognize_ibm(audio, username, password) |
Использует IBM Speech to Text. Требуется регистрация. |
recognizer.recognize_bing(audio, key) |
Использует Microsoft Bing Voice Recognition. Требуется API-ключ. |
recognizer.recognize_google_cloud(audio, credentials_json) |
Google Cloud Speech API. Более гибкое и точное решение (платное). |
recognizer.recognize_houndify(audio, client_id, client_key) |
Распознавание через Houndify. Требуется аккаунт и ключи. |
recognizer.recognize_wit(audio, key) |
Распознавание речи с помощью Wit.ai. Подходит для небольших проектов. |
Работа с микрофоном
Метод / Класс | Описание |
---|---|
Microphone.list_microphone_names() |
Возвращает список доступных устройств микрофона. |
Microphone(device_index=...) |
Использование определенного микрофона по индексу. |
Исключения
Исключение | Описание |
---|---|
UnknownValueError |
Распознаватель не понял речь (например, плохое качество или шум). |
RequestError |
Ошибка при обращении к API (например, проблема с интернетом или ключом). |
Установка
Для работы с микрофоном потребуется также установить pyaudio
:
Пример использования (Google API)
Заключение
SpeechRecognition
— простая, но мощная библиотека для работы с речью в Python. Её легко интегрировать в существующие проекты, а разнообразие поддерживаемых движков позволяет использовать как бесплатные, так и платные высокоточные сервисы.
Для локального использования отлично подойдёт Sphinx, для высокой точности — Google и Azure. А главное — начать можно всего с нескольких строк кода.