{"id":468,"date":"2026-02-17T22:13:05","date_gmt":"2026-02-17T21:13:05","guid":{"rendered":"https:\/\/pcgsm.nl\/ohh\/?p=468"},"modified":"2026-02-17T22:13:07","modified_gmt":"2026-02-17T21:13:07","slug":"slim-omgaan-met-tts-in-home-assistant","status":"publish","type":"post","link":"https:\/\/pcgsm.nl\/ohh\/2026\/02\/17\/slim-omgaan-met-tts-in-home-assistant\/","title":{"rendered":"Slim omgaan met TTS in Home Assistant"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Slim omgaan met TTS in Home Assistant: \u00e9\u00e9n script voor al je speakers<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Wie met Home Assistant werkt, weet dat apparaten soms van naam veranderen. Zeker wanneer je Music Assistant gebruikt, kunnen media\u2011players regelmatig wisselen of opnieuw worden aangemaakt. Het gevolg: automations die ineens niet meer werken omdat een entity niet meer bestaat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gelukkig is er een elegante oplossing: gebruik \u00e9\u00e9n centraal script voor je TTS\u2011berichten. Daarmee hoef je nooit meer tientallen automations na te lopen wanneer een speaker verandert. Je past het alleen in het script aan en alles werkt weer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In deze blog leg ik uit hoe je dat doet.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Waarom een script gebruiken voor TTS?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Veel mensen zetten TTS\u2011acties rechtstreeks in hun automations. Dat werkt prima, totdat:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>een speaker een andere entity\u2011naam krijgt<\/li>\n\n\n\n<li>je overstapt op een andere TTS\u2011engine<\/li>\n\n\n\n<li>je een nieuwe speaker wilt gebruiken<\/li>\n\n\n\n<li>Music Assistant een device opnieuw aanmaakt<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Met een centraal script voorkom je dat probleem. Je automations verwijzen alleen naar het script, en het script bepaalt welke speaker en welke TTS\u2011engine gebruikt worden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Stap 1: Maak een helper voor je standaard speaker (optioneel maar handig)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ga naar:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Instellingen \u2192 Apparaten &amp; Services \u2192 Helpers \u2192 Input Text<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maak een nieuwe helper:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Naam:<\/strong> <code>default_tts_player<\/code><\/li>\n\n\n\n<li><strong>Waarde:<\/strong> bijvoorbeeld <code>media_player.home_mini_groep<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Deze helper kun je later eenvoudig aanpassen via de UI, zonder YAML.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Stap 2: Maak het TTS\u2011script<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dit script bevat een invoerveld voor de tekst die uitgesproken moet worden. Daardoor verschijnt er in de automation\u2011editor automatisch een tekstveld.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>script:\n  tts_to_default_speaker:\n    alias: \"TTS naar standaard speaker\"\n    fields:\n      message:\n        name: Bericht\n        description: De tekst die uitgesproken moet worden\n        required: true\n        selector:\n          text:\n    sequence:\n      - service: tts.speak\n        data:\n          cache: true\n          media_player_entity_id: \"{{ states('input_text.default_tts_player') }}\"\n          message: \"{{ message }}\"\n        target:\n          entity_id: tts.google_nl_com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Je kunt hier later zonder problemen aanpassen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>welke speaker gebruikt wordt<\/li>\n\n\n\n<li>welke TTS\u2011engine je wilt gebruiken<\/li>\n\n\n\n<li>extra functies zoals volume instellen of muziek pauzeren<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Zolang de <strong>scriptnaam hetzelfde blijft<\/strong>, blijven al je automations werken.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Stap 3: Gebruik het script in je automations<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In je automation kies je simpelweg:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>service: script.tts_to_default_speaker\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En je krijgt automatisch een veld <strong>Bericht<\/strong>, waarin je bijvoorbeeld kunt zetten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{{ generated_text.data }}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Of gewoon een vaste tekst.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Waarom dit zoveel fijner werkt<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Je hoeft nooit meer automations te openen als een speaker verandert<\/li>\n\n\n\n<li>Je kunt eenvoudig wisselen tussen TTS\u2011engines<\/li>\n\n\n\n<li>Je kunt het script uitbreiden zonder automations te breken<\/li>\n\n\n\n<li>Alles blijft overzichtelijk en centraal beheerd<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Voor iedereen die regelmatig met TTS werkt in Home Assistant is dit een enorme kwaliteitsverbetering.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Uitbreiden? Dat kan altijd<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Later kun je dit script eenvoudig uitbreiden met:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>meerdere speakers<\/li>\n\n\n\n<li>automatische selectie van beschikbare speakers<\/li>\n\n\n\n<li>volumeregeling<\/li>\n\n\n\n<li>pauzeren en hervatten van muziek<\/li>\n\n\n\n<li>fallback\u2011speakers<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Maar de basis blijft hetzelfde: \u00e9\u00e9n script, alle automations blij.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Heb je idee\u00ebn voor een vervolgblog, zoals TTS naar meerdere speakers of dynamische volumeregeling? Laat het me weten.<\/p>\n<div class=\"pvc_clear\"><\/div><p id=\"pvc_stats_468\" class=\"pvc_stats all  \" data-element-id=\"468\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/pcgsm.nl\/ohh\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p><div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Slim omgaan met TTS in Home Assistant: \u00e9\u00e9n script voor al je speakers Wie met Home Assistant werkt, weet dat apparaten soms van naam veranderen. Zeker wanneer je Music Assistant gebruikt, kunnen media\u2011players regelmatig wisselen of opnieuw worden aangemaakt. Het gevolg: automations die ineens niet meer werken omdat een entity niet meer bestaat. Gelukkig is &hellip; <\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/pcgsm.nl\/ohh\/2026\/02\/17\/slim-omgaan-met-tts-in-home-assistant\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_468\" class=\"pvc_stats all  \" data-element-id=\"468\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/pcgsm.nl\/ohh\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-468","post","type-post","status-publish","format-standard","hentry","category-geen-categorie"],"a3_pvc":{"activated":true,"total_views":38,"today_views":0},"_links":{"self":[{"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/posts\/468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/comments?post=468"}],"version-history":[{"count":1,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/posts\/468\/revisions"}],"predecessor-version":[{"id":469,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/posts\/468\/revisions\/469"}],"wp:attachment":[{"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/media?parent=468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/categories?post=468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pcgsm.nl\/ohh\/wp-json\/wp\/v2\/tags?post=468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}