我是 java 新手,在我的程序的一部分中我被严重困住了。
我正在使用一个名为 Voce 的库。用于语音识别。它识别语音或单词,与内置语法进行比较,并将其打印为“字符串”值。例如:如果你说“五”,它会打印“五”。
我问这个问题的原因是。那我如何将该字符串值与所需值进行比较。例如:如果值为“五”,则将其存储在另一个字符串中以供进一步工作
这是代码:你可以在这里找到语音库 http://voce.sourceforge.net/ //////////////////////// ////////////
//import the libraries
import guru.ttslib.*;
import processing.serial.*;
//give our instances names
Serial treePort;
TTS tts;
void setup(){
//the following initiates the voce library
voce.SpeechInterface.init("libraries/voce-0.9.1/lib", true, true,"libraries/voce-0.9.1/lib/gram","digits");
//start our port and also tts
treePort = new Serial(this,Serial.list()[0],9600);
tts = new TTS();
//the following settings control the voice sound
tts.setPitch( 180 );
tts.setPitchRange( 90 );
//tts.setPitchShift( -10.5 );
treePort.write("73"); //send command to turn on the lights and open the eyes
}
void draw(){
if (voce.SpeechInterface.getRecognizerQueueSize()>0){ //if voce recognizes anything being said
String s = voce.SpeechInterface.popRecognizedString(); //assign the string that voce heard to the variable s
println("you said: " + s); //print what was heard to the debug window.
respond(s);
}
}
//This function will split the text up into multiple words, and decide how to animate depending on the length of each word and also pauses which are denoted by "!"
void respond(String input){
if (input.length() > 0){ //we actually have something to say
voce.SpeechInterface.setRecognizerEnabled(false); //stop listening, otherwise we will hear ourselves and go into a loop
//this just splits up all the words sends motion
String[] words = split(input," ");
int howMany = words.length;
for(int i=0;i<howMany;i++){
String pieces[] = split(words[i],"!"); //if we see a ! then reading pauses slightly so it is a good time to blink
if(pieces.length==2){
treePort.write("1");
int pause = 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);
}
}