Категории

Примеры кода

рабочий код оффлайн голосового ассистента для Raspberry PI

Изображение

Что понадобится:
Микрокомпьютер: Raspberry Pi 4 (рекомендуется) или Orange Pi
Микрофон: USB-микрофон (например, Fifine K669) или матричный (ReSpeaker 4-Mic Array)
Динамик: Любой USB/Bluetooth-динамик
SD-карта: От 16 ГБ (для ОС и моделей ИИ)
Выбор движка распознавания:
Vosk(лучший оффлайн-вариант):
Rhasspy (профессиональное решение):
MyCroft Precise (для wake-word детекции):
💡 Продвинутые фишки:
1. Контекстное понимание:
- Использование Rasa NLU для сложных диалогов
- Пример: _"Выключи свет в гостиной, но оставь на кухне"_


Голосовая идентификация:
Биометрия голоса через speaker-recognition
Разные профили для членов семьи

Оффлайн TTS:

# RHVoice (русские голоса)
from rhvoice_wrapper import RHVoice
engine = RHVoice(voice='Anna')
engine.say('Свет включён', 'output.wav')

# RHVoice (русские голоса) Оффлайн TTS:
from rhvoice_wrapper import RHVoice
engine = RHVoice(voice='Anna')
engine.say('Свет включён', 'output.wav')

Вот готовый рабочий код оффлайн голосового ассистента для Raspberry Pi, который можно скопировать целиком:

#!/usr/bin/env python3
import pyaudio
from vosk import Model, KaldiRecognizer
import json
import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
from time import sleep

# Настройки GPIO
GPIO.setmode(GPIO.BCM)
LIGHT_PIN = 17
GPIO.setup(LIGHT_PIN, GPIO.OUT)

# Настройки MQTT
MQTT_BROKER = "localhost"
MQTT_PORT = 1883

# Инициализация MQTT клиента
client = mqtt.Client()
client.connect(MQTT_BROKER, MQTT_PORT)

# Путь к модели Vosk (скачать с https://alphacephei.com/vosk/models)
MODEL_PATH = "vosk-model-small-ru"
model = Model(MODEL_PATH)
recognizer = KaldiRecognizer(model, 16000)

# Настройка аудиопотока
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
                channels=1,
                rate=16000,
                input=True,
                frames_per_buffer=8192,
                input_device_index=0)

print("Голосовой ассистент запущен. Говорите...")

def handle_command(command):
    command = command.lower()
    
    # Управление светом через GPIO
    if "включи свет" in command:
        GPIO.output(LIGHT_PIN, GPIO.HIGH)
        print("Свет включен")
    elif "выключи свет" in command:
        GPIO.output(LIGHT_PIN, GPIO.LOW)
        print("Свет выключен")
    
    # Отправка команд по MQTT
    elif "включи розетку" in command:
        client.publish("home/socket", "ON")
        print("Розетка включена")
    elif "выключи розетку" in command:
        client.publish("home/socket", "OFF")
        print("Розетка выключена")

try:
    while True:
        data = stream.read(4096, exception_on_overflow=False)
        if recognizer.AcceptWaveform(data):
            result = json.loads(recognizer.Result())
            if 'text' in result and len(result['text']) > 0:
                print(f"Распознано: {result['text']}")
                handle_command(result['text'])

except KeyboardInterrupt:
    print("\nЗавершение работы...")
finally:
    stream.stop_stream()
    stream.close()
    p.terminate()
    GPIO.cleanup()
    client.disconnect()

Что нужно сделать перед запуском:
Установите зависимости:

sudo apt-get install python3-pyaudio
pip3 install vosk paho-mqtt RPi.GPIO

Скачайте русскую языковую модель Vosk:

wget https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22.zip
unzip vosk-model-small-ru-0.22.zip
mv vosk-model-small-ru-0.22 vosk-model-small-ru

Для управления устройствами по MQTT установите Mosquitto:

sudo apt-get install mosquitto mosquitto-clients

Запустите скрипт:

python3 voice_assistant.py

🧠 Что это такое?

Это система для оффлайн преобразования текста в голос (Text-to-Speech) с использованием русского голосового движка RHVoice.

🔧 Базовый пример кода

from rhvoice_wrapper import RHVoice
engine = RHVoice(voice='Anna')  # Выбор голоса
engine.say('Свет включён', 'output.wav')  # Синтез в файл

📥 Установка

# Для Ubuntu/Debian:
sudo apt install rhvoice rhvoice-language-russian
pip3 install rhvoice-wrapper

🗣 Доступные голоса

💡 Интеграция с ассистентом

from rhvoice_wrapper import RHVoice
import os

engine = RHVoice(voice='Anna')

def speak(text):
    engine.say(text, 'response.wav')
    os.system('aplay response.wav')  # Проигрываем звук

speak("Лампочка активирована")

⚡ Альтернативные TTS-решения

Библиотека Языки Качество
RHVoice RU/EN Хорошее
Silero RU Отличное
eSpeak 50+ Роботизированное

🧠 Нейросетевой Silero

import torch
model = torch.hub.load('snakers4/silero-models', 'tts', 'ru')
model.speak('Привет мир', 'out.wav')

🚀 Продвинутые функции

# Изменение параметров голоса
engine.say('Текст', speed=1.2, pitch=0.8)

# Синтез без сохранения в файл
audio_data = engine.synthesize('Текст')

⚠️ Важно

Комментарии

asd 19.07.2025 17:06
sad
ssssssssd 19.07.2025 17:06
sad
sadf 19.07.2025 17:26
sdf

Оставить комментарий

← Назад к списку