The Home Assistant Cloud speech-to-text (STT) service allows Home Assistant to convert your speech into text. This can then be used, for example, to control your devices by speaking to Assist or ask it questions.
STT is automatically enabled when you are signed in to your Home Assistant Cloud account.
Trying the new speech-to-text engine
We are testing a new speech-to-text engine for Home Assistant Cloud. In our testing, it copes better with the three things we hear break most often: accents, background noise, and languages other than English.
The new engine is available as a preview feature in Labs, so it is opt-in while we gather feedback. Like every preview feature, it may still change, or be replaced by a different approach, before it becomes the default.
To try it, you need:
- Home Assistant 2026.9 or later.
- An active Home Assistant Cloud subscription, or a Home Assistant Cloud trial.
Turning on the new engine
- Go to Settings > System > Labs.
- Turn on Home Assistant Cloud: Speech-to-text.
- Confirm that you want to enable the feature.
No restart is needed, and you can turn it off again from the same page at any time. When you turn it off, your assistants go straight back to the current engine.
What changes while it is enabled
- Audio from your voice commands is processed by Soniox instead of our current provider, Microsoft Azure. It travels through a Nabu Casa proxy, which handles authentication and forwards it to the processing region closest to you. Nabu Casa does not process, store, or log your audio at any point.
- Only assistants configured to use Home Assistant Cloud for speech-to-text are affected. Everything else about your voice pipeline stays the same, including your wake word, intent handling, and text-to-speech.
- The new engine detects the end of speech itself and works best on untouched audio. Home Assistant handles this for you: on supported hardware, such as Home Assistant Voice Preview Edition, automatic gain control and noise reduction are switched off while the feature is enabled, which lets the engine do its own audio processing.
Giving feedback
Feedback is what decides whether this becomes the default for everyone, so please give it your hardest listening: the mumbled requests, the ones shouted from across the kitchen, and the ones in your own language. Tell us how it went.
Selecting the STT language
You can define the language you speak to Assist when you set up a Home Assistant Cloud voice assistant.
If you want to speak to Assist in different languages, set up an assistant for each language.

List of available languages for speech-to-text
Language options may change from time to time, so if you are missing options which are shown on this page, make sure you are running the latest version of Home Assistant.
Some variants may work better than others.
Every language below works with Azure, the current engine. Soniox, the new engine in Labs, covers most of them. Where the Soniox column says No, that language keeps using Azure even while the new engine is turned on.
| Language and region | Locale | Soniox |
|---|---|---|
| Afrikaans (South Africa) | af-ZA | |
| Amharic (Ethiopia) | am-ET | No |
| Arabic (United Arab Emirates) | ar-AE | |
| Arabic (Bahrain) | ar-BH | |
| Arabic (Algeria) | ar-DZ | |
| Arabic (Egypt) | ar-EG | |
| Arabic (Israel) | ar-IL | |
| Arabic (Iraq) | ar-IQ | |
| Arabic (Jordan) | ar-JO | |
| Arabic (Kuwait) | ar-KW | |
| Arabic (Lebanon) | ar-LB | |
| Arabic (Libya) | ar-LY | |
| Arabic (Morocco) | ar-MA | |
| Arabic (Oman) | ar-OM | |
| Arabic (Palestinian Territories) | ar-PS | |
| Arabic (Qatar) | ar-QA | |
| Arabic (Saudi Arabia) | ar-SA | |
| Arabic (Syria) | ar-SY | |
| Arabic (Tunisia) | ar-TN | |
| Arabic (Yemen) | ar-YE | |
| Azerbaijani (Azerbaijan) | az-AZ | |
| Bulgarian (Bulgaria) | bg-BG | |
| Bangla (India) | bn-IN | |
| Bosnian (Bosnia & Herzegovina) | bs-BA | |
| Catalan (Spain) | ca-ES | |
| Czech (Czechia) | cs-CZ | |
| Welsh (United Kingdom) | cy-GB | |
| Danish (Denmark) | da-DK | |
| Austrian German | de-AT | |
| Swiss High German | de-CH | |
| German (Germany) | de-DE | |
| Greek (Greece) | el-GR | |
| Australian English | en-AU | |
| Canadian English | en-CA | |
| British English | en-GB | |
| English (Ghana) | en-GH | |
| English (Hong Kong SAR China) | en-HK | |
| English (Ireland) | en-IE | |
| English (India) | en-IN | |
| English (Kenya) | en-KE | |
| English (Nigeria) | en-NG | |
| English (New Zealand) | en-NZ | |
| English (Philippines) | en-PH | |
| English (Singapore) | en-SG | |
| English (Tanzania) | en-TZ | |
| American English | en-US | |
| English (South Africa) | en-ZA | |
| Spanish (Argentina) | es-AR | |
| Spanish (Bolivia) | es-BO | |
| Spanish (Chile) | es-CL | |
| Spanish (Colombia) | es-CO | |
| Spanish (Costa Rica) | es-CR | |
| Spanish (Cuba) | es-CU | |
| Spanish (Dominican Republic) | es-DO | |
| Spanish (Ecuador) | es-EC | |
| European Spanish | es-ES | |
| Spanish (Equatorial Guinea) | es-GQ | |
| Spanish (Guatemala) | es-GT | |
| Spanish (Honduras) | es-HN | |
| Mexican Spanish | es-MX | |
| Spanish (Nicaragua) | es-NI | |
| Spanish (Panama) | es-PA | |
| Spanish (Peru) | es-PE | |
| Spanish (Puerto Rico) | es-PR | |
| Spanish (Paraguay) | es-PY | |
| Spanish (El Salvador) | es-SV | |
| Spanish (United States) | es-US | |
| Spanish (Uruguay) | es-UY | |
| Spanish (Venezuela) | es-VE | |
| Estonian (Estonia) | et-EE | |
| Basque (Spain) | eu-ES | |
| Persian (Iran) | fa-IR | |
| Finnish (Finland) | fi-FI | |
| Filipino (Philippines) | fil-PH | |
| French (Belgium) | fr-BE | |
| Canadian French | fr-CA | |
| Swiss French | fr-CH | |
| French (France) | fr-FR | |
| Irish (Ireland) | ga-IE | No |
| Galician (Spain) | gl-ES | |
| Gujarati (India) | gu-IN | |
| Hebrew (Israel) | he-IL | |
| Hindi (India) | hi-IN | |
| Croatian (Croatia) | hr-HR | |
| Hungarian (Hungary) | hu-HU | |
| Armenian (Armenia) | hy-AM | No |
| Indonesian (Indonesia) | id-ID | |
| Icelandic (Iceland) | is-IS | No |
| Italian (Switzerland) | it-CH | |
| Italian (Italy) | it-IT | |
| Japanese (Japan) | ja-JP | |
| Javanese (Indonesia) | jv-ID | No |
| Georgian (Georgia) | ka-GE | No |
| Kazakh (Kazakhstan) | kk-KZ | |
| Khmer (Cambodia) | km-KH | No |
| Kannada (India) | kn-IN | |
| Korean (South Korea) | ko-KR | |
| Lao (Laos) | lo-LA | No |
| Lithuanian (Lithuania) | lt-LT | |
| Latvian (Latvia) | lv-LV | |
| Macedonian (North Macedonia) | mk-MK | |
| Malayalam (India) | ml-IN | |
| Mongolian (Mongolia) | mn-MN | No |
| Marathi (India) | mr-IN | |
| Malay (Malaysia) | ms-MY | |
| Maltese (Malta) | mt-MT | No |
| Burmese (Myanmar [Burma]) | my-MM | No |
| Norwegian Bokmål (Norway) | nb-NO | |
| Nepali (Nepal) | ne-NP | No |
| Flemish | nl-BE | |
| Dutch (Netherlands) | nl-NL | |
| Polish (Poland) | pl-PL | |
| Pashto (Afghanistan) | ps-AF | No |
| Brazilian Portuguese | pt-BR | |
| European Portuguese | pt-PT | |
| Romanian (Romania) | ro-RO | |
| Russian (Russia) | ru-RU | |
| Sinhala (Sri Lanka) | si-LK | No |
| Slovak (Slovakia) | sk-SK | |
| Slovenian (Slovenia) | sl-SI | |
| Somali (Somalia) | so-SO | No |
| Albanian (Albania) | sq-AL | |
| Serbian (Serbia) | sr-RS | |
| Swedish (Sweden) | sv-SE | |
| Swahili (Kenya) | sw-KE | |
| Swahili (Tanzania) | sw-TZ | |
| Tamil (India) | ta-IN | |
| Telugu (India) | te-IN | |
| Thai (Thailand) | th-TH | |
| Turkish (Türkiye) | tr-TR | |
| Ukrainian (Ukraine) | uk-UA | |
| Uzbek (Uzbekistan) | uz-UZ | No |
| Vietnamese (Vietnam) | vi-VN | |
| Wu Chinese (China) | wuu-CN | No |
| Cantonese (China) | yue-CN | No |
| Chinese (China) | zh-CN | |
| Chinese (China, SHANDONG) | zh-CN-shandong | |
| Chinese (China, SICHUAN) | zh-CN-sichuan | |
| Chinese (Hong Kong SAR China) | zh-HK | |
| Chinese (Taiwan) | zh-TW | |
| Zulu (South Africa) | zu-ZA | No |
Related topics
- Assist: supported sentences
- Setting up a Home Assistant Cloud voice assistant
- Home Assistant Cloud text-to-speech (TTS)
Edit this article on GitHub