SpeechRecognition – распознавание речи

онлайн тренер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Введение

Современные голосовые помощники, системы транскрипции и голосового управления работают благодаря технологиям распознавания речи. 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 (например, проблема с интернетом или ключом).

Установка

bash
pip install SpeechRecognition

Для работы с микрофоном потребуется также установить pyaudio:

bash
pip install pyaudio

Пример использования (Google API)

python
import speech_recognition as sr recognizer = sr.Recognizer() with sr.Microphone() as source: print("Скажите что-нибудь...") audio = recognizer.listen(source) try: text = recognizer.recognize_google(audio, language="ru-RU") print("Вы сказали:", text) except sr.UnknownValueError: print("Речь не распознана") except sr.RequestError as e: print("Ошибка запроса:", e)

Заключение

SpeechRecognition — простая, но мощная библиотека для работы с речью в Python. Её легко интегрировать в существующие проекты, а разнообразие поддерживаемых движков позволяет использовать как бесплатные, так и платные высокоточные сервисы.

Для локального использования отлично подойдёт Sphinx, для высокой точности — Google и Azure. А главное — начать можно всего с нескольких строк кода.