Exclusive Freebie: Tekst-til-tale-verktøy
Del
Del
Del
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
Først i måneden (mer eller mindre), og derfor tid for en annen Eksklusiv Freebie! Denne måneden ActiveDen forfatter flashanctuary byr opp et interessant verktøy gjør bruk av Google Text-To-Speech API. Sjekk det ut etter hopp!
Bruke Unofficial Tekst-til-tale Google API
Ikke så lenge siden, google lagt til en ny kul funksjon til Google trans~~POS=TRUNC system kalt tekst-til-tale-funksjon. Er er ikke en offisiell API, men alle kan gjøre bruk av tjenesten. Alt du trenger å gjøre er å få tilgang til en url som genererer en mp3-fil. Denne filen kan spilles i flash som enhver mp3-fil
Trinn 1:. Opprette tekst-til-tale-Class
Det første trinnet er å lage tekst-til-tale klasse. Åpne blits og velg filen menyen, ny undermeny og ny handling skriptfilen. Deretter lagre denne filen på harddisken i ønsket pakken. La oss kalle denne klassen og fil Text2Speech.as Først må url konstant koblingen vi til Google API. En annen konstant erklært gjelder google api begrensning: det kan ikke spille en streng som er lengre enn 100 tegn. Selvfølgelig spiller min flash-fil uttrykk på mer enn 100 tegn, vil jeg forklare hvordan senere Andre variabler som vi trenger Inneholder:. Teksten som skal spilles, en matrise for å inneholde fraser av maksimalt 100 tegn fra teksten, gjeldende setning posisjon til å bli spilt på en stund, språket hvor du skal spille teksten. Vi trenger også tre variabler for å spille av lyden: a. Sound variabel, en SoundChannel variabel og en SoundTransform variabel nå vil vi trenge en offentlig funksjon for å initialisere denne klassen: dette vil inneholde teksten vi ønsker å spille og språket. Hvis vår tekst er lengre enn den støttet antall tegn, enn vi må dele den i setninger av maksimalt 100 tegn. For å gjøre dette, skaper vi en rekursiv funksjon for å gå gjennom all teksten og sett inn setninger på inntil 100 tegn i en rekke Fra nå av, prosessen er likt når du oppretter en mp3-spiller. For det første initial vi lyden variablene som jeg snakket om i første omgang, og etter dette vi begynner å spille den første setningen fra hele setninger array. Når denne setningen er ferdig å spille, vi går og spille neste en (når SOUND_COMPLETE hendelser som skjer). Og så videre og så videre inntil alle maks 100 tegn setninger fra vår opprinnelige teksten er spilt Du vil sannsynligvis nå spør hvordan denne klassen kan brukes i et av dine prosjekter. Vel, dette er veldig enkelt: du trenger bare å opprette en forekomst Du har kanskje allerede lagt merke til i forhåndsvisnings at noen ganger en cut-off vises når en lyd ender og en annen begynner. Dette problemet kan enkelt løses ved å laste ned lyden før du spiller dem tilbake. Denne metoden innebærer en lengre lasting tid, spesielt når den valgte teksten å spille er veldig lang. Den beste løsningen for tiden ser ut til å være over en, men skulle noen ha en bedre en, er du hjertelig velkommen til å legge igjen en kommentar! Jeg har brukte lang tid på å prøve å finne en løsning for denne tekst-til-tale-problem, så jeg kan bruke det i Flash. Det synes google har løst det, og løsningen er i disse dager enkel og tilgjengelig for alle utviklere. Dette er mitt første bidrag til Activetuts +, jeg håper du har lært noe nyttig, nyte filen og takk for lesing!
pakke com.flashanctuary.text2speech {//flash import importere flash.events.Event.; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; /** * Text2Speech Hoved klasse * /public class Text2Speech {offentlig funksjon Text2Speech (): void {}}}
Trinn 2: Erklærte Nødvendige Variabler
//google api linkprivate statisk konst url: String = "http://translate.google.com/translate_tts"; //Maksimalt antall tegn støttes av Google apiprivate statiske const noOfMaxChars: Antall = 100; //privat Var _text: String, private Var _sentences: Array, privat Var _sentencePosition: int; //privat Div lyd: Lyd, privat Var soundChannel: SoundChannel, privat Var sTransform: SoundTransform; //privat Var _volume: Number = 0,5; privat Var _currentPosition: Antall = 0; //privat Var _language: String;
Trinn 3: La oss Initial det
offentlig funksjon init (språk: String, tekst: String): void {//sett språket _language = språk; //Dersom antall tegn er lengre enn det maksimale antallet tegn som støttes //den teksten vil bli delt if (text.length < = noOfMaxChars) {initSound (url + "tl =" + språk + "& q = "+ tekst); } Else {_sentences = new Array (); //Split tekst divideText (tekst); _sentencePosition = 0; //Begynne palying den første delen av teksten initSound (url + "tl =" + språk + "& q =" + _sentences [_sentencePosition]); }}
Trinn 4: Trim Text
privat funksjon divideText (str: String): void {var substr: String;. if (str.length > = noOfMaxChars) {substr = str.substring (0, noOfMaxChars + 1); } Else {substr = str; } If (substr.charAt (substr.length - 1) = "" & & str.length > = noOfMaxChars {var Indeks: int = substr.lastIndexOf!) ( ""); substr = str.substring (0, indeks); } _sentences.push (Substr); if (str.substring (substr.length + 1, str.length) .length > 0) {divideText (str.substring (substr.length + 1, str.length)); }}
Trinn 5: Spill av de Setninger
offentlig funksjon initSound (bane: String):. Void {//reset høres chanels, lyd og lyd forvandle hvis de ikke er null if ( soundChannel = null) {stopSound (!); soundChannel = null; } If (høres = null) {lyd = null; } If (sTransform = null) {sTransform = null; } _currentPosition = 0; //Oppretter ny lyd og begynne å spille lyd = new Sound (ny URLRequest (bane)); soundChannel = nye SoundChannel (); sTransform = ny SoundTransform (_volume); playSound ();} offentlig funksjon playSound (): void {soundChannel = sound.play (_currentPosition); soundChannel.addEventListener (Event.SOUND_COMPLETE, soundComplete); soundChannel.soundTransform = sTransform;} offentlig funksjon stopSound (): void {_currentPosition = soundChannel.position; if (soundChannel.hasEventListener (Event.SOUND_COMPLETE)) {soundChannel.removeEventListener (Event.SOUND_COMPLETE, soundComplete); } SoundChannel.stop ();} private funksjon soundComplete (evt: Hendelses): void {stopSound (); //Når gjeldende lyden er fullført gå til neste gruppe av charcters og spille den delen if (_sentences = null) {if (_sentencePosition < _sentences.length - 1) {_sentencePosition ++; initSound (url + "tl =" + _language + "& q =" + _sentences [_sentencePosition]); }}}
Trinn 6: Hvordan bruke Denne klassen
av denne klassen og initialisere den med ønsket språk og tekst. Alle språkene som støttes er oppført og kan bli funnet på http://translate.google.com
//skape ny tekst til tale variablevar T2S:. Text2Speech = new Text2Speech (); //initialisere tekst til tale klassen forekomst med ønsket språk og textt2s.init (language_abbreviation, text_to_play);
Lyd Spilleproblemer problemer~~POS=HEADCOMP
Konklusjon