Étape 3: Commencer à esquisser
Tapez ce qui suit dans la nouvelle esquisse. (Sinon vous pouvez récupérer le fichier texte « voce1.txt » et copier/coller dans votre croquis)
//import les bibliothèquesImport guru.ttslib.* ;
Import processing.serial.* ;
donner les noms de nos instances
Série treePort ;
TTS tts ;
Une chaîne pour la tenue des choses à dire
Message de chaîne = « Ho Ho Ho » ;
void setup() {} {} void draw()
le texte suivant initialise la bibliothèque voce
Voce. SpeechInterface.init (« libraries/voce-0.9.1/lib », true, true,"libraries/voce-0.9.1/lib/gram","digits") ;
commencer notre port et aussi tts
treePort = new Serial(this,Serial.list()[0],9600) ;
TTS = new TTS() ;
les paramètres suivants contrôlent le son de la voix
tts.setPitch (180) ;
tts.setPitchRange (90) ;
tts.setPitchShift (-10,5) ;
treePort.write("73") ; Envoyer commande pour allumer les lumières et ouvrir les yeux
}
Si (voce. SpeechInterface.getRecognizerQueueSize() > 0) {//if voce reconnaît rien dit
String s = voce. SpeechInterface.popRecognizedString() ; Affectez la chaîne que voce a entendu à la variable s
println ("vous avez dit:" + s) ; imprimer ce qui a été entendu à la fenêtre de débogage.
Respond(s) ;
}
}
Vous remarquerez que je suis ne pas en utilisant le mBrola voix plus longtemps, j’ai trouvé qu’ils étaient en conflit avec voce. Par tweeking la hauteur, pitchrange et pitchshift, vous pouvez travailler sur une voix semblable. Je comprends ce ne sont pas des voix de qualité Siri, mais c’est toujours une belle façon de parler de votre projet. Je pense que les robots sonnent bien quand ils sonnent comme des robots, mais c’est juste moi.
Vous remarquerez également qu’il ne faut pas importer la bibliothèque, nous faisions cela directement en important les fichiers jar.
La structure de l’appel d’initialisation dans le programme d’installation est la suivante ;
(emplacement des fichiers de bibliothèque, boolean pour génération vocale, boolean pour la reconnaissance vocale, l’emplacement des fichiers de grammaire et le nom du fichier grammaire.)
Avant que nous puissions commencer traitant des discours plus dynamiquement généré, nous aurons besoin d’écrire une petite fonction qui prend soin d’animer dynamiquement l’arbre quand il parle.
Allez jusqu’au fond de vous esquissez, sous la fonction de tirage au sort et ajoutez le code suivant.
//This fonction diviser le texte en plusieurs mots et décider comment animer selon la longueur de chaque mot et aussi des pauses qui sont signalées par "!"{} void répondre (entrée de chaîne)
Si (input.length() > 0) {//we vraiment avoir quelque chose à dire
Voce. SpeechInterface.setRecognizerEnabled(false) ; arrêter l’écoute, sinon nous allons entendre nous-mêmes et aller dans une boucle
Cette fractionnements juste vers le haut de tous les mots envoie motion
String [] mots = split (input,"") ;
int howMany = words.length ;
pour (int i = 0; i < howMany; i ++) {}
Chaîne des pièces [] = split(words[i],"!") ; Si nous voyons une ! puis lecture pauses légèrement, alors c’est un bon moment à clignoter
{if(pieces.Length==2)}
treePort.write("1") ;
pause d’int = 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) ;
}
}
Fondamentalement, cela animera votre arbre en fonction de la chaîne qu’il traite actuellement. Il s’agit d’une simple tentative. Vous pourriez prendre ce que vous aimez en ajoutant plus de mouvements personnalisés sur du côté de l’Arduino et analyse les chaînes supplémentaires pour la synchronisation des plus précis.
Si vous exécutez cette esquisse maintenant, votre robot doit être capable de reconnaître les mots « un », « deux », « trois », « quatre », « cinq », « six », « seven », « huit », « nine », « zéro » et « o » et répéter leur retour à vous quand il entend les. Allez-y, exécuter l’esquisse et lui donner un essai. Soyez patient, il faut une minute (au figuré) pour charger vers le haut et un autre couple de secondes avant que le microphone est allumé et bien à l’écoute.
Une autre chose à noter est comment le module de reconnaissance tente de donner un sens hors de presque toutes les discours qu’il entend, et donc s’échapper de numéros n’importe quels mots vous parlez. Ne vous inquiétez pas, nous allons traiter que dans les étapes suivantes.