Полностью переведена вся документация в docs/: - docs/architecture/overview.md — Архитектура Wyoming Satellite - docs/settings-cheatsheet.md — Шпаргалка по настройкам (CLI флаги) - docs/deployment/systemd-services.md — Настройка systemd сервисов - docs/integration/mqtt-led.md — MQTT LED управление - docs/integration/vad-wakeword.md — Уже был на русском - docs/tutorials/2mic-hat.md — Tutorial для 2-MIC HAT - docs/tutorials/installer.md — Интерактивный установщик - docs/README.md — Индекс документации Обновлены корневые файлы: - README.md — Полностью на русском - DEPLOY.md — Полностью на русском Вся документация теперь на русском языке для удобства русскоязычных пользователей. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
15 KiB
Executable File
2-MIC HAT Tutorial
Создание голосового спутника на Raspberry Pi Zero 2 W и ReSpeaker 2Mic HAT.
Предварительные требования: См. Руководство по развёртыванию для базовой установки.
Установка ОС
Следуйте инструкциям по установке Raspberry Pi OS. В разделе "Choose OS" выберите "Raspberry Pi OS (other)" и "Raspberry Pi OS (64-bit) Lite".
Когда спросят о применении настроек кастомизации, выберите "Edit Settings" и:
- Установите имя пользователя/пароль
- Настройте беспроводную LAN
- На вкладке Services включите SSH и используйте аутентификацию по паролю
Установка ПО
После прошивки и загрузки спутника, подключитесь к нему по SSH, используя имя пользователя/пароль, настроенные при прошивке.
На спутнике, убедитесь, что системные зависимости установлены:
sudo apt-get update
sudo apt-get install --no-install-recommends \
git \
python3-venv
Склонируйте репозиторий wyoming-satellite:
git clone https://github.com/rhasspy/wyoming-satellite.git
Если у вас ReSpeaker 2Mic или 4Mic HAT, перекомпилируйте и установите драйверы (это займёт много времени):
cd wyoming-satellite/
sudo bash etc/install-respeaker-drivers.sh
После установки драйверов необходимо перезагрузить спутник:
sudo reboot
После перезагрузки подключитесь снова по SSH и продолжите установку:
cd wyoming-satellite/
python3 -m venv .venv
.venv/bin/pip3 install --upgrade pip
.venv/bin/pip3 install --upgrade wheel setuptools
.venv/bin/pip3 install \
-f 'https://synesthesiam.github.io/prebuilt-apps/' \
-e '.[all]'
Если установка прошла успешно, вы сможете запустить:
script/run --help
Определение аудиоустройств
Правильный выбор устройств микрофона/динамика критически важен для работы спутника. В этом разделе мы сделаем тестовую запись и воспроизведение.
Список доступных микрофонов:
arecord -L
Если у вас ReSpeaker 2Mic HAT, вы увидите:
plughw:CARD=seeed2micvoicec,DEV=0
seeed-2mic-voicecard, bcm2835-i2s-wm8960-hifi wm8960-hifi-0
Hardware device with all software conversions
Для других микрофонов предпочитайте устройства, начинающиеся с plughw: или используйте default, если не знаете, что выбрать.
Запишите 5-секундный образец с выбранного микрофона:
arecord -D plughw:CARD=seeed2micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t wav -d 5 test.wav
Скажите что-нибудь во время работы arecord. Если получили ошибки, попробуйте другое устройство микрофона, изменив -D <device>.
Список доступных динамиков:
aplay -L
Если у вас ReSpeaker 2Mic HAT, вы увидите:
plughw:CARD=seeed2micvoicec,DEV=0
seeed-2mic-voicecard, bcm2835-i2s-wm8960-hifi wm8960-hifi-0
Hardware device with all software conversions
Для других динамиков предпочитайте устройства, начинающиеся с plughw: или используйте default, если не знаете, что выбрать.
Воспроизведите записанный образец WAV:
aplay -D plughw:CARD=seeed2micvoicec,DEV=0 test.wav
Вы должны услышать записанный образец. Если есть проблемы, попробуйте другое устройство динамика, изменив -D <device>.
Запомните устройства микрофона и динамика для следующего шага.
Запуск спутника
В директории wyoming-satellite выполните:
script/run \
--debug \
--name 'my satellite' \
--uri 'tcp://0.0.0.0:10700' \
--mic-command 'arecord -D plughw:CARD=seeed2micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t raw' \
--snd-command 'aplay -D plughw:CARD=seeed2micvoicec,DEV=0 -r 22050 -c 1 -f S16_LE -t raw'
Измените -D <device> для arecord и aplay в соответствии с аудиоустройствами из предыдущего раздела.
Вы можете установить --name <NAME> на любое значение, но оно должно оставаться одинаковым при каждом запуске спутника.
В Home Assistant проверьте раздел "Devices & services" в настройках. Через некоторое время вы увидите ваш спутник как "Discovered" (Wyoming Protocol). Нажмите кнопку "Configure" и "Submit". Выберите зону, где расположен ваш спутник, и нажмите "Finish".
Ваш спутник должен сказать "Streaming audio", и вы можете использовать wake word предпочитаемого пайплайна.
Создание сервисов
Вы можете запустить wyoming-satellite как systemd сервис, создав файл сервиса:
sudo systemctl edit --force --full wyoming-satellite.service
Вставьте следующий шаблон и измените /home/pi и аргументы script/run в соответствии с вашей настройкой:
[Unit]
Description=Wyoming Satellite
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/home/pi/wyoming-satellite/script/run --name 'my satellite' --uri 'tcp://0.0.0.0:10700' --mic-command 'arecord -D plughw:CARD=seeed2micvoicec,DEV=0 -r 16000 -c 1 -f S16_LE -t raw' --snd-command 'aplay -D plughw:CARD=seeed2micvoicec,DEV=0 -r 22050 -c 1 -f S16_LE -t raw'
WorkingDirectory=/home/pi/wyoming-satellite
Restart=always
RestartSec=1
[Install]
WantedBy=default.target
Сохраните файл и выйдите из редактора. Далее включите сервис для автозагрузки и запустите:
sudo systemctl enable --now wyoming-satellite.service
(возможно, вам придётся нажать CTRL+C, чтобы вернуться к командной оболочке)
После запуска сервиса вы можете просматривать логи в реальном времени:
journalctl -u wyoming-satellite.service -f
При необходимости отключите и остановите сервис:
sudo systemctl disable --now wyoming-satellite.service
Аудио улучшения
Вы можете запустить спутник с автоматическим усилением и шумоподавлением:
script/run \
... \
--mic-auto-gain 5 \
--mic-noise-suppression 2
Автоматическое усиление от 0 до 31 dbFS, где 31 — самое громкое. Шумоподавление от 0 до 4, где 4 — максимальное подавление (может вызывать искажения аудио).
Вы также можете использовать --mic-volume-multiplier X для умножения всех аудиосэмплов на X. Например, использование 2 для X удвоит громкость микрофона (но может вызвать искажения). Соответствующий --snd-volume-multiplier делает то же самое для воспроизведения аудио.
Локальная детекция Wake Word
Установите необходимые системные зависимости:
sudo apt-get update
sudo apt-get install --no-install-recommends \
libopenblas-dev
Из домашней директории установите Wyoming сервис openWakeWord:
git clone https://github.com/rhasspy/wyoming-openwakeword.git
cd wyoming-openwakeword
script/setup
Создайте systemd сервис для него:
sudo systemctl edit --force --full wyoming-openwakeword.service
Вставьте следующий шаблон и измените /home/pi и аргументы script/run в соответствии с вашей настройкой:
[Unit]
Description=Wyoming openWakeWord
[Service]
Type=simple
ExecStart=/home/pi/wyoming-openwakeword/script/run --uri 'tcp://127.0.0.1:10400'
WorkingDirectory=/home/pi/wyoming-openwakeword
Restart=always
RestartSec=1
[Install]
WantedBy=default.target
Сохраните файл и выйдите из редактора.
Теперь вы можете обновить сервис спутника:
sudo systemctl edit --force --full wyoming-satellite.service
Обновите только следующие части:
[Unit]
...
Requires=wyoming-openwakeword.service
[Service]
...
ExecStart=/home/pi/wyoming-satellite/script/run ... --wake-uri 'tcp://127.0.0.1:10400' --wake-word-name 'ok_nabu'
...
[Install]
...
Перезагрузите и перезапустите сервис спутника:
sudo systemctl daemon-reload
sudo systemctl restart wyoming-satellite.service
Вы должны увидеть, что сервис wake загрузился автоматически:
sudo systemctl status wyoming-satellite.service wyoming-openwakeword.service
Все они должны быть "active (running)" и зелёные.
Протестируйте спутник, сказав "ok, nabu" и голосовую команду. Используйте journalctl для проверки логов сервисов на наличие ошибок:
journalctl -u wyoming-openwakeword.service -f
Убедитесь, что запускаете sudo systemctl daemon-reload каждый раз при внесении изменений в сервис.
LED сервис
Примеры сервисов событий для ReSpeaker 2Mic и 4Mic HAT включены в wyoming-satellite/examples, они изменяют цвет LED в зависимости от состояния спутника. Пример ниже для 2Mic HAT с использованием 2mic_service.py. Если вы используете 4Mic HAT, используйте 4mic_service.py, так как светодиоды и GPIO пины немного отличаются.
Установите его из домашней директории:
cd wyoming-satellite/examples
python3 -m venv --system-site-packages .venv
.venv/bin/pip3 install --upgrade pip
.venv/bin/pip3 install --upgrade wheel setuptools
.venv/bin/pip3 install 'wyoming==1.5.2'
Если вы используете ReSpeaker USB 4mic array v2.0, дополнительно установите pixel-ring:
.venv/bin/pip3 install 'pixel-ring'
Аргумент --system-site-packages используется для доступа к предустановленным пакетам gpiozero и spidev. Если они ещё не установлены в вашей системе, выполните:
sudo apt-get install python3-spidev python3-gpiozero
Протестируйте сервис:
.venv/bin/python3 2mic_service.py --help
Создайте systemd сервис:
sudo systemctl edit --force --full 2mic_leds.service
Вставьте следующий шаблон и измените /home/pi и аргументы script/run в соответствии с вашей настройкой:
[Unit]
Description=2Mic LEDs
[Service]
Type=simple
ExecStart=/home/pi/wyoming-satellite/examples/.venv/bin/python3 2mic_service.py --uri 'tcp://127.0.0.1:10500'
WorkingDirectory=/home/pi/wyoming-satellite/examples
Restart=always
RestartSec=1
[Install]
WantedBy=default.target
Сохраните файл и выйдите из редактора.
Теперь вы можете обновить сервис спутника:
sudo systemctl edit --force --full wyoming-satellite.service
Обновите только следующие части:
[Unit]
...
Requires=2mic_leds.service
[Service]
...
ExecStart=/home/pi/wyoming-satellite/script/run ... --event-uri 'tcp://127.0.0.1:10500'
...
[Install]
...
Перезагрузите и перезапустите сервис спутника:
sudo systemctl daemon-reload
sudo systemctl restart wyoming-satellite.service
Вы должны увидеть, что сервис загрузился автоматически:
sudo systemctl status wyoming-satellite.service 2mic_leds.service
Все они должны быть "active (running)" и зелёные.
Попробуйте голосовую команду и посмотрите, реагируют ли светодиоды. Используйте journalctl для проверки логов сервисов на наличие ошибок:
journalctl -u 2mic_leds.service -f
Если возникли проблемы, добавьте аргумент --debug в командную строку для увеличения уровня логирования.
Для управления яркостью светодиодов используйте аргумент --led-brightness, который принимает целые числа от 1 до 31.
Убедитесь, что запускаете sudo systemctl daemon-reload каждый раз при внесении изменений в сервис.