Stap 4: Grammaticabestanden
Dus wat is een grammatica bestand?
Hoewel voce de mogelijkheid heeft om ongeveer 120000 woorden herkennen, voor de meeste doeleinden zullen alleen een paar commando's worden vereist. De woorden die zijn gedefinieerd in een grammatica bestand zijn de woorden die voor een toepassing wordt herkend. Dus voor elk programma of schets, die u maakt met behulp van stem zal een grammatica bestand vereist.
Grammaticabestanden voor voce voldoen aan de indeling van het bestand van de grammatica van de toespraak van Java (JSGF).
De cijfers grammatica bestand dat we gebruikt is het voorbeeld .gram bestand dat wasincluded met de download. Laten we eens een kijkje op een eenvoudig .gram bestand.
grammatica kleding;publiek < clothesTypes > = (broek | shirt | sokken);
In dit voorbeeld zou de naam van de grammatica kleren, dus we zouden ook de naam van onze clothes.gram bestand. De grammatica regel clothesTypes zou zijn voldaan wanneer de herkenning van de woorden int de lijst (shirt, broek, sokken horen zou).
Dat is een bestand van de basisgrammatica. We zullen iets meer complex gebruiken, maar het is eigenlijk niet verplicht voor een project van deze omvang. Het geeft ons een kans om te bouwen van fatsoenlijke .gram bestand zodat we de structuur begrijpen als we willen om het te implementeren in iets complexer.
Open Kladblok of uw favoriete tekst-editor, en typt u het volgende. (of het pak)
#JSGF V1.0; /** boom van de grammatica; publiek < boom > = < adres >< verzoek >< requestTypes >; publiek < woordenschat > = (< adres > Hallo | Hallo < adres > | dank u) *; publiek < extra > = (weet | hoe | waarom | die | u | hoo | shoo); < adres > = (boom); < verzoek > = (vertellen | krijgen de | wat); < requestTypes > = (een grap | weer | tijd is het | dag is het);
* Voorbeeld van een registerbestand grammatica voor Animatronic boom
*/
Laat nu eens een kijkje op onze definities.
We beginnen met de naam van de grammatica, in dit geval boom. We hebben dan een grammatica regel < boom >, waarbij drie voorwaarden waaraan moet worden voldaan. Adres, aanvraag en type aanvraag. Scroll naar beneden en kijken naar degenen nu laat.
Adres, zou het woord "boom", die in mijn geval wat ik noem mijn boom is, of behandelen hem als. U kunt dit wijzigen wat je wilt, zolang het in het woordenboek van bekende woorden. Er zijn een paar gewone namen in het bestand, maar voor dit project hield ik boom. Een definitie mag ook een zin, zodat u kunt creatief, ik gebruikte "Skull weten we" als naam voor een ander project. (Zijn eigennaam was Skullduino)
Verzoek en aanvraag type definiëren hoe om te vragen voor iets, zodat de structuur wanneer we met de robot praten zal zijn 'Boom, verzoek, requestType'. Zoals je kunt zien ben ik op een aantal manieren om dingen te zeggen.
Als we teruggaan tot dat de twee regels dat we verdoezeld, zullen we zien eerst een regel woordenschat, onderdelen voldoet voor sommige met het adres, en sommige zonder. Voor begroeting van de boom en dank te zeggen.
Dan hebben we extra, die zijn slechts enkele woorden die dreigen te worden gezegd tussen grappen. We zetten ze in niet zozeer om te reageren op wat iets te horen tussen vraag en punch lijnen van grappen. Als we geen rekening met deze gehouden ' buffer'words, de herkenning zou zitten wachten om te horen van een van de opdrachten of de structuren die wij getroffen hebben voor de afwerking van een grap.
Sla uw grammatica-bestand in de map gram in de omslag van de bibliotheken die we eerder hebt gemaakt. Noem het "tree.gram".
Aanwijzer wijzigen van "cijfers" "boom" in uw code voce initiatie, merken dat wij niet schrijven van de .gram, en probeer het uit. Uw schets moet nu proberen te erkennen de woorden die we gedefinieerd in plaats van de nummers van vóór.
de volgende initieert de voce-bibliotheek
voce. SpeechInterface.init ("libraries/voce-0.9.1/lib", true, true,"libraries/voce-0.9.1/lib/gram","boom");