{"id":468,"date":"2026-09-15T09:15:00","date_gmt":"2026-09-15T07:15:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?p=468"},"modified":"2026-10-26T12:06:48","modified_gmt":"2026-10-26T11:06:48","slug":"local-voice-control-in-home-assistant-with-whisper-piper","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/","title":{"rendered":"Local Voice Control in Home Assistant with Whisper &amp; Piper"},"content":{"rendered":"<p>Local voice control combines four tasks: detecting a wake word, turning speech into text, carrying out a matching command and speaking a response. Home Assistant, Whisper and Piper can keep this processing within the local network. The complete chain matters: a local voice assistant does not make a cloud-connected socket work offline.<\/p>\n<h2>1. What each component does<\/h2>\n<p><strong>Whisper<\/strong> transcribes the recording. The local <strong>Home Assistant conversation agent<\/strong> maps supported sentences to actions. <strong>Piper<\/strong> generates spoken output. A voice satellite is a separate device with a microphone and speaker, such as a unit placed in a room. Each component has a separate responsibility and can fail independently.<\/p>\n<p>Wake-word detection can run on the satellite with <strong>microWakeWord<\/strong> or on a server with a service such as <strong>openWakeWord<\/strong>. Server-side detection requires audio to enter the local network before the wake word has been recognized; depending on the device implementation, voice activity detection limits that stream by checking whether speech is present. \u201cAudio is only transmitted after the wake word\u201d is therefore not universally true. An English wake word does not determine the language of the following commands.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-468-voice-20261024-en.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Four separate stages; a local voice chain requires locally reachable services and devices.\"><figcaption>Four separate stages; a local voice chain requires locally reachable services and devices.<\/figcaption><\/figure>\n<h2>2. Hardware selection based on measurements<\/h2>\n<p>A model name does not guarantee a response time. Microphone quality, background noise, language, sentence length and concurrent workloads affect the result. Smaller Whisper models require less processing power but can misrecognize names more often. An initial comparison can use the same ten short commands with two model sizes, recording both transcription errors and waiting time.<\/p>\n<p>The usual faster-whisper implementation runs on a CPU or supported NVIDIA GPUs through CUDA. A Google Coral Edge TPU is not an interchangeable accelerator for this stack. If transcription is too slow, a more powerful local computer is an option. Speech-to-Phrase is another option for a limited set of home-control commands, with stronger restrictions on open-ended content. Whisper remains useful when open transcription is required.<\/p>\n<h2>3. Local services and assistant configuration<\/h2>\n<ol>\n<li><strong>Installation type:<\/strong> Home Assistant OS provides managed apps, formerly called add-ons. Home Assistant Container requires separately operated voice services. The older Supervised installation has been unsupported since Home Assistant 2025.12.<\/li>\n<li><strong>Voice services:<\/strong> On Home Assistant OS, setup consists of installing and starting Whisper and Piper, then adding the discovered Wyoming integrations. External services can be connected using their actual address and configured port. Wyoming connects these services to Home Assistant; the ESPHome integration connects an ESPHome satellite.<\/li>\n<li><strong>Assistant settings:<\/strong> Under Settings \u2192 Voice assistants, the configuration uses the required language, Home Assistant as conversation agent, Whisper for speech recognition and Piper for speech output. The model and voice must match the language and must first be downloaded.<\/li>\n<li><strong>One device made available for a test:<\/strong> For example, a locally connected light with an unambiguous name and an assigned area. An entity represents an individual function or state in Home Assistant, such as a light\u2019s on\/off state. Its presence does not automatically allow Assist to control it.<\/li>\n<li><strong>Text test before audio:<\/strong> A simple typed command separates naming and exposure problems from microphone and transcription issues. The same command is then tested through the satellite.<\/li>\n<\/ol>\n<p>Voice services belong on a trusted network with restricted reachability. A port number in an example is not an instruction to expose it to the Internet. An optional cloud conversation agent or cloud device integration changes the data path and needs separate consideration when the intended chain is entirely local.<\/p>\n<h2>4. ESP32-S3-BOX-3: device-specific firmware<\/h2>\n<p>A BOX-3 is not an arbitrarily wired ESP32 development board. Its microphones, audio codecs, speaker, memory and buttons require configuration for the exact device variant. A generic YAML file with arbitrary I\u00b2S pins is not a complete BOX-3 setup.<\/p>\n<p>The official Home Assistant device guide provides installation paths for BOX, BOX-3 and BOX-Lite and links their ESPHome configurations. After device-specific setup, Wi-Fi connectivity, the ESPHome integration, selected assistant and wake word must match. Existing device configuration needs a backup before a firmware change.<\/p>\n<p>A custom build also needs networking, a valid encrypted API connection, audio input and output, and logic to start and resume listening. <code>use_wake_word: true<\/code> alone does not create a complete continuous listening loop or automatically enable on-device microWakeWord. Configuration validation cannot replace microphone and speaker tests on the actual hardware.<\/p>\n<h2>5. Diagnosis by processing stage<\/h2>\n<ul>\n<li><strong>No activation:<\/strong> The checks cover microphone mute, detection location, selected wake word and satellite connectivity.<\/li>\n<li><strong>Incorrect text:<\/strong> The comparison covers recording quality, distance, language and Whisper model. Gain changes need small steps: excessive amplification clips the recording and reduces recognition quality.<\/li>\n<li><strong>Correct text but no action:<\/strong> The checks cover permission for Assist to control the entity, names, alternative names (aliases), area and supported wording. The built-in agent uses sentence patterns, which can be extended with custom sentences.<\/li>\n<li><strong>Action without an audible reply:<\/strong> Piper output and the audio path to the satellite need separate tests. A working microphone path does not prove a working speaker path.<\/li>\n<\/ul>\n<p>The assistant&#8217;s debug view helps distinguish these stages. A trace of a specific failed request provides better evidence than replacing every component at once.<\/p>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>Does control work without the Internet?<\/h3>\n<p>After the required models are installed, the local voice chain can operate without Internet access. Power, the local network, voice services and controlled devices must remain available. A test with the Internet temporarily disconnected and several known commands checks that assumption in practice. Downloads, updates and cloud devices may still require Internet access.<\/p>\n<h3>Does local processing mean no recordings exist?<\/h3>\n<p>No. Local primarily describes the processing location. Debug data, recordings, backups and additional integrations need separate assessment. A physical microphone mute switch and a traceable data path complement the software configuration. Whisper and Piper alone guarantee neither complete availability nor the absence of stored data.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.home-assistant.io\/voice_control\/voice_remote_local_assistant\/\">www.home-assistant.io\/voice_control\/voice_remote_local_assistant\/<\/a><\/li>\n<li><a href=\"https:\/\/www.home-assistant.io\/integrations\/wyoming\/\">www.home-assistant.io\/integrations\/wyoming\/<\/a><\/li>\n<li><a href=\"https:\/\/www.home-assistant.io\/voice_control\/about_wake_word\/\">www.home-assistant.io\/voice_control\/about_wake_word\/<\/a><\/li>\n<li><a href=\"https:\/\/contributors.home-assistant.io\/os\/installation-types\/\">contributors.home-assistant.io\/os\/installation-types\/<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/SYSTRAN\/faster-whisper\">github.com\/SYSTRAN\/faster-whisper<\/a><\/li>\n<li><a href=\"https:\/\/www.home-assistant.io\/voice_control\/s3_box_voice_assistant\/\">www.home-assistant.io\/voice_control\/s3_box_voice_assistant\/<\/a><\/li>\n<li><a href=\"https:\/\/esphome.io\/components\/voice_assistant\/\">esphome.io\/components\/voice_assistant\/<\/a><\/li>\n<li><a href=\"https:\/\/www.home-assistant.io\/voice_control\/troubleshooting\/\">www.home-assistant.io\/voice_control\/troubleshooting\/<\/a><\/li>\n<li><a href=\"https:\/\/contributors.home-assistant.io\/architecture\/platform\/voice\/\">contributors.home-assistant.io\/architecture\/platform\/voice\/<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Local voice control with Home Assistant, Whisper and Piper: component setup, device-specific firmware and checks for recognition errors. Offline operation also depends on the network and controlled devices.<\/p>\n","protected":false},"author":1,"featured_media":23211,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92624],"tags":[91380,91279,91365,91626,91219],"class_list":["post-468","post","type-post","status-publish","format-standard","hentry","category-tutorials-en-smart-home","tag-artificial-intelligence","tag-prywatnosc-danych-pl","tag-home-assistant","tag-smart-home-de","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Local Voice Control in Home Assistant with Whisper &amp; Piper | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Local voice control in Home Assistant: Whisper, Piper, the Wyoming protocol and an Assist pipeline configured without cloud services.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Local Voice Control in Home Assistant with Whisper &amp; Piper | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Local voice control in Home Assistant: Whisper, Piper, the Wyoming protocol and an Assist pipeline configured without cloud services.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-15T07:15:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T11:06:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-468-voice-20261024-dark.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Local Voice Control in Home Assistant with Whisper &amp; Piper\",\"datePublished\":\"2026-09-15T07:15:00+00:00\",\"dateModified\":\"2026-10-26T11:06:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/\"},\"wordCount\":1022,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-468-voice-20261024-dark.png\",\"keywords\":[\"Artificial Intelligence\",\"Data Privacy\",\"Home Assistant\",\"Smart Home\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/\",\"name\":\"Local Voice Control in Home Assistant with Whisper &amp; Piper | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-468-voice-20261024-dark.png\",\"datePublished\":\"2026-09-15T07:15:00+00:00\",\"dateModified\":\"2026-10-26T11:06:48+00:00\",\"description\":\"Local voice control in Home Assistant: Whisper, Piper, the Wyoming protocol and an Assist pipeline configured without cloud services.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-468-voice-20261024-dark.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/hero-468-voice-20261024-dark.png\",\"width\":1200,\"height\":630,\"caption\":\"Local Voice Control in Home Assistant with Whisper &amp; Piper\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/smart-home\\\/tutorials-en-smart-home\\\/local-voice-control-in-home-assistant-with-whisper-piper\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Local Voice Control in Home Assistant with Whisper &amp; Piper\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Local Voice Control in Home Assistant with Whisper &amp; Piper | Lukas Wojcik","description":"Local voice control in Home Assistant: Whisper, Piper, the Wyoming protocol and an Assist pipeline configured without cloud services.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/","og_locale":"en_US","og_type":"article","og_title":"Local Voice Control in Home Assistant with Whisper &amp; Piper | Lukas Wojcik","og_description":"Local voice control in Home Assistant: Whisper, Piper, the Wyoming protocol and an Assist pipeline configured without cloud services.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-15T07:15:00+00:00","article_modified_time":"2026-10-26T11:06:48+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-468-voice-20261024-dark.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Local Voice Control in Home Assistant with Whisper &amp; Piper","datePublished":"2026-09-15T07:15:00+00:00","dateModified":"2026-10-26T11:06:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/"},"wordCount":1022,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-468-voice-20261024-dark.png","keywords":["Artificial Intelligence","Data Privacy","Home Assistant","Smart Home","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/","name":"Local Voice Control in Home Assistant with Whisper &amp; Piper | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-468-voice-20261024-dark.png","datePublished":"2026-09-15T07:15:00+00:00","dateModified":"2026-10-26T11:06:48+00:00","description":"Local voice control in Home Assistant: Whisper, Piper, the Wyoming protocol and an Assist pipeline configured without cloud services.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-468-voice-20261024-dark.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/10\/hero-468-voice-20261024-dark.png","width":1200,"height":630,"caption":"Local Voice Control in Home Assistant with Whisper &amp; Piper"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/smart-home\/tutorials-en-smart-home\/local-voice-control-in-home-assistant-with-whisper-piper\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Local Voice Control in Home Assistant with Whisper &amp; Piper"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=468"}],"version-history":[{"count":10,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/468\/revisions"}],"predecessor-version":[{"id":26772,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/468\/revisions\/26772"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/23211"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}