Хотите миниатюрного голосового помощника, который действительно следует вашим указаниям, работает на вашем собственном оборудовании и не закажет случайно двенадцать ананасов, потому что неправильно вас понял? Создание собственного ИИ-помощника на Raspberry Pi — это удивительно осуществимо, увлекательно и гибко. Вам понадобится подключить кодовое слово для активации, распознавание речи (ASR = автоматическое распознавание речи), «мозг» для обработки естественного языка (правила или LLM) и преобразование текста в речь (TTS). Добавьте несколько скриптов, одну-две службы и несколько тщательных настроек звука, и у вас получится карманная умная колонка, которая подчиняется вашим правилам.
Давайте начнём с нуля и научимся общаться с вашим Raspberry Pi без обычных сложностей. Мы рассмотрим компоненты, настройку, код, сравнения, подводные камни... всё досконально. 🌯
Статьи, которые могут вас заинтересовать после этой:
🔗 Как эффективно изучать ИИ
Составьте план обучения, выполняйте практические задания и отслеживайте прогресс.
🔗 Как запустить компанию, занимающуюся искусственным интеллектом
Проверка проблемы, разработка MVP, формирование команды, привлечение первых клиентов.
🔗 Как использовать ИИ для повышения продуктивности
Автоматизируйте рутинные задачи, оптимизируйте рабочие процессы и повышайте эффективность творчества.
🔗 Как внедрить ИИ в свой бизнес
Выявить наиболее эффективные процессы, внедрить пилотные проекты, измерить рентабельность инвестиций, масштабировать.
Что делает хорошего самодельного ИИ-помощника на базе Raspberry Pi ✅
-
Приватный режим по умолчанию — по возможности сохраняйте аудиофайлы локально. Вы сами решаете, что будет покидать устройство.
-
Модульная конструкция – возможность замены компонентов, как в конструкторе Lego: механизм распознавания ключевых слов, ASR, LLM, TTS.
-
Доступные цены – в основном открытый исходный код, обычные микрофоны, колонки и Raspberry Pi.
-
Возможность модификации – хотите автоматизацию дома, панели управления, сценарии, пользовательские навыки? Легко.
-
Надежная работа – управляется сервисом, загружается и начинает прослушивание автоматически.
-
Это будет интересно – вы много узнаете об аудио, процессах и событийно-ориентированном проектировании.
Небольшой совет: если вы используете Raspberry Pi 5 и планируете запускать более ресурсоемкие локальные модели, при длительной нагрузке поможет накладной кулер. (Если сомневаетесь, выбирайте официальный активный кулер, разработанный для Pi 5.) [1]
Необходимые запчасти и инструменты 🧰
-
Raspberry Pi : Pi 4 или Pi 5.
-
карту microSD объемом 32 ГБ и более.
-
USB-микрофон : простой USB-микрофон для конференций — отличный вариант.
-
Динамик : USB или 3,5-мм динамик, или плата расширения I2S amp HAT.
-
Сеть : Ethernet или Wi-Fi.
-
Дополнительные опции: корпус, активный кулер для Pi 5, кнопка для режима "нажми и говори", светодиодное кольцо. [1]
Настройка ОС и базовых параметров
-
Прошейте Raspberry Pi OS с помощью Raspberry Pi Imager. Это простой способ получить загрузочную карту microSD с нужными вам настройками. [1]
-
Загрузите систему, подключитесь к сети, затем обновите пакеты:
sudo apt update && sudo apt upgrade -y
-
Основные параметры звука : В Raspberry Pi OS можно настроить вывод по умолчанию, уровни и устройства через пользовательский интерфейс рабочего стола или
raspi-config. Поддерживаются USB и HDMI аудио на всех моделях; вывод через Bluetooth доступен на моделях с Bluetooth. [1] -
Проверьте устройства:
arecord -l aplay -l
Затем проверьте запись и воспроизведение. Если уровни кажутся странными, проверьте микшеры и настройки по умолчанию, прежде чем винить микрофон.

Архитектура вкратце 🗺️
Вот как выглядит продуманный самодельный ИИ-помощник на базе Raspberry Pi
Ключевое слово → захват звука в реальном времени → транскрипция ASR → обработка намерений или LLM → текст ответа → TTS → воспроизведение звука → дополнительные действия через MQTT или HTTP.
-
Кодовое слово : Porcupine — небольшой, точный и работает локально с регулировкой чувствительности для каждого ключевого слова. [2]
-
ASR : Whisper — это многоязычная универсальная модель ASR, обученная на ~680 тыс. часов; она устойчива к акцентам/фоновому шуму. Для использования на устройстве файл
whisper.cppпредоставляет простой путь вывода на C/C++. [3][4] -
Brain : На ваш выбор – облачная LLM-система через API, система правил или локальный вывод в зависимости от вычислительной мощности.
-
TTS : Piper генерирует естественную речь локально, достаточно быстро для быстрого ответа на скромном оборудовании. [5]
Таблица для быстрого сравнения 🔎
| Инструмент | Лучше всего подходит для | Приблизительно дорого | Почему это работает |
|---|---|---|---|
| Слово пробуждения дикобраза | Триггер постоянного прослушивания | Бесплатный уровень + | Низкое потребление ресурсов процессора, точная и простая привязка [2] |
| Whisper.cpp | Локальное ASR на Raspberry Pi | Открытый исходный код | Высокая точность, экономичность процессора [4] |
| Быстрый шепот | Более высокая скорость обработки сигналов ASR на ЦП/ГП | Открытый исходный код | Оптимизации CTranslate2 |
| Пайпер ТТС | Локальный речевой вывод | Открытый исходный код | Быстрый голос, много языков [5] |
| Cloud LLM API | Сложные рассуждения | на основе использования | Разгружает ресурсоемкие вычислительные ресурсы |
| Node-RED | Организация действий | Открытый исходный код | Визуальное отображение потоков, совместимость с MQTT |
Пошаговое создание: Ваш первый голосовой луп 🧩
Для активации по ключевому слову мы будем использовать Porcupine, для транскрипции — Whisper, для ответа — облегченную функцию «мозга» (замените на выбранную вами LLM-функцию), а для распознавания речи — Piper. Начните с минимального набора функций, а затем постепенно добавляйте новые.
1) Установите зависимости
sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
-
Porcupine: скачайте SDK/привязки для вашего языка и следуйте инструкциям быстрого запуска (клавиша доступа + список ключевых слов + аудиокадры →
.process). [2] -
Whisper (оптимизирован для процессора): собрать whisper.cpp :
git clone https://github.com/ggml-org/whisper.cpp cd whisper.cpp && cmake -B build && cmake --build build -j ./models/download-ggml-model.sh base.en ./build/bin/whisper-cli -m ./models/ggml-base.en.bin -f your.wav -otxt
Вышеизложенное отражает быстрый старт проекта. [4]
Предпочитаете Python?
faster-whisper(CTranslate2) зачастую работает быстрее, чем чистый Python, на процессорах средней мощности.
2) Настройка Piper TTS
git clone https://github.com/rhasspy/piper cd piper make # Загрузите понравившуюся вам голосовую модель, например, en_US-amy echo "Привет." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav aplay hello.wav
Piper предназначен для синтеза речи на устройстве с несколькими вариантами голоса/языка. [5]
3) Минимальный вспомогательный цикл на Python
Намеренно компактный: ожидает фразу для пробуждения (заглушка), записывает, расшифровывает с помощью whisper.cpp , генерирует ответ (заполнитель), а затем произносит текст через Piper. Замените заполнитель на вашу любимую логику LLM или правило.
import os, subprocess, wave import sounddevice as sd WAKE_WORD = "hey computer" # замена на Porcupine в продакшене [2] RECORD_SECONDS = 6 SAMPLE_RATE = 16000 CHANNELS = 1 WORKDIR = "/home/pi/assistant" ASR_BIN = "/home/pi/whisper.cpp/build/bin/whisper-cli" # [4] ASR_MODEL = "/home/pi/whisper.cpp/models/ggml-base.en.bin" PIPER_BIN = "/home/pi/piper/build/piper" # [5] PIPER_VOICE = "/home/pi/piper/voices/en/en_US-amy-medium.onnx" os.makedirs(WORKDIR, exist_ok=True) def record_wav(path, секунд=RECORD_SECONDS): audio = sd.rec(int(seconds * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') sd.wait() with wave.open(path, 'wb') as w: w.setnchannels(CHANNELS); w.setsampwidth(2); w.setframerate(SAMPLE_RATE) w.writeframes(audio.tobytes()) def transcribe(path): cmd = [ASR_BIN, "-m", ASR_MODEL, "-f", path, "-otxt"] subprocess.run(cmd, check=True, cwd=WORKDIR) with open(path.replace(".wav", ".txt"), "r", encoding="utf-8") as f: return f.read().strip() def generate_reply(prompt): if "weather" in prompt.lower(): return "I can't see the clouds, but it might be fine. Bring a jacket just in case." return "Вы сказали: " + prompt def speak(text): proc = subprocess.Popen([PIPER_BIN, "--model", PIPER_VOICE, "--output_file", f"{WORKDIR}/reply.wav"], stdin=subprocess.PIPE) proc.stdin.write(text.encode("utf-8")); proc.stdin.close(); proc.wait() subprocess.run(["aplay", f"{WORKDIR}/reply.wav"], check=True) print("Ассистент готов. Введите фразу для проверки.") while True: typed = input("> ").strip().lower() if typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_wav(wav_path) text = transcribe(wav_path) reply = generate_reply(text) print("Пользователь:", text); print("Ассистент:", reply) speak(reply) else: print("Введите фразу для проверки цикла.")
Для реального распознавания ключевых слов интегрируйте потоковый детектор Porcupine (низкая загрузка ЦП, чувствительность к каждому ключевому слову). [2]
Настройка звука, которая действительно имеет значение 🎚️
Несколько незначительных доработок позволят вашему ассистенту почувствовать себя в 10 раз умнее:
-
Расстояние до микрофона : 30–60 см — оптимальное расстояние для многих USB-микрофонов.
-
Уровни : избегайте искажений на входе и поддерживайте корректность воспроизведения; исправьте маршрутизацию, прежде чем искать «призрачные» ошибки в коде. В Raspberry Pi OS вы можете управлять устройством вывода и уровнями через системные инструменты или
raspi-config. [1] -
Акустика помещения : твердые стены вызывают эхо; мягкий коврик под микрофоном помогает.
-
Порог активации по ключевому слову : слишком высокая чувствительность → ложные срабатывания; слишком высокая чувствительность → вы будете кричать на пластик. Porcupine позволяет настраивать чувствительность для каждого ключевого слова. [2]
-
Теплоотдача : длительные транскрипции на Pi 5 выигрывают от использования официального активного кулера для поддержания стабильной производительности. [1]
Превращение игрушки в бытовую технику: сервисное обслуживание, автозапуск, проверка состояния 🧯
Люди забывают запускать скрипты. Компьютеры забывают быть вежливыми. Превратите свой цикл в управляемый сервис:
-
Создайте юнит systemd:
[Unit] Description=DIY Voice Assistant After=network.target sound.target [Service] User=pi WorkingDirectory=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
-
Включите его:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
Хвосты бревен:
journalctl -u assistant -f
Теперь он запускается при загрузке, перезапускается при сбое и в целом ведёт себя как бытовая техника. Немного скучновато, но намного лучше.
Система навыков: сделайте её действительно полезной дома 🏠✨
После того, как входящий и исходящий голос будут работать стабильно, добавьте действия:
-
Маршрутизатор намерений : простые маршруты по ключевым словам для выполнения распространенных задач.
-
Умный дом : публикуйте события в MQTT или вызывайте конечные точки HTTP Home Assistant.
-
Плагины : быстрые функции Python, такие как
set_timer,what_is_the_time,play_radio,run_scene.
Даже при использовании облачной системы управления локальными ресурсами (LLM) для обеспечения скорости и надежности сначала перенаправляйте очевидные локальные команды.
Только локальный доступ против облачной поддержки: компромиссы, которые вы почувствуете 🌓
Только локальное использование.
Плюсы: приватность, офлайн, предсказуемые затраты.
Минусы: более тяжелые модели могут работать медленно на небольших платах. Многоязычное обучение Whisper повышает надежность, если вы храните его на устройстве или на ближайшем сервере. [3]
облачной поддержки
: мощные логические рассуждения, большие контекстные окна.
Недостатки: данные покидают устройство, зависимость от сети, переменные затраты.
Часто побеждает гибрид: ключевое слово + локальное ASR → вызов API для логического вывода → локальное TTS. [2][3][5]
Устранение неполадок: странные неполадки и быстрые решения 👾
-
Ложные срабатывания по промокоду : уменьшите чувствительность или попробуйте другой микрофон. [2]
-
Задержка ASR : используйте меньшую модель Whisper или соберите
whisper.cppс флагами выпуска (-j --config Release). [4] -
Прерывистая трансляция речи : предварительная генерация распространенных фраз; подтверждение вашего аудиоустройства и частоты дискретизации.
-
Микрофон не обнаружен : проверьте
arecord -lи микшеры. -
Тепловое дросселирование : используйте официальный активный кулер на Raspberry Pi 5 для стабильной работы. [1]
Советы по безопасности и конфиденциальности, которые вам действительно стоит прочитать 🔒
-
Поддерживайте свой Raspberry Pi в актуальном состоянии с помощью APT.
-
Если вы используете какой-либо облачный API, регистрируйте отправляемые данные и подумайте о том, чтобы предварительно удалить личную информацию локально.
-
Запускайте службы с минимальными привилегиями; избегайте
использования sudoв ExecStart, если это не требуется. -
Предусмотрите режим работы только локальной сети для гостей или в часы тишины.
Варианты сборки: комбинируйте, как сэндвич 🥪
-
Сверхлокальный : Porcupine + whisper.cpp + Piper + простые правила. Приватный и надежный. [2][4][5]
-
Быстрая облачная помощь : Porcupine + (более компактный локальный Whisper или облачный ASR) + локальная TTS + облачный LLM.
-
Центр домашней автоматизации : добавьте потоки Node-RED или Home Assistant для создания сценариев, сценариев и управления датчиками.
Пример навыка: Включение света через MQTT 💡
import paho.mqtt.client as mqtt MQTT_HOST = "192.168.1.10" TOPIC = "home/livingroom/light/set" def set_light(state: str): client = mqtt.Client() client.connect(MQTT_HOST, 1883, 60) payload = "ON" if state.lower().startswith("on") else "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "turn on the lights" in text: set_light("on")
Добавьте реплику вроде: «Включи лампу в гостиной», и вы почувствуете себя волшебником.
Почему этот стек работает на практике 🧪
-
Porcupine эффективно и точно распознает ключевые слова на небольших платах, что делает возможным постоянное прослушивание. [2]
-
Обширная многоязычная программа обучения Whisper делает его устойчивым к различным условиям и акцентам. [3]
-
whisper.cppпозволяет использовать эту мощность на устройствах, работающих только с процессором, таких как Raspberry Pi. [4] -
Piper обеспечивает быструю реакцию без отправки аудио в облачную систему синтеза речи. [5]
Слишком длинно, не стал читать
Создайте модульный, приватный ИИ-помощник своими руками на Raspberry Pi , объединив Porcupine для активации по ключевому слову, Whisper (через whisper.cpp ) для распознавания речи, выбранный вами мозг для ответов и Piper для локального синтеза речи. Оберните его в службу systemd, настройте звук и подключите действия MQTT или HTTP. Это дешевле, чем вы думаете, и на удивление приятно в использовании. [1][2][3][4][5]
Ссылки
-
Программное обеспечение и охлаждение для Raspberry Pi – Raspberry Pi Imager (скачать и использовать) и информация о продукте Pi 5 Active Cooler.
-
Porcupine Wake Word – SDK и быстрый старт (ключевые слова, чувствительность, локальный вывод)
-
Whisper (модель ASR) – многоязычный, надежный ASR, обученный примерно на 680 тыс. часов
-
Рэдфорд и др., Надежное распознавание речи с помощью крупномасштабного слабого контроля (Whisper): подробнее
-
-
whisper.cpp – Оптимизированный для процессора вывод Whisper с использованием командной строки и этапов сборки.
-
Piper TTS – Быстрый локальный нейронный синтез речи с поддержкой нескольких голосов/языков.