Голосовые уведомления TTS на Яндекс Станции из Home Assistant
- Пошаговый разбор: подготовка интеграции Yandex Station в Home Assistant.
- Тонкая настройка TTS: выбор голосов, эмоций, скорости речи и шепота.
- Автоматизация стирки: отслеживание профиля энергопотребления бытовой техники.
- Умная маршрутизация оповещений на основе датчиков присутствия.
Использование голосового помощника Алиса для информационных уведомлений умного дома выводит комфорт и информативность жилья на принципиально новый уровень. Вместо безликих push-уведомлений на экранах смартфонов ваш умный дом получает полноценный живой голос: «Стиральная машина закончила цикл стирки, пора развесить белье», «На заднем дворе зафиксировано движение», «Температура теплого пола на кухне достигла 24 °C» или «Чайник вскипел, приятного чаепития».
Прямая интеграция yandex station home assistant через службу TTS (Text-to-Speech) позволяет синтезировать произвольные фразы в реальном времени, комбинировать показания любых датчиков и гибко управлять громкостью колонок. В этом расширенном руководстве мы подробно разберем установку компонентов, тонкую настройку параметров синтеза речи (голоса, эмоции, шепот), построение надежной автоматизации на примере контроля бытовой техники и устранение задержек сетевого воспроизведения.
Подготовка интеграции Яндекс Станции
Для отправки голосовых команд и прямого потокового синтеза речи на колонки Яндекса используется кастомный компонент yandex_station (автор AlexxIT), устанавливаемый через каталог HACS (Home Assistant Community Store).
[ Сервер Home Assistant ]
│
├── (REST / WebSocket API) ──> [ Яндекс Облако TTS ]
│ │
└── (Локальный протокол / Cloud) <─────┘
│
▼
[ Яндекс Станция / Миди / Макс ]
Порядок установки компонента:
-
Добавление репозитория в HACS: Откройте веб-интерфейс Home Assistant ➡️ перейдите в раздел HACS ➡️ выберите вкладку «Интеграции» ➡️ нажмите кнопку «Поиск» в нижнем правом углу ➡️ введите в строке поиска Yandex Station и нажмите «Скачать».
-
Перезапуск сервера: После завершения загрузки файлов обязательно перезагрузите Home Assistant через меню Настройки ➡️ Система ➡️ Перезагрузить.
-
Авторизация аккаунта: Перейдите в Настройки ➡️ Устройства и службы ➡️ нажмите «Добавить интеграцию» ➡️ выберите Yandex Station.
Вам будут предложены два метода авторизации:
- Авторизация по логину и паролю (с подтверждением через SMS или push-уведомление Яндекс Ключа).
- Авторизация по токену (рекомендуемый метод для максимальной стабильности, исключающий сброс сессии при смене IP-адреса сервера).
-
Проверка обнаруженных медиаплееров: После завершения в списке объектов появятся сущности вида
media_player.yandex_station_kitchen,media_player.yandex_station_living_roomилиmedia_player.yandex_station_max.
Шаг 1. Тестирование службы TTS и тонкая настройка параметров речи
Перед созданием сложных автоматизаций необходимо проверить работу синтезатора речи и ознакомиться с возможностями кастомизации голоса.
В интеграции yandex_station для озвучки доступны две базовые службы:
tts.yandex_station_say— стандартный вызов облачного синтезатора речи Яндекса SpeechKit;media_player.play_mediaс типом контентаdialogилиtext— расширенный интерфейс для передачи системных команд и звуковых эффектов.
Проверка в инструментах разработчика:
- Откройте Инструменты разработчика ➡️ перейдите на вкладку «Действия» (Services).
- Выберите службу
tts.yandex_station_say. - В поле Цель (Target) выберите вашу колонку (например,
media_player.alice_mini). - В поле данных введите YAML-структуру с тестовой фразой:
action: tts.yandex_station_say
entity_id: media_player.alice_mini
data:
message: "Проверка синтеза речи на Яндекс Станции. Интеграция работает корректно."
Нажмите кнопку «Выполнить действие». Колонка должна мгновенно воспроизвести указанную фразу голосом Алисы.
Параметры голосов, эмоций и скорости речи
Служба синтеза речи SpeechKit поддерживает расширенные атрибуты Яндекса:
| Параметр | Возможные значения | Описание |
|---|---|---|
voice | alisa, ermil, zahar, jane, oksana, filipp | Выбор диктора для озвучивания сообщения |
emotion | neutral, good, evil | Эмоциональная окраска голоса (радостная, нейтральная, раздраженная) |
speed | от 0.1 до 3.0 (по умолчанию 1.0) | Скорость воспроизведения речи |
Пример сообщения с ускоренной речью и мужским голосом zahar для технических системных алертов:
action: tts.yandex_station_say
entity_id: media_player.boiler_speaker
data:
message: "Внимание! Зафиксировано падение давления в контуре отопления."
options:
voice: "zahar"
emotion: "evil"
speed: 1.15
Шаг 2. Определение окончания работы стиральной машины
Чтобы автоматизация безошибочно определяла завершение стирки, отслеживать состояние прибора только по факту включения нельзя: во время полоскания или замачивания двигатель машины может останавливаться на несколько минут с нулевым потреблением.
Для надежного алгоритма используется умная Zigbee-розетка с энергомониторингом (например, Tuya 16A или Aqara Smart Plug).
Мощность (Вт)
^
2000│ /\ Нагрев ТЭНа
│ / \
500│ / \ Отжим и вращение барабана
│ / \ /\ /\
4│──/────────\_/──\──/──\───────────────┐ Порог отключения (< 4 Вт в течение 3 мин)
0└──┴───────────────────────────────────┴──────────────> Время
Логика построения триггера:
- Рабочий режим: мощность колеблется от
50 Вт(вращение барабана) до2000–2200 Вт(нагрев воды ТЭНом). - Паузы в цикле: кратковременные просадки до
2–5 Втдлятся не более 60–90 секунд. - Завершение стирки: мощность падает ниже
4 Вт(питание только светодиодной индикации) и стабильно держится на этом значении более3 минут.
Шаг 3. Написание сценария автоматизации в YAML
Откройте встроенный редактор автоматизаций Home Assistant или добавьте конфигурацию в файл automations.yaml:
alias: "Озвучка: Стиральная машина завершила стирку"
description: "Голосовое уведомление на Яндекс Станцию с регулировкой громкости и тихими часами"
mode: single
trigger:
- platform: numeric_state
entity_id: sensor.washing_machine_power
below: 4
for:
minutes: 3
condition:
# Проверяем, что стирка действительно происходила (потребление ранее превышало 100 Вт)
- condition: numeric_state
entity_id: sensor.washing_machine_power
attribute: max_value_last_hour
above: 100
# Ограничение по тихим часам (с 09:00 до 22:00)
- condition: time
after: "09:00:00"
before: "22:00:00"
action:
# Шаг 1: Сохраняем текущий уровень громкости колонки в переменную
- action: scene.create
data:
scene_id: before_tts_state
snapshot_entities:
- media_player.kitchen_speaker
# Шаг 2: Устанавливаем комфортную громкость для оповещения (55%)
- action: media_player.volume_set
entity_id: media_player.kitchen_speaker
data:
volume_level: 0.55
# Шаг 3: Синтезируем и проговариваем текст сообщения
- action: tts.yandex_station_say
entity_id: media_player.kitchen_speaker
data:
message: "Стирка завершена. Пожалуйста, не забудьте достать и развесить белье."
# Шаг 4: Выдерживаем паузу на время звучания фразы
- delay:
seconds: 8
# Шаг 5: Восстанавливаем исходную громкость колонки
- action: scene.turn_on
entity_id: scene.before_tts_state
IMPORTANT
Механизм сохранения снимка состояния (scene.create со snapshot_entities) гарантирует, что после громкого дневного уведомления колонка вернется к своему прежнему уровню звука. Это предотвратит внезапный оглушающий запуск музыки, когда кто-то из домочадцев позже попросит Алису включить радио.
Использование динамических шаблонов в сообщениях TTS
Шаблонизатор Jinja2 в Home Assistant позволяет создавать контекстно-зависимые оповещения с подстановкой реальных данных с датчиков умного дома.
Пример расширенного Jinja2-шаблона для утреннего отчета:
action: tts.speak
target:
entity_id: tts.yandex_speechkit
data:
media_player_entity_id: media_player.bedroom_station
message: >
Доброе утро! На улице сейчас {{ states('sensor.outdoor_temperature') | round(1) }} °C,
{% if is_state('weather.home', 'rainy') %}
на улице идет дождь, обязательно возьмите зонт.
{% else %}
осадков не ожидается.
{% endif %}
Уровень CO2 в спальне составляет {{ states('sensor.bedroom_co2') }} ppm.
Приятного дня!
При наступлении заданного времени Home Assistant компилирует шаблон в единую текстовую строку и отправляет ее в Яндекс Станцию.
Шаг 4. Умное распределение звука и датчики присутствия
В больших многокомнатных квартирах или частных коттеджах бессмысленно отправлять уведомления на все колонки подряд — это создает лишний шум. Интеллектуальная система направляет звук только в ту зону, где в данный момент находятся люди.
action: tts.speak
target:
entity_id: tts.yandex_speechkit
data:
media_player_entity_id: >
{% if is_state('binary_sensor.kitchen_motion', 'on') %}
media_player.kitchen_speaker
{% elif is_state('binary_sensor.living_room_motion', 'on') %}
media_player.living_room_speaker
{% else %}
media_player.hallway_speaker
{% endif %}
message: "Внимание, зафиксирована протечка в ванной комнате!"
TIP
Для создания комплексных сценариев домашнего комфорта объедините этот механизм с автоматизацией «Добро пожаловать» при открытии входной двери и настройкой ночной подсветки по датчику движения.
WARNING
Для критически важных тревожных оповещений (срабатывание датчиков утечки газа, протечки воды или дыма) никогда не полагайтесь исключительно на голосовой синтез речи. Обязательно настраивайте дублирование push-уведомлений и отправку групповых сообщений в Telegram из сценариев Алисы.
Траблшутинг: решение задержек и ошибок синтеза речи
При регулярной эксплуатации связки home assistant yandex station пользователи могут сталкиваться с задержками воспроизведения или системными ошибками:
- Задержка 2–4 секунды перед началом речи:
- Причина: При каждом вызове служба генерирует MP3-аудиопоток через внешнее облако Яндекса и передает ссылку колонке. При высоком сетевом джиттере или задержках DNS-сервера старт фразы откладывается.
- Решение: В настройках компонента Yandex Station включите режим прямого взаимодействия по локальной сети (Local Streaming / WebRTC). Также пропишите быстрые локальные DNS-серверы (
77.88.8.8или1.1.1.1) в сетевой конфигурации Home Assistant.
- Ошибка авторизации
Token Expiredили401 Unauthorized:- Причина: Истечение срока действия сессионных cookie при входе по связке логин/пароль.
- Решение: Переавторизуйте интеграцию Yandex Station с использованием долгоживущего токена Яндекс Паспорта через утилиту
yandex-dialogs-token.
- Обрыв фразы на середине:
- Причина: Слишком короткое значение
delayв автоматизации перед следующим действием управления медиаплеером. - Решение: Рассчитывайте паузу из пропорции:
1 секунда на каждые 3–4 слова текста + 2 секунды запаса.
- Причина: Слишком короткое значение
Часто задаваемые вопросы (FAQ)
Почему Станция воспроизводит уведомление с задержкой в 2–3 секунды?
Задержка возникает из-за цепочки передачи данных: Home Assistant формирует текст ➡️ отправляет запрос в облачный сервис Яндекс SpeechKit ➡️ сервис генерирует звуковой файл ➡️ Станция буферизирует аудиопоток по Wi-Fi и начинает воспроизведение. Для минимизации задержки убедитесь, что сервер Home Assistant и колонка подключены к диапазону 5 ГГц с минимальным пингом.
Как заставить Алису говорить шепотом в ночное время через Home Assistant?
Для включения шепота в интеграции yandex_station передайте перед текстом специальный тег разметки SpeechKit whisper:
action: tts.speak
target:
entity_id: tts.yandex_speechkit
data:
media_player_entity_id: media_player.bedroom_station
message: "<speaker voice='alisa' effect='whisper'>Дети уснули, свет в коридоре выключен.</speaker>"
Можно ли передавать на Яндекс Станцию заранее записанные локальные MP3-файлы?
Да. Для этого используется действие media_player.play_media со ссылкой на локальный файл в директории www Home Assistant (например, http://192.168.1.50:8123/local/sounds/bell.mp3) и указанием типа контента audio/mp3.
Будут ли работать голосовые уведомления при отключении интернета?
Стандартный синтез речи TTS требует доступа к облачным серверам Яндекса для генерации голоса. При отсутствии интернет-соединения облачный TTS работать не сможет. Однако локальные сценарии управления устройствами, работающими по протоколам Zigbee и Matter, продолжат функционировать в штатном автономном режиме.
Инструкция по настройке
Установка интеграции Yandex Station
Установите компонент Yandex Station через HACS и авторизуйтесь под своим аккаунтом Яндекса для получения прямого управления медиаплеерами.
Проверка службы TTS в системе
Перейдите в Инструменты разработчика -> Службы и отправьте тестовое голосовое сообщение (TTS) на вашу Яндекс Станцию с выбором голоса.
Создание автоматизации мониторинга мощности
Настройте триггер по энергопотреблению розетки стиральной машины и добавьте действие вызова службы TTS для озвучки окончания стирки.
Настройка тихих часов и динамической громкости
Добавьте логические условия по времени и настройте временное повышение громкости перед озвучкой с возвратом на исходный уровень.