Filter (avanceret)

Filtre er en avanceret funktion i KTTS. De behøves ikke for den basale brug af KTTS.

Filtre bruges til at forbehandle tekst inden den sendes til talesyntesprogrammet. De er nyttige til at forbedre tale, erstatte forkert oplæste ord eller forkortelser, vælge passende sprog og oplæser, eller komme uden om visse begrænsninger i talesyntesen og dens stemmer.

Typer af beskeder i KTTS

For at forstå hvordan filtre bruges, hjælper det først at forstå hvordan tekst behandles af KTTS. Tekst som læses op af KTTS er af fire mulige typer.

  • Skærmlæsningsudskrift.

  • Advarsler.

  • Meddelelser

  • Tekstjob

Typen afgøres af programmet som sender teksten til KTTS.

Skærmlæsningsudskrift har højest prioritering. Den er reserveret til brug af skærmlæsningsprogrammer. Skærmlæsningsudskrift går før alle andre meddelelser, og holder pause i disse job. Så snart skærmlæsningsudskriften er læst op, genoptages beskeden som blev afbrudt automatisk.

Advarsler har følgende prioritering. De er reserverede for meddelelser med høj prioritet, såsom "Processoren er for varm". En advarsel afbryder meddelelser og almindelig tekst, og holder pause i disse job. Så snart advarslen er læst op, genoptages beskeden som blev afbrudt automatisk.

Meddelelser har følgende prioritering. En meddelelse afbryder almindelige tekstjob. Kmouth er et eksempel på et program som anvender meddelelser. For eksempel, mens en lang tekst fra en netside læses op, kan Kmouth bruges til at hilse på nogen som kommer ind i rummet. KDEøs bekendtgørelser er også beskeder (se “Talende meddelelser (Knotify)”).

Resten er almindelige tekstjob. Alle job som du starter fra fanebladet Job er tekstjob. Ksayit er et eksempel på et program som bruger tekstjob. Tekstjob er beregnede til for længere tale som ikke er skal være lige nu.

Alle fire slags job har køer, undtagen skærmlæsningsudskrift. Hvis en skærmlæsningsudskrift sendes fra et program mens KTTS læser en anden skærmlæsningsudskrift op, stoppes meddelelsen som er ved at blive læst op og smides væk.

Typer af filtre

Det første du skal vide om filtre er at de aldrig bruges til skærmlæsningsudtale. De bruges til advarsler, meddelelser og tekstjob, og desuden til KDE's underretninger (Knotify).

Der er to slags filtre, almindelige filtre og filter for detektering af sætningsgrænser (SBD-filtre). SBD-filtre deler tekst op i enkelte sætninger. Det gør at KTTS kan begynde oplæsning hurtigere, eftersom kun den første sætningen behøver at syntetiseres, ikke hele tekstjobbet. Det tillader dig også at gå fremad eller tilbage sætning for sætning under fanebladet Job, eller stoppe og holde pause i tekstjob når talesyntesen ikke direkte understøtter at stoppe oplæsningen.

Almindelige filtre behandler teksten og sender den videre til næste filter. Der er for øjeblikket tre slags almindelige filtre.

  • Strengerstatning

  • XML-transformer

  • Valg af oplæser

Bemærk

Filtre er implementerede med en plugin-arkitektur. I fremtiden vil der muligvis være flere slags filtre.

Strengerstatningsfiltre erstatter tekstdele med anden tekst. De erstattede dele matches enten som ord eller som regulære udtryk. KTTS levereres med fordefinerede strengerstatningsfiltre for at læse forkortelser og chatsmileys såsom ":-)" op, eller til at omformatere underretningsmeddelelser fra Konversation eller Kmail til en form som er nemmere at forstå.

XML-transformatører bruger et XML-stilsprogfil (XSLT-fil) til at konvertere XML i et format til et andet format. KTTS leveres med et par XSLT-filer til at konvertere XHTML til SSML

Valg af oplæser lader dig at sende job til en oplæser baseret på tekstens indhold, eller baseret på programmet som sendte det til KTTS. Hvis du for eksempel har indstillet en kvindelig oplæser under fanebladet Oplæser, kan du sende tekst som kommer fra KSayit til den oplæser. Se “Indstil plugin for syntese (Oplæser)”.

Hver af disse filtertyper har indstillelige regler som afgør hvornår filtret skal påvirke teksten der skal læses op. Hvis filtret afgør at det ikke skal påvirke teksten, sendes teksten videre til næste filter uforandret.

Når et tekstjob, en besked, advarsel, eller KDE-underretningsmeddelelse sendes til KTTS, går det gennem alle aktiverede filter som du har indstillet på skærmen nedenfor. Rækkefølgen er oppefra og ned. Efter at være gået gennem alle almindelige filtre på listen i den øvre del af skærmen, sendes tekstjob til filtrene Detektering af sætningsgrænse (SBD-filtrene). KDE's underretningsmeddelelser, advarsler og beskeder går aldrig gennem SBD-filtre. I modsætning til almindelige filtre, så stopper det første SBD-filter som udfører ændringer i teksten yderligere filtrering.

Indstil filtre

For at bruge filtre, klikkes på fanebladet Filtre i kttsmgr.


KDE's tekst-til-tale håndtering (fanebladet Filtre).

1

Dette er listen med indstillede almindelige filtre. Hvis det ikke er markeret, er filtret inaktivt og springes over. Filtre bruges i rækkefølgen som angives her, oppefra og ned.

2

Klik her for at tilføje et nyt filter. Du bliver spurgt om hvilken slags filter som skal tilføjes. Efter du har valgt slagsen, se indstillingsdialogerne nedenfor.

3

Klik her for at fjerne et filter.

4

Klik her for at ændre et filters indstilling. Se indstillingsdialogerne nedenfor.

5

Klik på knapperne for at flytte et filter op eller ned i listen.

6

Dette er filtrene til detektion af sætningsgrænser. Når du starter KTTS første gang, indstilles standardfiltret automatisk til detektering af sætningsgrænser for dig. Du kan ændre filtrets indstilling, eller tilføje yderligere filtre til detektering af sætningsgrænser, men vi råder nybegyndere til ikke at ændre dem.

7

Dette dropned-felt lader dig tilføje, fjerne, redigere eller ændre rækkefølge på filtre til detektering af sætningsgrænser.

8

Sørg for at du klikker her, ellers får dine indstillinger ingen effekt.

Indstil strengerstatningsfilter

Du Indstiller strengerstatningsfiltre ved at sørge for en liste med ord eller regulære udtryk som skal matches. Når det matchede ord eller regulære udtryk findes i teksten, erstattes hvert af dem med en erstatningsstreng som du angiver. Matchningen er ikke versalfølsom.


Streng-erstatter

1

Indtast et navn på dit filter. Brug et hvilket som helst navn du vil som adskiller det fra alle andre filtre.

2

Dette er en liste med ord og regulære udtryk. Filtret søger efter matchende strenge for hver streng i søjlen Matche, og erstatter den matchende streng med strengen i søjlen Erstat med. Listen behandles i den rækkefølge den vises, oppefra og nedad.

3

Klik her for at tilføje yderligere et ord eller regulært udtryk til listen.

4

Klik her for at fjerne det eksisterende ord eller regulære udtryk som for øjeblikket er markeret fra listen.

5

Klik for at ændre et eksisterende ord eller regulært udtryk i listen.

6

Klik for at fjerne det eksisterende ord eller regulære udtryk som for øjeblikket er markeret fra listen.

7

Brug disse knapper til at indlæse en liste med ord eller regulære udtryk fra en fil, gemme nuværende liste til en fil, eller rydde hele listen. Når du indlæser fra en fil, tilføjes punkterne i filen til sidst i den eksisterende liste.

8

Hvis ikke tom, bruges filtret kun hvis sproget for jobbets oplæser passer med sproget du skriver ind. Klik på knappen for at vise en liste over sprog. Du kan vælge mere end et sprog ved at trykke på Ctrl når du klikker.

9

Hvis ikke tom, bruges filtret kun hvis teksten kommer fra et af de programmer som er på listen. Du kan indtaste mere end et program adskilt med kommaer. Eksempel: konversation,kmail.

Vink

Du kan finde ud af Program-id for programmer som kører med programmet kdcop. Du skal udelade DCOP-nummeret. Hvis kdcop for eksempel viser program-id kopete-3234, skal du kun indtaste kopete.

Strengerstatningsfiltret bruges kun til tekst hvis alle betingelser som ikke er tomme opfyldes i feltet Brug filtret når. Hvis alle felterne er blanke, vil filtrene blive anvendt på al tekst.

Matchning er ikke versalfølsom.

Når ord matches, bruger strengerstatningsfiltret et regulært udtryk på formen \sord\s internt. Med andre ord, skal ordet have ordgrænser (blanke tegn) på begge sider.

En beskrivelse af hvordan man skriver regulære udtryk er udenfor denne håndbogs omfang. Hvis du har KDE's editor af regulære udtryk installeret, er der en knap på skærmene Tilføj og Redigér som hjælper dig med at oprette regulære udtryk. KDE's editor af regulære udtryk indgår i pakken kdeutils.

KTTS levereres med nogle filer med ordlister, inklusive en liste med smileys, såsom ":-)", nogle forkortelser som typisk bruges i IRC- og instant message programmer, og en liste med andre forkortelser. Der er også en liste med specialtegn, som den nuværende version af den polske stemme i Festival ikke kan håndtere. Hvis du udvikler nyttige egne ordlister, så brug knappen Gem for at gemme dem i en fil, og sende dem til KTTS-gruppen så de kan inkluderes i næste version.

Indstil filter for XML-transformator

Filtret for XML-transformator bruger XSLT-filer til at transformere XML fra et format til et andet. XSLT, XML-stilprog-transformationer, er et W3C standardsprog til at udføre sådant. Det kan kun bruges med velformet XML. Du skal have redskabet xsltproc installeret.


XML-Transformator

1

Indtast et navn på dit filter. Brug et hvilket som helst navn du vil som adskiller det fra alle andre filtre.

2

Indtast fuldstændig søgesti til en eksisterende XSLT-fil, som udfører transformationen.

3

Angiv søgestien til værktøjet xsltproc. Hvis xsltproc findes i miljøvariabeln PATH, skrives blot xsltproc.

4

Hvis ikke tom, bruges filtret kun hvis XML har det angivne rodelement eller en <!DOCTYPE som begynder med den angivne streng. Dette adskiller en form af XML fra en anden. For eksempel vil html i DOCTYPE-feltetmatche <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >.

5

Hvis ikke tom, bruges filtret kun hvis teksten kommer fra et af de programmer som er på listen. Du kan indtaste mere end et program adskilt med kommaer. Eksempel: konversation,kmail.

Vink

Du kan finde ud af Program-id for programmer som kører med programmet kdcop. Du skal udelade DCOP-nummeret. Hvis kdcop for eksempel viser program-id kopete-3234, skal du kun indtaste kopete.

Filtret for XML-forvandling bruges kun for tekst hvis det angivne rodelement eller den angivne DOCTYPE stemmer og hvis program-id stemmer i feltet Brug filtret når. Hvis et felt er tomt, udføres testen ikke, så hvis alle felter er tomme gælder filtret for al tekst. Du bør dog udfylde mindst et felt, eftersom mange tekstjob ikke har XML-format.

Indstil filter til valg af oplæser

Filter til valg af oplæser bruges til at styre teksten hen til en ønsket oplæser indstillet under fanebladet Oplæser, eller til en oplæser som har angivne egenskaber. Du kan for eksempel angive at tekst som kommer fra kmail skal læses op af en oplæser som er indstillet til en kvindelig stemme. Se “Indstil plugin for syntese (Oplæser)”.

Lige inden KTTS begynder at sende tekst til hvert af filtrene, vælger det en oplæser om skal læse teksten op. Valg af oplæser er baseret på oplæserens egenskaber som angives af programmet som sender teksten til KTTS, og egenskaber ved oplæsere som du har indstillet under fanebladet Oplæser. Filtret til valg af oplæser tillader at du sætter den valgte oplæser ud af kraft.


Vælger af oplæser

1

Indtast et navn på dit filter. Brug et hvilket som helst navn du vil som adskiller det fra alle andre filtre.

2

Hvis ikke tom, bruges filtret kun hvis teksten indeholder det indskrevne regulære udtryk. Hvis den er installeret, så klik på søgeknappen til at starte KDE's editor af regulære udtryk som hjælper dig med at indtaste det regulære udtryk.

Vink

For bedre ydelse, forsøg at "forankre" det regulære udtryk til strengens begyndelse. Med andre ord, indled dit regulære udtryk med ^.

3

Hvis ikke tom, bruges filtret kun hvis teksten kommer fra et af de programmer som er på listen. Du kan indtaste mere end et program adskilt med kommaer. Eksempel: konversation,kmail.

Vink

Du kan finde ud af Program-id for programmer som kører med programmet kdcop. Du skal udelade DCOP-nummeret. Hvis kdcop for eksempel viser program-id kopete-3234, skal du kun indtaste kopete.

4

Angiv egenskaber hos oplæseren som du foretrækker skal læse teksterne op. Hvis teksten opfylder filterbetingelserne ovenfor, vælges en oplæser som passer bedst med de egenskaber du angiver her. Klik på knappen til højre for at vise skærmen Vælg oplæser. Se “Vælg oplæsere (avanceret)”.

5

Brug disse knapper til at gemme indstillingerne i Valg af oplæser, for at indlæse indstillinger fra en gemt fil, eller rydde alle indstillinger.

Filtret til valg af oplæser bruges kun til tekst hvis alle betingelser som ikke er tomme er opfyldt i feltet Brug filtret når. Du skal udfylde mindst et af filterne.

Den nemmeste måde at lære sig hvordan valg af oplæsere indstilles er at eksperimentere. Deaktivér valg af oplæser og lad noget tekst blive læst op. Bemærk oplæseren som KTTS vælger under fanebladet Oplæser. Klik på knappen Vælg oplæser, indtast nogle egenskaber, og forsøg igen for at se hvordan valget påvirkes. Du skal naturligvis have mere end en oplæser indstillet for at valg af oplæser skal gøre noget.

Indstil filter til at detektere sætningsgrænser

Filter til at detektere sætningsgrænser (SBD-filter) opdeler teksten i enkelte sætninger. Det er vigtigt eftersom det

  • tillader at KTTS begynder at læse teksten op hurtigere, eftersom det kun behøver at syntetisere den første sætning, i stedet for hele tekstblokken, hvilket kan være meget langt, og

  • tillader dig at gå tilbage eller fremad sætning for sætning på siden Job og

  • lader dig holde pause eller stoppe tekstjob under fanebladet Job, selvom om talesyntesen ikke har mulighed at stoppes.

Af disse grunde, indstilles standardfiltret for detektering af sætningsgrænser automatisk første gangen du kører kttsmgr og kan ikke deaktiveres (selvom om du kan fjerne det). Vi råder dig til ikke at ændre filtret, med mindre du ved hvad du gør.

Du kan imidlertid tilføje yderligere SBD-filtre for at løse visse problemer. For eksempel har den polske stemme i Festival, på tidspunktet februar 2005, den irriterende egenskab at den læser tegnsætning op. Den læser for eksempel punktummerne i slutningen af hver sætning. Du kan ikke løse problemet ved at oprette et strengerstatningsfilter til at fjerne sætningernes tegnsætning, eftersom hvis du gør det forhindres det almindelige SBD-filter i at genkende nogle sætninger. I stedet kan du oprette en ændret version af det almindelige SBD-filter som genkender sætninger, og samtidigt fjerner sætningernes tegnsætning. For at gøre det, tilføj et SBD-filter og brug knappen Indlæse for at indlæse filen polish_festival_sbdrc som levereres med KTTS.

SBD-filtre virker ved at matche et regulært udtryk for sætningsafslutning og indsætte et tabulatortegn (decimalt 8) ved sætningsgrænserne. (Alle tabulatortegn fjernes automatisk fra teksten inden filtrering begynder.) Bemærk at standardfiltret bevarer sætningens tegnsætning.

SBD-filtre bruges aldrig til KDE's underretningsmeddelelser (knotify), advarsler, advarsler eller output fra skærmlæsere. .

Hvis du fjerner standardfiltret til at detektere sætningsgrænser ved en fejl, kan du få tilbage det ved at indlæse filen standard_sbdrc, som levereres med KTTS.