2012-04-04 110 views
1

我正在使用CMU sphinx库来录制声音。当我开始我的Java应用程序,我分配的识别器和配置管理器只有一次如下:可以使用麦克风录制一次声音,但不能第二次启动麦克风

 cm = new ConfigurationManager(soundPart.class.getResource("hellongram.config.xml")); 
     recognizer = (Recognizer) cm.lookup("recognizer"); 
     recognizer.allocate(); 

而且,我在我的应用程序中的记录声音按钮。当用户点击它时,我使用下面的代码来录制声音:

Microphone microphone = (Microphone)MR.sp.cm.lookup("microphone"); 
    if (!microphone.startRecording()) { 
     System.out.println("Cannot start microphone."); 
     MR.sp.recognizer.deallocate(); 

     System.exit(1); 
    } 
    //MR.sp.pleaseStartSpeaking.setVisible(true); 
    while(true){ 
    Result result = MR.sp.recognizer.recognize(); 
    if(result!=null){ 
     String resultText = result.getBestFinalResultNoFiller(); 
     MR.sp.lblYouSearched.setVisible(true); 
     MR.sp.lblNewLabel.setVisible(true); 
     MR.sp.lblNewLabel.setText(resultText); 
     MR.textQuery = resultText.toLowerCase(); 
     break; 
    } 
    } 

这是我第一次使用它。但是,如果用户第二次单击录制按钮,则会引发错误“无法启动麦克风”。我在这里做错了什么。为什么我无法第二次获得麦克风

回答

0

您可能想查看麦克风的RecordingThread here以及重新阅读代码为here的页面,因为您使用的代码与所需代码之间的差异要做的是你使用的代码不会启动和停止麦克风,它会连续记录。 RecordingThread看起来就像是你之后的事情,因为你可以轻松地调用start()和stop()来获得你想要的内容。

+0

请你给我一些示例代码。只是看文档并没有多大帮助 – Programmer 2012-04-05 04:26:14

+0

此外,在我上面的代码中,每当我想记录时,我都会得到麦克风。这有什么问题? – Programmer 2012-04-05 04:33:37