Speech¶
I do most of the interactions with my smart home using my voice. This page describes my voice control setup.
Home Speakers¶
None of the existing smart speakers supports the Ukrainian language (my native and primary language). I used English (US) for my devices.
My current smart speaker setup consists of two HomePod Minis. I've migrate to Apple speakers from Google ones, because of a better sound and tighter integration with Apple devices, specifically:
- Intercom feature is great. When I leave my home I can send a quick voice message for anyone who stay at home.
- HomeKit works locally, without Internet access. I also means that voice requests work faster.
- Sound is significantly better that on Google speakers. Listening to music is much enjoyable, the bass is more punchy.
- Find My feature is also great. I can ask "Where is my phone?" and the phone will ring.
- Handoff is nice, though it doesn't work well in Ukraine.
There's also a downside of using HomePods: I still can't sync audio for Home Assistant voice announcements between speakers.
Previous setup with Google speakers
I have two Google smart speakers. I've decided to go with Google because Google Assistant is smart enough and well-integrated with different accessories.
We use these speakers all the time, mostly asking to turn devices, activate scenes, start or stop vacuum, set timers or reminders. Besides, lack of Ukrainian language support, I'm pretty happy with these speakers. Sometimes I need to repeat my command twice for the speaker to pick up, but I consider it acceptable.
I got this one as a gift for New Year 2020.
This one I got as a gift for my birthday.
Text to Speech¶
I wanted to receive voice announcements for my smart home in Ukrainian. Fortunately, Google Translate TTS supports voice generation for the Ukrainian language.
tts:
- platform: google_translate
service_name: google_say
language: uk # Ukrainian
This will generate phrases and send them to any speaker to play.
Announcements¶
I built a nice announcements script for myself. I use it like this:
service: script.announcement
data:
# Speak on smart speakers
speak: true
# Send notifications on devices
notify: true
# Title for notification
title: 'Миття авто 🚘☀️'
# Opening phrases
openings:
- 'Найближчими днями очікується хороша погода.'
- 'Хороша погода найближчі 7 днів.'
- 'Прогнозується хороша погода!'
# Main phrases
messages:
- 'Доречно помити машину.'
- 'Варто поїхати на автомийку.'
- 'Вдалий час, щоб помити авто.'
# Additional data for notifications
# Categories or page to open on notification opening
notify_data:
url: /lovelace/car
This script will generate a unique announcement using random phrases from openings
and messages
.
The generated phrase will be spoken on smart speakers and sent as a notification to the phones. I can avoid speaking or notifying via speak
and notify
flags accordingly.
notify_data
helps to pass notification categories for actionable notifications or url
to open when I click on this notification.
Do Not Disturb Flow¶
It would be annoying to get a speech announcement in the middle of the night or a working meeting. That's why I built Do Not Disturb mode.
Do Not Disturb is just automation that:
- Sets the volume of smarts speakers
- Turns on/off silence modes for fans
- Turns on/off led indicators
- Stops/starts voice announcements
… based on the current time of day (sleeping or activity time) and a switch, I can toggle whenever I want.