Binding для локального управления устройствами Яндекс:
- Яндекс Станция
- Яндекс Станция мини
- Яндекс Станция мини 2
- Яндекс Станция лайт
- Яндекс Станци Макс
- Яндекс Модуль
- Яндекс Модуль - 2
- JBL Link Music
- JBL Link Portable
Доступен сервис Discovery.
Предварительно создайте YandexStation Bridge и настройте его, указав Yandex Token.
- использовать https://music-yandex-bot.ru
- на страничке ввести логин и пароль
- в старых чужих инструкциях информация отличается, на текущий момент, надо жать кнопку Войти, но не переходит в бота, так же появиться кнопка Скопировать токен
Затем перейтиде еще раз в создание Things, выберите YandexStation Binding.
Появится окно, в котором нажмите Scan
После чего будут найдены вашы Yandex-устройства
Binding удобно создавать автоматически через сервис Discovery, но Вы так же можете добавить новое Yandex-устройство вручную.
Для того, чтобы все это заработало, но заполнить следующие поля:
- Выберите Bridge
- Заполнте Device Id идентификатором устройства (можно взять в приложении Яндекс Умный Дом). Может выглядеть как
LP0000001232134200124
После успешной настройки биндинга и подключения к устройству будет отображена информация об устройстве
Нужно создать String item и прилинковать его к каналу Voice Command
. Затем в этот item надо отправить текст команды, например, Включи свет
.
Это аналогично тому, чтобы вы сказали Алисе - Включи свет
Нужно создать String item и прилинковать его к каналу TTS Command
. Затем в этот item надо отправить текст, который Алиса произнесе.
Можно отправлять текст даже со служебными командами, чтобы изменить голос, интонацию, ударение.
Пример1: Наложение эффектов
https://yandex.ru/dev/dialogs/alice/doc/speech-effects.html
В item надо отправить текст как есть:
<speaker effect="megaphone">Ехал Грека через реку<speaker effect="-"> видит Грека в реке рак
Пример2: Изменение голоса
https://cloud.yandex.com/en-ru/docs/speechkit/tts/voices
В item надо отправить текст как есть:
<speaker voice='kostya'>Привет, я - Костя и это мой голос!
Пример3: Настройка генерации речи
https://yandex.ru/dev/dialogs/alice/doc/speech-tuning.html
В item надо отправить текст как есть:
смелость sil <[500]> город+а берёт
Пример4: Говорить шепотом
В item надо отправить текст как есть:
<speaker is_whisper="true"'>Я говорю тихо-тихо!"
Пример5: Эффекты можно комбинировать
В item надо отправить текст как есть:
<speaker voice='kostya' audio='alice-sounds-game-win-1.opus' effect='megaphone'>добро пожаловать
А еще можно получить обложку трека
Channel coverURI
содержит ссылку
Пример https://avatars.yandex.net/get-music-content/2383988/728fabfe.a.9594918-1/%%
В конце вместо %% размер обложки, например 600x600
https://avatars.yandex.net/get-music-content/2383988/728fabfe.a.9594918-1/600x600
В конструкторе правил в секции Then Action при нажатии Show All доступен блок YandexStation и действия:
- Say Text - произнести текст
- Whisper - произнести текст шепотом
- Voice - произнести текст голосом. Голос выбирается из списка доступных голосов (взято отсюда https://github.com/tayanov/Yandex-tts-speechkit-FIX/blob/master/custom_components/yandextts/tts.py)
- Prevent Listening - не ждать ответа (возможно, не работает?)
- Voice Command - выполнить команду
В правилах доступны следующие команды:
sayText
- передача текста для синтеза речи (tts). На вход может принимать один или два параметра:text
- текст для ситезаvoice
/whisper
- голос (voice), которым произнести. https://cloud.yandex.com/en-ru/docs/speechkit/tts/voices значение из столбца Voice. Но вместо голоса можно указать true (whisper) и тогда произношение будет шепотом.
voiceCommand
- передача команды для выполнения. На вход принимает один параметр:text
- текст команды для выполнения
play
pause
next
prev
volumeUp
- увеличивает громксоть на 1 шагvolumeDown
- уменьшает громкость на 1 шагsetVoluem(level)
- устанавливает громкость на заданный уровень levellevel
- целочисленое значени от 0 до 10
mute(value)
- приглушает громксоть / возвращает обратноvalue
- true для приглушения, false - вернуть громкость обратно
stopListening
- если колонка что-то говорила, она потом ждет продолжения беседы, но если в этот момент послать команду, то колонка перестанет ждать продолжение беседы. Может быть удобно, когда отправили командуsayText
и затемstopListening
Команды вызываются следующим образом:
things.getActions('yandexstation', thing_uid).sayText(text);
thing_uid - идентификатор thing YandexStation, который вы создавали
Примеры:
var things = Java.type('org.openhab.core.model.script.actions.Things');
var action = things.getActions('yandexstation', 'yandexstation:station:9b957406f6');
// Произнесет текст
action.sayText('Привет, как дела');
// Произнесет текст голосом Кости
action.sayText('Привет, я говорю голосом Кости', 'kostya');
// Произнесет текст шепотом
action.sayText("Как дела", true);
// Произнесет текст шепотом
action.sayText("<speaker is_whisper='true'>Как дела");
// Произнесет текст голосом Захар
action.sayText("<speaker voice='zahar'>Как дела");
// выполнит команду так же, как бы вы ей сказали: - Алиса, выключи свет
action.voiceCommand('Включи свет');
Достпен модуль YandexStation для Blockly