🎤

В очередную часовую сессию по расширению электронного болвана добавилось три новых команды:

* Переключить выключатель из Home Assistant, в первую очередь те, что отвечают за алгоритм подстройки яркости и цветовой температуры — но список ещё предстоит наполнить

* ("Сделай {свет} поярче") Сделать на выбранных лампах максимальную яркость и белый свет — когда важнее что-то разглядеть, нежели поддерживать иллюзию светового дня; а вышеупомянутый подстройщик, если его не выключить, в течение 5 минут вернёт всё обратно

* ("А текстом?", "Пришли на телефон") Прислать последний ответ пуш-уведомлением на телефон, откуда он сразу попадает ещё и на наручные часы (и сохраняется в истории) — разговаривает он всё-таки с дефектами, иногда "хотелось бы понять, о чём говорит иностранец", скажем, "шесть" он иногда произносит как "шос" или вообше "шс"

🎤

Я делал команды, я инициировал объявления, но до сегодняшнего дня не пробовал это *сочетать*.

Теперь мой "очень ценный электронный болван" умеет, когда заходит солнце, спрашивать, включить ли мне свет.

Не получив ответа, получив ответ "Не надо"/"Нет" или получив что-то левое, он… ну да, ничего не делает.
Зато если согласиться, то он делает, что собирался.

🤗 И минутка благодарности.

Вот забавно, очень простое решение, а насколько доставляет им потом пользоваться.

А отделял меня от него, по большей части, пакет для распознавания речи. Который сам составлен из пачки пакетов поменьше, а также голосовых профилей на записях — от множества людей, которым было не наплевать на открытость проектов вокруг распознавания и синтеза речи, чтобы пожертвовать свои усилия по разработке, а также записи голосов. Я едва ли смогу собрать полный список этих людей даже если попытаюсь, но если вы из них, знайте, что вы крутые и сделали мне, и наверняка не только мне, немало дней.

Ах. В этом весь мир IT.
прекрасен. В нём практически всё полезное можно сделать без единой строчки кода. Но некоторые вещи, казалось бы банальные и простые, внезапно оказываются окружены несколькими кругами ада. И мне, видимо, повезло найти именно такой случай.

Идея простая — взять звуки из MGSV: The Phantom Pain, объявляющие о закате и рассвете, и научить их проигрывать при соответствующих событиях из .

Встроенные HTTP-средства, кажется, вообще не предполагают работы с файлами ни в каком виде — номинально упоминают это в документации, но реально дают пустые значения; а сторонние либо спускаются совсем на уровень внутренностей HTTP (multipart, boundaries, вот это всё), либо не поддерживают бинарные файлы (в моём случае, WAV).

Спасибо хотя бы за то, что там есть аварийный выход — возможность дёргать команды в шелле. Я загрузил WAV-файлы туда через scp руками, а для их отправки написал команду на базе curl.

Но как-то это всё вообще не в духе проекта.

🎤 Хроники .

Связал своего голосового помощника с Deck, и теперь он на вопрос "чем заняться" выбирает случайную карточку из "актуального" на этой доске и зачитывает вслух. Просто, понятно, более-менее юзер-френдли — для дальнейшей работы фичи контакт с каким-либо кодом или иным техническим текстом не нужен вообще: у Deck есть хорошие вебморда и мобильное приложение.

За счёт простоты механизма реализация заняла примерно минут 15. Сила ! Я этот пост дольше пишу.

Что я усвоил: Deck прекрасно работает в качестве чистого источника информации — готовые UI, простой API. Но когда нужно реагировать на изменения в нём, например для переобучения модели распознавания речи, прямого решения нет. Разве что регулярно опрашивать сервер, следя за ETag (кэш-отпечатком) ответа и при каждом его изменении запускать переобучение. Оно недолгое, несколько секунд, но… не. Не.

Хочу нормальные вебхуки. К сожалению, они если и будут, то нескоро: github.com/nextcloud/deck/issu

🎤 Хроники , безоблачного голосового помощника

Я понял важную вещь — он меня не слушает, пока не доиграет звук пробуждения, а когда выслушает, ничего не делает пока не проиграет звук принятия.

Так что звуки R2D2 это, конечно, прикольно и отсылочка, но в посведневном использовании — длинно.

Откопал в интернетах клацание механической клавиатуры и нарезал немножко — получилось... знаете звук нажатия на кнопку кассетного магнитофона/диктофона? При котором кнопка ещё "залипает", с таким сочным хрустом. И с каким звуком "выпрыгивает", если нажать на "стоп"?

Вот получилось примерно это. Звуки очень быстрые, и с характером — будто голосовой помощник прикидывается старым диктофоном. В каком-то смысле им даже и является.

🎤 Хроники (тред)

шикарен. Наконец-то сделал средство, которое поможет избежать значительного количества ложных срабатываний: "помолчи N минут".

Самым сложным моментом во всей этой истории было подружиться с русским языком, а именно числительными и падежами. В языке грамматики команд поддержка числителей только в именительном падеже и без сопоставления правилам для числительных, и в ответах тоже неплохо бы соблюдать правила, никому не хочется слышать "замолкаю на 1 минут".

Под выбор числительного в ответах я даже подпоток (subflow) сделал. Попутно, кстати, нашёл прелюбопытнейшую справочную страничку на сайте Unicode о правилах выбора форм слов для разных числительных в разных языках мира. Немецкий больше не кажется таким уж страшным!
unicode.org/cldr/cldr-aux/char

Show thread

🎤 Хроники (тред)

✔️ Качественный скачок сегодня: привинтил к нему . Теперь Rhasspy умеет говорить (не только отвечать, а, например, оповещать о событиях). И в целом работать над сценариями с внутренним состоянием там явно будет удобнее.

🤔 NodeRED силён! Его получилось вклинить между Rhasspy и так, что Rhasspy общается с ним по тому же API, от HA. NR обрабатывает что может, а нераспознанное шлёт дальше, в HA, где живут остальные обработчики. С – совместимость.

Show thread

🎤 Хроники , эпизоды нумеровать уже не вижу особого смысла. Предыдущие – в треде.

Произошло не сказать чтоб много. Разве что я научил его посредством ИК-излучателя запускать вентилятор на заданную скорость. Началось с наблюдения, что вентилятор всегда стартует на скорости 3 (из 10), и оттуда понеслось.

Идея внедрения отвечалки на вопрос "Где хранится Х?" почти стоит, но не заброшена – в поисках способа редактирования я набрёл на "домашний AirTable", пробую его: nocodb.com/

Show thread

🎤 Хроники (эпизод 4)
В очередном обновлении прилетел речевой движок Larynx с тремя русскими голосами, которые звучат неплохо для голосов на публичных записях. Но местами со странностями, поэтому формулировки ответов приходится проверять на произносимость.
А ещё при нажатии на номер версии в вебморде открывается документация к API. Надо теперь прибить его к Home Assistant и можно делать команды типа "выключить на N часов/минут" или прилепить ещё один обработчик команд (?).
Ух-х!

Show thread

🎤 Хроники (эпизод 3.2)

Рассуждаю на тему системы инвентаря, у которой можно спросить где что лежит, если забыл. Пока что вопросы "как наполнить данными и поддерживать их актуальность" не пугают, интересует скорее сторона техническая.

В Rhasspy есть "слоты-программы", которые при тренировке запускаются и для каждой строчки вывода формируется предложение.
Надо сделать редактируемую таблицу и скрипт получающий из неё список только предметов, а в Home Assistant сопоставлять. Несложно?

Show thread

🎤 Хроники (эпизод 3.1)

Играться с этой шуткой весело!
Сегодня рассуждал, что в школах для лабораторных по техническим языкам до перехода к программированию отличная игрушка.
Но для полноты веселья не хватает чего-то вроде "навыков", чего-то что паковало бы шаблоны предложений вместе с обработчиками действий в нечто относительно самостоятельное и распространяемое.

Show thread

🎤 Хроники (эпизод 3)

Я лентяй и никак не приверчу RHVoice, и уже начинаю привыкать к eSpeak, начал делать запросы с обратной связью. Ну там, погоду на улице спросить, или время.

Последнее новшество – "брось кубик". С ним я узнал о новой фиче, диапазонах, а-ля (2..100), которые Rhasspy разворачивает в предложения с каждым значением. Был уверен, что это только для английского работает, но нет! 😊

Теперь я могу сказать ему "кинь d37" и задуматься, какой же формы этот кубик… 🤔

Show thread

Ура! Запустил в своём умном доме
rhasspy.readthedocs.io/en/late
Теперь он меня слушается в буквальном смысле, и продолжит слушаться, даже если оторвать интернет.

• Активация через Porcupine, готовых моделей для русских слов там нет, но есть схоже звучащие английские варианты.
• Распознавание речи через Kaldi. Пока ни разу не ошибся.
• Команды шлёт в Документацию надо б дописать.
• Отвечает… 'ом. Позже прикручу , а пока буду пугать гостей, хи-хи. :blobcatgoogly:

Mastodon.ml

Русская нода социальной сети "Мастодонт", части Fediverse - всемирной федерации социальных сетей. Зона общения, свободная от рекламы и шпионажа, теперь и в России.