Tekst til tale på WPML-sider: Hvad der faktisk virker

10 min læsning 18 min lytning
Tekst til tale på WPML-sider: Hvad der faktisk virker

Kører du et WPML-site og vil have, at hver oversættelse har sin egen fortælling med den rigtige stemme, skal det plugin, du vælger, gøre tre ting rigtigt: læse det oversatte indlæg, generere en separat lydfil pr. sprog og detektere det aktuelle sprog inde i AJAX-kald. De fleste tekst til tale-plugins fejler på mindst ét af disse punkter. Tekst til tale - TTSWP er bygget til at håndtere alle tre.

Dette indlæg er den praktiske pendant til vores Weglot-guide. Den tekniske vinkel er den modsatte, så vi starter med at forklare hvorfor.

WPML gemmer oversættelser som rigtige indlæg. Weglot gør ikke.

WPML og Weglot løser flersproget WordPress på to meget forskellige måder, og den forskel afgør, hvad et tekst til tale-plugin skal gøre.

WPML opretter et separat indlæg for hver oversættelse. Den engelske version af en artikel ligger i wp_posts med ét ID. Den spanske version ligger i samme tabel med et andet ID. WPML forbinder dem via tabellen icl_translations. Den oversatte tekst er rigtig tekst i databasen, redigeret af et menneske eller via WPMLs maskinoversættelsespipeline.

Weglot er det modsatte. Databasen indeholder kun originalen. Oversættelser produceres ved kørselstid og injiceres i output-HTML, inden siden når browseren. Et plugin, der læser fra get_post() på et Weglot-site, ser kun kildesprog.

For tekst til tale ændrer det alt. På WPML er det korrekt at læse indholdet fra databasen. Den oversatte tekst er allerede der. Fejlscenarierne handler om, hvilket indlæg pluginet læser, hvilket sprog det tror, det er i, og om det gemmer én eller mange lydfiler.

Diagram der sammenligner WPMLs separate-post-lagring med Weglots kørselstidsoversættelse og konsekvenser for tekst til tale-lydfiler i hvert model
WPML gemmer hver oversættelse som et rigtigt indlæg i databasen. Weglot oversætter ved kørselstid. De to modeller kræver forskellige tekst til tale-strategier.

De fire fejlscenarier for WPML tekst til tale-plugins

Vi testede flere opsætninger på et flersproget WPML-testsite. De samme fire problemer dukkede op igen og igen. Har dit nuværende plugin nogen af disse, er den lyd, dine besøgende hører, ikke den lyd, du troede du udgav.

1. Lyd på forkert sprog på grund af AJAX-sprogdetektion

Dette er den stille sabotør. De fleste tekst til tale-afspillere henter lydfilen eller stream-URL'en via en admin-ajax- eller REST-forespørgsel, efter siden er indlæst. Inde i den forespørgsel har WordPress mistet front-end-URL-konteksten. Pluginet spørger WPML: «hvilket sprog er vi i?» og får det forkerte svar.

Den hyppige årsag er den gamle ICL_LANGUAGE_CODE-konstant. Den defineres én gang tidligt i forespørgslen og afspejler det sprog, WPML detekterede ved opstart. Under et AJAX-kald udløst fra en spansk side returnerer den konstant ofte standardsproget, ikke spansk. Tekst til tale-pluginet genererer derefter engelsk lyd til en spansk artikel eller henter en cachet engelsk fil og afspiller den under den spanske afspiller.

Den rigtige fremgangsmåde er at bruge WPMLs kørselstidsfiltre. Filteret wpml_current_language returnerer det aktive sprog i det øjeblik, du spørger. Kroge wpml_post_language_details returnerer det sprog, et bestemt indlæg tilhører, hvilket er endnu sikrere, fordi det knytter lyden til indlægs-ID'et frem for forespørgselstilstanden.

Sådan spotter du det som læser: åbn en oversat artikel, tryk afspil, og lyt til det første sekund af lyden. Hører du en engelsk stemme på en ikke-engelsk side, bruger dit plugin den forkerte sprogdetektionssti.

2. Én lydfil delt på tværs af alle oversættelser

Nogle plugins genererer lyd, når det originale indlæg udgives, og knytter den samme fil til alle oversættelser. Det er hurtigt og billigt. Det er også forkert. En spansk læser får engelsk fortælling, eller en syntetisk accent, der ikke matcher den side, de læser.

Da WPML-oversættelser er separate indlæg med separate ID'er, er den korrekte adfærd at generere en ny lydfil pr. oversat indlæg. Hver fil gemmes mod sit eget indlægs-ID og vises kun til den oversættelse. TTSWP følger denne model og bruger indlægs-ID'et, ikke original-ID'et, som cachenøgle.

3. Den samme stemme læser alle sprog

En fransk artikel fortalt af en engelsk-trænet stemme lyder forkert, selv når ordene er korrekte. ElevenLabs-stemmer bærer accent og prosodi fra deres træningsdata. En stemme trænet på amerikansk engelsk læser fransk med amerikansk accent, medmindre du tildeler en stemme, der matcher målsproget.

TTSWP lader dig tilknytte én ElevenLabs-stemme til hvert WPML-sprog. Den spanske oversættelse får en spansktrænede stemme, den tyske oversættelse en tysk stemme og så videre. Se dokumentationen for sprogfra-til-stemme-tilknytning for den præcise opsætning.

4. Schema der ikke angiver lydens sprog

Dette er det AEO-detalje, de fleste plugins overser. AudioObject-strukturerede data bør have en inLanguage-egenskab. Værdien bør være et IETF BCP 47-tag (es, de, nb-NO), der matcher sidens hreflang.

En matchende inLanguage-værdi giver søgemaskiner og AI-værktøjer et klart, maskinlæsbart signal om, hvilket sprog lyden er på. Det forstærker hreflang-signalet, der allerede er på siden. Mangler schema, eller deler alle oversættelser den samme engelsksprogede værdi, forsvinder det signal, og sprogopmærksomme systemer kan ikke skelne versionerne fra hinanden. Vi gennemgår, hvordan AI-søgemaskiner behandler lyd i vores AEO og lyd-guide.

Valg af den rigtige ElevenLabs-model til WPML-dækning

ElevenLabs tilbyder flere modeller, og de dækker ikke de samme sprog. Betjener WPML et sprog, som ElevenLabs ikke understøtter i den model, du vælger, kan du ikke fortælle den oversættelse ordentligt.

Den aktuelle dækning pr. 2026:

  • Multilingual v2 understøtter 29 sprog, herunder engelsk, spansk, fransk, tysk, italiensk, portugisisk, nederlandsk, polsk, svensk, dansk, finsk, tyrkisk, arabisk, hindi, japansk, koreansk og kinesisk.
  • Flash v2.5 understøtter 32 sprog, alle v2-sprogene plus ungarsk, norsk og vietnamesisk, med en modellatency på cirka 75 ms.
  • Eleven v3 understøtter 74 sprog og har den bredeste dækning af alle modeller. Den har én begrænsning, der opvejer dens ekstra funktioner: den er ikke bygget til realtidsbrug. ElevenLabs siger det direkte. Modellen er større og bruger et stemmecodec med højere kvalitet, så generering tager længere tid. Til realtids- eller samtalebaserede anvendelser anbefaler ElevenLabs Flash v2.5 i stedet.

For et WPML-site med en norsk oversættelse dækker Multilingual v2 ikke dette. Flash v2.5 gør. Behøver et site et sprog, der kun understøttes af v3, accepterer du højere genereringslatency til gengæld for dækning. TTSWP ruter hvert sprog til en stemme, du vælger, så du kan blande modeller efter behov.

Sådan tester du, om dit tekst til tale-plugin rent faktisk håndterer WPML

Du behøver ikke at læse kode for at tjekke dette. Fem minutter i browseren fortæller dig, hvad der sker.

  1. Skift sprog. Åbn det originale indlæg, og skift derefter til en oversættelse via WPMLs sprogswitcher. Bekræft, at URL'en ændrer sig (f.eks. til /es/), og at indlægssluggen er den oversatte slug.
  2. Tryk afspil og lyt. Stemmen bør matche sidens sprog. En engelsk stemme på en spansk side betyder, at pluginet fejlede i første trin.
  3. Undersøg lyd-URL'en. Højreklik på afspilleren, og kopiér lydkilden. Sammenlign den med lyd-URL'en på det originale indlæg. Er begge URL'er identiske på tværs af sprog, deler pluginet én fil.
  4. Se sidens kildekode, og søg efter AudioObject. Kig efter et inLanguage-felt. Det bør svare til sidens sprogkode. Mangler feltet eller er det altid en, er schema forkert.
  5. Tjek hreflang. inLanguage på lyden bør matche hreflang på siden. Uoverensstemmelser forvirrer AI-søgning og ødelægger per-sprog-citering.

Kør den tjekliste, inden du køber noget. Den virker på ethvert tekst til tale-plugin, ikke kun TTSWP.

Sådan ser en korrekt WPML tekst til tale-opsætning ud

Her er, hvad vi anbefaler på et produktions-WPML-site. Hvert trin svarer til et fejlscenarie ovenfor.

ProblemForkert tilgangKorrekt tilgang
Sprog i AJAXICL_LANGUAGE_CODE-konstantwpml_current_language-filter eller wpml_post_language_details knyttet til indlægs-ID'et
LydlagringÉn fil delt på tværs af oversættelserÉn fil pr. oversat indlægs-ID, leveret fra CDN
StemmevalgSamme stemme til alle sprogÉn ElevenLabs-stemme tilknyttet pr. WPML-sprog
ModelvalgHardkodet model til alle sprogPer-sprog-valg mellem Multilingual v2, Flash v2.5 eller Eleven v3
SchemaManglende eller udelukkende engelsk AudioObjectAudioObject med inLanguage, der matcher sidens hreflang

TTSWP følger højrespalten som standard. Pluginet læser det oversatte indlæg direkte, genererer en ny lydfil pr. indlægs-ID, leverer den via CloudFront og udsender per-sprog AudioObject-schema. WPML-integrationsdokumentationen guider dig gennem opsætningen.

Én reel begrænsning

Lyd pr. sprog koster flere tegn end én delt fil. Udgiver du en artikel på 1.500 ord og oversætter den til fem sprog, betaler du for fem genereringer, ikke én. Det er prisen for korrekthed. At dele én fil ville være billigere, men lyden ville ikke matche siden. Vi anbefaler ikke at handle læseroplevelsen for kreditbesparelser, og det siger vi også i kredit-dokumentationen.

Er budgettet stramt, generér kun lyd til de sprog, der reelt får trafik. WPMLs sprogstatistik og din analyse vil fortælle dig, hvilke oversættelser der er værd at fortælle.

Ofte stillede spørgsmål

Understøtter TTSWP WPML direkte?

Ja. Når begge plugins er aktive, registrerer TTSWP WPML, læser det oversatte indlægsindhold for hvert sprog og gemmer en separat lydfil pr. oversættelse. Du tildeler én stemme pr. sprog i TTSWP-indstillingerne og udgiver derefter oversættelser som normalt. Lyden regenereres, når en oversættelse opdateres. Se WPML-integrationssiden for opsætningstrin.

Hvorfor læser mit nuværende tekst til tale-plugin alt på engelsk på oversatte sider?

Den mest sandsynlige årsag er den forældede ICL_LANGUAGE_CODE-konstant inde i et AJAX-kald. Under AJAX returnerer den konstant ofte sitets standardsprog frem for det aktive, så pluginet genererer eller serverer engelsk lyd på ikke-engelske sider. Løsningen er at skifte til wpml_current_language-filteret eller læse sproget direkte fra indlægs-ID'et.

Kan jeg bruge forskellige ElevenLabs-stemmer pr. WPML-sprog?

Ja. TTSWP knytter én ElevenLabs-stemme til hvert WPML-sprog. Spanske oversættelser læses af en spansk stemme, tyske af en tysk stemme og så videre. Du kan også vælge forskellige modeller pr. sprog, hvilket har betydning, når et målsprog kun understøttes af Flash v2.5 eller Eleven v3 og ikke Multilingual v2.

Hvilke sprog dækker ElevenLabs til WPML-sites?

Multilingual v2 dækker 29 sprog, Flash v2.5 dækker 32 (tilføjer norsk, ungarsk og vietnamesisk), og Eleven v3 dækker 74 sprog. Vælg den model med den bredeste dækning, din latencyramme tillader. De fleste WPML-sites opnår gode resultater med Multilingual v2 eller Flash v2.5. Sites med sjældnere sprog flytter de oversættelser til Eleven v3.

Udsender TTSWP per-sprog-schema til AI-søgning?

Ja. TTSWP genererer et AudioObject pr. oversat indlæg med en inLanguage-værdi, der matcher sidens hreflang. Det giver søgemaskiner og AI-værktøjer et klart signal om, hvilken lyd der hører til hvilken sprogversion af artiklen, i stedet for at alle oversættelser er tagget på samme måde.

Næste skridt

Kør den femtrins-browsertest på det tekst til tale-plugin, du bruger i dag. Fejler ét trin, er det det fejlscenarie, du skal løse, inden du tilføjer flere oversættelser. Vil du have en opsætning, der håndterer alle fem fra starten, installér Tekst til tale - TTSWP fra WordPress.org, forbind det til TTSWP-backend'en og tildel én stemme pr. WPML-sprog. Pluginet klarer resten.