Java 如何让斯芬克斯只识别单词

Java 如何让斯芬克斯只识别单词,java,Java,我正在使用实时语音识别器 它识别一些单词,但我只需要这些世界作为输出,但控制台显示 请告诉我如何避免它 public class Indian { public static void main(String[] args) throws Exception { Configuration configuration = new Configuration(); configuration.setAcousticModelPath("resource:/edu/cmu/

我正在使用实时语音识别器 它识别一些单词,但我只需要这些世界作为输出,但控制台显示 请告诉我如何避免它

  public class Indian {

  public static void main(String[] args) throws Exception {
    Configuration configuration = new Configuration();
    configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
    configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
    configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin");
    configuration.setUseGrammar(false);

     LiveSpeechRecognizer recognizer = new     LiveSpeechRecognizer(configuration);

    recognizer.startRecognition(true);
    System.out.println("Start speaking. \n");
    SpeechResult result;
     long timer=0;

 while (timer < 2*60*1000) {
result = recognizer.getResult();
if (result != null) {
           for(WordResult word : result.getWords()) {
            System.out.println("You said: " + word + '\n');
        }
}
  else {
            System.out.println("I can't hear what you said.\n");
        }
 }
 recognizer.stopRecognition();
      }
        }

您只需要重新格式化输出。现在,您正在每行打印它们,并使用类
WordResult
的通用
toString

请尝试以下操作:

public class Indian
{
    public static void main(String[] args) throws Exception
    {
        Configuration configuration = new Configuration();
        configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
        configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
        configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin");
        configuration.setUseGrammar(false);

        LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration);

        recognizer.startRecognition(true);
        System.out.println("Start speaking. \n");
        SpeechResult result;
        long timer = 0;

        while (timer < 2 * 60 * 1000)
        {
            result = recognizer.getResult();
            if (result != null)
            {
                System.out.print("You said: ");
                for (WordResult word : result.getWords())
                {
                    if (!word.isFiller())
                        System.out.print(word.getWord() + " ");
                }
                System.out.println();
            }
            else
            {
                System.out.println("I can't hear what you said.\n");
            }
        }
        recognizer.stopRecognition();
    }
}
public-class-Indian
{
公共静态void main(字符串[]args)引发异常
{
配置=新配置();
setAcousticModelPath(“资源:/edu/cmu/sphinx/models/en-us/en-us”);
setDictionaryPath(“resource:/edu/cmu/sphinx/models/en-us/cmudict en-us.dict”);
setLanguageModelPath(“resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin”);
setUseGrammar(false);
LiveSpeechRecognizer recognizer=新的LiveSpeechRecognizer(配置);
识别器。startRecognition(真);
System.out.println(“开始讲话。\n”);
演讲结果;
长定时器=0;
同时(定时器<2*60*1000)
{
结果=识别器。getResult();
如果(结果!=null)
{
系统输出打印(“你说:”);
for(WordResult-word:result.getWords())
{
如果(!word.isFiller())
System.out.print(word.getWord()+);
}
System.out.println();
}
其他的
{
System.out.println(“我听不清你说了什么。\n”);
}
}
识别器。停止识别();
}
}

谢谢你,seb,但现在的输出就像你说的:那就是我只需要这就是如何避免这种情况,好吧,这是一个填充标记。你需要避免打印这些。我会在那里编辑。我添加了一个复选框,所以我们只在这个词不是填充词的情况下打印它。是的,现在它正在工作,但准确率为0%。你能给我一些建议来提高准确率吗?]你应该在这方面发布一个新问题,我不确定斯芬克斯是如何工作的。你可能需要做一些机器学习。
You said: i am a java student
public class Indian
{
    public static void main(String[] args) throws Exception
    {
        Configuration configuration = new Configuration();
        configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
        configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
        configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin");
        configuration.setUseGrammar(false);

        LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration);

        recognizer.startRecognition(true);
        System.out.println("Start speaking. \n");
        SpeechResult result;
        long timer = 0;

        while (timer < 2 * 60 * 1000)
        {
            result = recognizer.getResult();
            if (result != null)
            {
                System.out.print("You said: ");
                for (WordResult word : result.getWords())
                {
                    if (!word.isFiller())
                        System.out.print(word.getWord() + " ");
                }
                System.out.println();
            }
            else
            {
                System.out.println("I can't hear what you said.\n");
            }
        }
        recognizer.stopRecognition();
    }
}