Создание надежной системы распознавания голоса на Raspberry Pi – Руководство для начинающих
Распознавание голоса на Raspberry Pi
Система распознавания голоса слушает команды и выполняет действия: управление нагрузками (реле, лампы), запрос погоды, воспроизведение музыки. Raspberry Pi справляется локально — нужен только USB-микрофон.
Система работает постоянно, ожидая ключевое слово.
Как работает распознавание речи
- Голос создает звуковые волны → микрофон преобразует в аналоговый электрический сигнал.
- ADC (в микрофоне или звуковой карте) оцифровывает сигнал.
- Цифровой поток фильтруется (шумоподавление, нормализация).
- Речевой движок (Google Speech API, Vosk, PocketSphinx) преобразует в текст.
- NLP (обработка естественного языка) извлекает намерение (intent).
- Система выполняет действие и отвечает через TTS (eSpeak, festival, gTTS).
Построение системы: Google Speech API + eSpeak
Необходимые компоненты
- Raspberry Pi (3B/4/Zero 2 W);
- USB-микрофон (например, USB PnP Sound Device);
- Динамик с 3.5 мм джеком или USB;
- Реле (для управления нагрузкой);
- Перемычки, лампочка/нагрузка для демо.
Схема подключения
Подключение простое:
- USB-микрофон → USB порт Pi.
- Динамик → 3.5 мм jack (включите аудио через raspi-config).
- Реле → GPIO (например, GPIO17) + GND, нагрузка через реле.
- Питание Pi → USB-C.
Программная настройка
Шаг 1: Проверка микрофона
В терминале:
alsamixer
- F6 — выбрать USB-микрофон.
- F4 — Capture, поднимите громкость (≈70–80%).
- Esc — выход.
Тест записи:
arecord -D plughw:1,0 -d 5 -f cd test.wav
aplay test.wav
Если звук есть — микрофон работает. Нет устройства — проверьте lsusb, dmesg. Плохой звук — смените микрофон или кабель.
Шаг 2: Установка библиотек
sudo apt update && sudo apt install -y python3-pip espeak libespeak-dev portaudio19-dev
pip3 install SpeechRecognition pyaudio
Тест eSpeak:
espeak "Hello world"
Шаг 3: Код программы
import speech_recognition as sr
import pyttsx3
import RPi.GPIO as GPIO
import time
RELAY_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY_PIN, GPIO.OUT)
GPIO.output(RELAY_PIN, GPIO.HIGH) # реле активно по LOW
engine = pyttsx3.init()
engine.setProperty('rate', 150)
r = sr.Recognizer()
mic = sr.Microphone(device_index=1) # проверьте индекс: arecord -l
def speak(text):
print(f"Pi: {text}")
engine.say(text)
engine.runAndWait()
def listen():
with mic as source:
r.adjust_for_ambient_noise(source, duration=0.5)
print("Слушаю...")
audio = r.listen(source, phrase_time_limit=5)
try:
text = r.recognize_google(audio, language='ru-RU').lower()
print(f"Вы: {text}")
return text
except sr.UnknownValueError:
return ""
except sr.RequestError:
speak("Нет интернета")
return ""
WAKE_WORD = "привет"
speak("Система готова. Скажите '" + WAKE_WORD + "'")
while True:
text = listen()
if WAKE_WORD in text:
speak("Команда принята")
if "включи" in text or "on" in text:
GPIO.output(RELAY_PIN, GPIO.LOW)
speak("Лампа включена")
elif "выключи" in text or "off" in text:
GPIO.output(RELAY_PIN, GPIO.HIGH)
speak("Лампа выключена")
else:
speak("Не поняла команду")
time.sleep(0.5)
Примечание: нужен интернет для Google Speech API. Для офлайн используйте Vosk.
Как цепь управляет нагрузкой голосом
Pi ждет ключевое слово («Привет»). При обнаружении активируется распознавание команды («включи», «выключи»). Реле переключает нагрузку. Pi озвучивает результат и возвращается в ожидание. Код легко расширяется: добавьте датчики, MQTT, Home Assistant, другие триггеры.
Итог
Самодельная система не заменит Alexa/Google, но отличный старт для умного дома. Минимум проводов, понятный Python-код, расширяемость. Собирайте, экспериментируйте, делитесь результатами! Вопросы — в комментариях или на почту.
Промышленные технологии
- Сборка станции качества воздуха и погоды на Raspberry Pi с InfluxDB и Grafana
- Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
- Учебник для начинающих по IoT: стриминг данных температуры с Raspberry Pi
- Создание бюджетного детектора плача ребенка на Raspberry Pi — DIY-руководство
- Установка Google Assistant на MATRIX Voice Raspberry Pi — пошаговое руководство
- Подключение Raspberry Pi 3 к датчику DHT11 и загрузка данных в облако ThingsIo.ai
- Распознавание лиц в реальном времени на Raspberry Pi — полное руководство
- Создание безопасной двери с распознаванием лиц на Windows IoT и Raspberry Pi
- Сборка параллельного C++17 SYCL кода на Raspberry Pi 4B+ IoT платах
- Построение ровера на Windows IoT Core с Raspberry Pi 2 — Руководство от новичка к профи