Tekst naar Spraak voor WPML-sites: Wat Echt Werkt

10 min lezen 14 min luisteren
Tekst naar Spraak voor WPML-sites: Wat Echt Werkt

Als je een WPML-site beheert en wilt dat elke vertaling een eigen ingesproken versie heeft in de juiste stem, moet de plugin die je kiest drie dingen goed doen: het vertaalde bericht uitlezen, per taal een apart audiobestand aanmaken en de actieve taal herkennen binnen AJAX-aanroepen. De meeste TTS-plugins falen op één van die drie punten. Tekst naar Spraak - TTSWP is gebouwd om alle drie correct af te handelen.

Dit artikel is het praktische tegenstuk van onze Weglot-handleiding. De technische invalshoek is tegengesteld, dus we beginnen met uitleggen waarom.

WPML slaat vertalingen op als echte berichten. Weglot niet.

WPML en Weglot lossen meertalig WordPress op twee totaal verschillende manieren op, en dat verschil bepaalt wat een TTS-plugin moet doen.

WPML maakt voor elke vertaling een apart berichtrecord aan. De Engelse versie van een artikel staat in wp_posts met één ID. De Spaanse versie staat in dezelfde tabel met een ander ID. WPML koppelt ze via de tabel icl_translations. De vertaalde tekst is echte tekst in de database, bewerkt door een mens of via de machinevertaalpijplijn van WPML.

Weglot werkt andersom. De database bevat alleen het origineel. Vertalingen worden tijdens het laden aangemaakt en in de HTML ingevoegd voordat de pagina de browser bereikt. Een plugin die get_post() aanroept op een Weglot-site ziet altijd alleen de brontaal.

Voor TTS maakt dit alles uit. Op WPML is het uitlezen van de berichtinhoud uit de database correct. De vertaalde tekst staat er al. De fouten zitten in welk bericht de plugin uitleest, welke taal hij denkt te zijn en of hij één of meerdere audiobestanden opslaat.

Diagram dat de aparte-berichtopslag van WPML vergelijkt met de runtime-vertaling van Weglot, met de gevolgen voor TTS-audiobestanden per model
WPML bewaart elke vertaling als een echt bericht in de database. Weglot vertaalt tijdens het laden. De twee modellen vereisen verschillende TTS-aanpakken.

De vier veelvoorkomende fouten bij WPML TTS-plugins

We hebben meerdere configuraties getest op een meertalige WPML-stagingsite. Dezelfde vier problemen kwamen steeds terug. Als jouw huidige plugin één van deze fouten maakt, klopt de audio die bezoekers horen niet met wat je hebt gepubliceerd.

1. Audio in de verkeerde taal door AJAX-taaldetectie

Dit is de stille saboteur. De meeste TTS-spelers halen het audiobestand of de stream-URL op via een admin-ajax- of REST-aanroep nadat de pagina is geladen. Binnen die aanroep heeft WordPress de front-end URL-context verloren. De plugin vraagt WPML: "in welke taal zijn we?" en krijgt het verkeerde antwoord.

De meest voorkomende oorzaak is de verouderde constante ICL_LANGUAGE_CODE. Die wordt vroeg in het verzoek eenmalig gedefinieerd en weerspiegelt de taal die WPML bij het opstarten heeft gedetecteerd. Bij een AJAX-aanroep vanuit een Spaanse pagina geeft die constante vaak de standaardtaal terug, niet het Spaans. De TTS-plugin genereert dan Engelse audio voor een Spaans artikel, of haalt een gecached Engels bestand op en speelt dat af onder de Spaanse speler.

De juiste aanpak is het gebruik van de runtime-filters van WPML. De filter wpml_current_language geeft de actieve taal terug op het moment dat je ernaar vraagt. De hook wpml_post_language_details geeft de taal van een specifiek bericht terug, wat nog veiliger is omdat het de audio koppelt aan het bericht-ID in plaats van aan de toestand van het verzoek.

Hoe je het als lezer herkent: open een vertaald artikel, druk op afspelen en luister naar de eerste seconde audio. Hoor je een Engelse stem op een niet-Engelse pagina, dan gebruikt je plugin het verkeerde taaldetectiepad.

2. Één audiobestand gedeeld door alle vertalingen

Sommige plugins genereren audio wanneer het originele bericht wordt gepubliceerd en koppelen hetzelfde bestand aan elke vertaling. Dat is snel en goedkoop, maar ook onjuist. Een Spaanstalige lezer krijgt Engelse audio te horen, of een synthetisch accent dat niet past bij de pagina die hij leest.

Omdat WPML-vertalingen aparte berichten zijn met aparte ID's, is het correcte gedrag om per vertaald bericht een nieuw audiobestand te genereren. Elk bestand wordt opgeslagen bij zijn eigen bericht-ID en alleen geserveerd aan die vertaling. TTSWP volgt dit model en gebruikt het bericht-ID, niet het originele ID, als cachekey.

3. Dezelfde stem voor elke taal

Een Frans artikel ingesproken door een op Engels getrainde stem klinkt vreemd, ook als de woorden kloppen. ElevenLabs-stemmen dragen accent en prosodie mee vanuit hun trainingsdata. Een stem getraind op Amerikaans Engels leest Frans met een Amerikaans accent, tenzij je een stem kiest die bij de doeltaal past.

Met TTSWP kun je per WPML-taal één ElevenLabs-stem instellen. De Spaanse vertaling krijgt een op Spaans getrainde stem, de Duitse vertaling een Duitse stem, enzovoort. Zie de documentatie over taal-stemkoppeling voor de exacte configuratie.

4. Schema zonder taalvermelding van de audio

Dit is het AEO-detail dat de meeste plugins negeren. De gestructureerde data van AudioObject moet een eigenschap inLanguage bevatten. De waarde moet een IETF BCP 47-tag zijn (es, de, nb-NO) die overeenkomt met de hreflang van de pagina.

Een overeenkomende inLanguage-waarde geeft zoekmachines en AI-tools een duidelijk, machineleesbaar signaal over de taal van de audio. Het versterkt het hreflang-signaal dat al op de pagina staat. Als het schema ontbreekt of elke vertaling dezelfde Engelstalige waarde deelt, verdwijnt dat signaal en kunnen taalbewuste systemen de versies niet van elkaar onderscheiden. We behandelen hoe AI-zoekmachines omgaan met audio in onze handleiding over AEO en audio.

Het juiste ElevenLabs-model kiezen voor WPML-dekking

ElevenLabs biedt meerdere modellen aan, en ze ondersteunen niet allemaal dezelfde talen. Als WPML een taal aanbiedt die ElevenLabs niet ondersteunt in het model dat je kiest, kun je die vertaling niet goed inspreken.

De huidige dekking vanaf 2026:

  • Multilingual v2 ondersteunt 29 talen, waaronder Engels, Spaans, Frans, Duits, Italiaans, Portugees, Nederlands, Pools, Zweeds, Deens, Fins, Turks, Arabisch, Hindi, Japans, Koreaans en Chinees.
  • Flash v2.5 ondersteunt 32 talen: alle talen van v2 plus Hongaars, Noors en Vietnamees, met een modellatentie van circa 75 ms.
  • Eleven v3 ondersteunt 74 talen, de breedste dekking van alle modellen. Het heeft één beperking die zwaarder weegt dan de extra mogelijkheden: het is niet gebouwd voor realtime gebruik. ElevenLabs stelt dit expliciet. Het model is groter en gebruikt een hogere-kwaliteits stemcodec, waardoor generatie langer duurt. Voor realtime of gespreksgerichte toepassingen raadt ElevenLabs Flash v2.5 aan.

Voor een WPML-site met een Noorse vertaling dekt Multilingual v2 dat niet. Flash v2.5 wel. Voor een site die een taal nodig heeft die alleen v3 ondersteunt, accepteer je hogere generatielatentie in ruil voor die dekking. TTSWP koppelt elke taal aan een stem naar keuze, zodat je modellen naar behoefte kunt combineren.

Hoe je test of je TTS-plugin WPML echt aankan

Je hoeft geen code te lezen om dit te controleren. Vijf minuten in de browser vertelt je wat er gebeurt.

  1. Wissel van taal. Open het originele artikel en schakel over naar een vertaling via de WPML-taalkiezer. Controleer of de URL verandert (bijvoorbeeld naar /es/) en of de slug de vertaalde slug is.
  2. Druk op afspelen en luister. De stem moet overeenkomen met de paginataal. Een Engelse stem op een Spaanse pagina betekent dat de plugin de eerste stap niet doorstaat.
  3. Bekijk de audio-URL. Klik met de rechtermuisknop op de speler en kopieer de audiobron. Vergelijk die met de audio-URL op het originele artikel. Als beide URL's identiek zijn voor alle talen, deelt de plugin één bestand.
  4. Bekijk de paginabron en zoek naar AudioObject. Zoek naar een veld inLanguage. Dat moet gelijk zijn aan de taalcode van de pagina. Als het veld ontbreekt of altijd en toont, klopt het schema niet.
  5. Controleer hreflang. De inLanguage van de audio moet overeenkomen met de hreflang van de pagina. Afwijkingen verwarren AI-zoekopdrachten en breken taalspecifieke citaten.

Voer deze checklist uit voordat je iets aanschaft. Hij werkt voor elke TTS-plugin, niet alleen voor TTSWP.

Hoe een correcte WPML TTS-configuratie eruitziet

Dit is wat we aanbevelen voor een WPML-productiesite. Elke stap koppelt aan een bovengenoemde fout.

AandachtspuntVerkeerde aanpakJuiste aanpak
Taal in AJAXConstante ICL_LANGUAGE_CODEFilter wpml_current_language of wpml_post_language_details gekoppeld aan het bericht-ID
AudioopslagÉén bestand gedeeld door alle vertalingenÉén bestand per vertaald bericht-ID, geserveerd via CDN
StemkeuzeDezelfde stem voor elke taalÉén ElevenLabs-stem per WPML-taal
ModelkeuzeHetzelfde model voor alle talenPer taal kiezen tussen Multilingual v2, Flash v2.5 of Eleven v3
SchemaOntbrekend of alleen Engelstalig AudioObjectAudioObject met inLanguage die overeenkomt met de pagina hreflang

TTSWP volgt standaard de rechterkolom. De plugin leest het vertaalde bericht direct uit, genereert een nieuw audiobestand per bericht-ID, levert het via CloudFront en genereert per taal een AudioObject-schema. De WPML-integratiedocumentatie doorloopt de volledige configuratie.

Één eerlijke beperking

Per taal audio genereren kost meer tekens dan één gedeeld bestand. Als je een artikel van 1500 woorden publiceert en het in vijf talen vertaalt, betaal je voor vijf generaties, niet één. Dat is de prijs van correctheid. Één bestand delen zou goedkoper zijn, maar de audio zou niet bij de pagina passen. We raden het uitwisselen van lezerservaring voor kredietbesparing niet aan, en dat zeggen we ook in de creditsdocumentatie.

Als het budget krap is, genereer dan alleen audio voor de talen die echt bezoekers trekken. De taalstatistieken van WPML en je eigen analytics vertellen je welke vertalingen het waard zijn om in te spreken.

Veelgestelde vragen

Ondersteunt TTSWP WPML standaard?

Ja. Zodra beide plugins actief zijn, detecteert TTSWP WPML, leest de vertaalde berichtinhoud per taal uit en slaat een apart audiobestand op per vertaling. Je wijst per taal één stem toe in de TTSWP-instellingen en publiceert vertalingen zoals gewoonlijk. Audio wordt opnieuw gegenereerd wanneer een vertaling wordt bijgewerkt. Zie de WPML-integratiepagina voor de configuratiestappen.

Waarom leest mijn huidige TTS-plugin alles in het Engels op vertaalde pagina's?

De meest waarschijnlijke oorzaak is de verouderde constante ICL_LANGUAGE_CODE binnen een AJAX-aanroep. Tijdens AJAX geeft die constante vaak de standaardtaal van de site terug in plaats van de actieve taal, waardoor de plugin op niet-Engelstalige pagina's Engelse audio genereert of afspeelt. De oplossing is overstappen op de filter wpml_current_language of de taal direct uit het bericht-ID uitlezen.

Kan ik per WPML-taal een andere ElevenLabs-stem gebruiken?

Ja. TTSWP koppelt per WPML-taal één ElevenLabs-stem. Spaanse vertalingen worden ingesproken door een Spaanse stem, Duitse door een Duitse stem, enzovoort. Je kunt ook per taal een ander model kiezen, wat belangrijk is als een doeltaal alleen wordt ondersteund door Flash v2.5 of Eleven v3 en niet door Multilingual v2.

Welke talen dekt ElevenLabs voor WPML-sites?

Multilingual v2 dekt 29 talen, Flash v2.5 dekt 32 talen (met Noors, Hongaars en Vietnamees erbij) en Eleven v3 dekt 74 talen. Kies het model met de breedste dekking dat binnen je latentiebudget past. De meeste WPML-sites komen prima uit met Multilingual v2 of Flash v2.5. Voor zeldzamere talen stap je over op Eleven v3.

Genereert TTSWP per taal een schema voor AI-zoekopdrachten?

Ja. TTSWP genereert per vertaald bericht een AudioObject met een inLanguage-waarde die overeenkomt met de hreflang van de pagina. Dat geeft zoekmachines en AI-tools een duidelijk signaal over bij welke taalversie van het artikel de audio hoort, in plaats van alle vertalingen op dezelfde manier te taggen.

Volgende stap

Voer de vijfstappenbrowsertest uit op de TTS-plugin die je nu gebruikt. Als één stap mislukt, is dat de fout die je moet oplossen voordat je meer vertalingen toevoegt. Wil je een configuratie die alle vijf stappen standaard correct afhandelt, installeer dan Tekst naar Spraak - TTSWP via WordPress.org, koppel het aan de TTSWP-backend en wijs per WPML-taal één stem toe. De plugin regelt de rest.