Stap 3: Start schetsen
Typ het volgende in de nieuwe schets. (U kunt ook u kan grijpen het tekstbestand "voce1.txt" en copy/paste het in uw schets)
//import de bibliothekenimporteren van guru.ttslib.*;
importeren van processing.serial.*;
onze instanties namen geven
Seriële treePort;
TTS tts;
Een tekenreeks voor het houden van dingen te zeggen
Koord bericht = "Ho Ho Ho";
VOID Setup {} VOID draw() {}
de volgende initieert de voce-bibliotheek
voce. SpeechInterface.init ("libraries/voce-0.9.1/lib", true, true,"libraries/voce-0.9.1/lib/gram","digits");
Start van onze haven en ook tts
treePort = nieuwe Serial(this,Serial.list()[0],9600);
TTS = nieuwe TTS();
de volgende instellingen bepalen het geluid van de stem
tts.setPitch (180);
tts.setPitchRange (90);
tts.setPitchShift (-10.5);
treePort.write("73"); verzenden van de opdracht voor het inschakelen van de lichten en open de ogen
}
Als (voce. SpeechInterface.getRecognizerQueueSize() > 0) {//if voce herkent iets gezegd zijnde
String s = voce. SpeechInterface.popRecognizedString(); de tekenreeks die voce toewijzen aan de variabele s gehoord
println ("je zei:" + s); afdrukken wat hoorde het venster Foutopsporing.
respond(s);
}
}
U zult merken dat ik ben niet met behulp van de mBrola stemmen langer, ik vond dat ze waren conflicterende met voce. Door tweeking de toonhoogte, pitchrange en pitchshift kunt u sporten een stem die is vergelijkbaar. Ik begrijp dat dit niet de stem van Siri-kwaliteit zijn, maar het is nog steeds een leuke manier om uw project praten. Ik voel dat robots goed klinken wanneer ze klinken als robots, maar dan is dat enkel me.
U zult ook opmerken dat we hoeft niet te importeren van de bibliotheek, deden we dat rechtstreeks door de jar-bestanden importeren.
De structuur van de oproep van de initialisatie in setup is als volgt;
(locatie van bibliotheekbestanden, boolean voor toespraak generatie, boolean voor spraakherkenning, locatie van de grammaticabestanden en de naam van het bestand grammatica.)
Voordat we meer dynamisch gegenereerde toespraak behandelen beginnen kunnen, zullen we om te schrijven een klein functie die zorgt voor het dynamisch het animeren van de boom wanneer het spreekt.
Ga naar beneden naar de onderkant van je schets, onder de functie van de loting, en voeg het volgende toe.
//This functie zal de tekst opgesplitst in meerdere woorden, en beslissen hoe animate afhankelijk van de lengte van elk woord en ook pauzes die worden aangeduid met "!"VOID reageren (String input) {}
Als (input.length() > 0) {//we eigenlijk iets te zeggen hebt
voce. SpeechInterface.setRecognizerEnabled(false); stoppen met luisteren, anders zullen we ons horen en gaan in een lus
deze slechts splitsingen van alle woorden stuurt beweging
String [] woorden = split (ingang",");
int howMany = words.length;
for (int i = 0; ik < howMany; i ++) {}
Tekenreeks stukken [] = split(words[i],"!"); Als we zien een! vervolgens lezen pauzes iets dus het is een goed moment om te knipperen
if(Pieces.length==2) {}
treePort.write("1");
int pauze = int(random(100));
if(PAUSE>60) {}
treePort.write("5");
}
else {}
treePort.write("7");
delay(500);
}
}
else {}
treePort.write("1");
}
}
TTS.Speak(input);
voce. SpeechInterface.setRecognizerEnabled(true);
}
}
Dit zal in principe animeren uw boom afhankelijk van de tekenreeks dat het momenteel verwerkt. Dit is een eenvoudige poging. U kon het nemen zo ver als je wilt door toevoeging van meer aangepaste bewegingen aan de Arduino-kant en ontleden de tekenreeksen verder voor nauwkeuriger synchroniseren.
Als u deze schets nu uitvoert, uw robot moet kunnen herkennen van de woorden "one", "two", "drie", "vier", "five", "zes", "seven", "acht", "nine", "nul", en "o" en herhaal ze terug naar u wanneer het hen hoort. Ga je gang, lopen de schets en verlenen op te uitproberen. Wees geduldig, het vergt een minuut (figuurlijk) omhoog te laden en nog een paar seconden voordat de microfoon aan op en goed staat luisteren.
Een ander ding nota te nemen van is hoe de herkenning probeert zin uit bijna alle de toespraak het hoort te maken, en dus uit getallen ongeacht welke woorden flappen zal u spreekt. Maak je geen zorgen, wij zullen omgaan met dat in de volgende stappen.