我想建立一个android应用程序,它将识别我的声音,将其转换为文本,并将显示我刚才说的吐司。我能够做到这一点,使用按钮,将启动语音识别器为我。但现在我只想让它基于我的声音工作。
应用程序应该触发语音识别器,只有当我开始说话时才开始收听,当它检测到静默时应该停止收听。就像会说话的应用程序的功能一样。在那里它记录了语音,但我想使用语音识别器来识别它。像这样的东西:
if(no silense)
Launch Recognizer
else if(silence)
Stop Recognizer
Show toast
主要的问题是,在启动语音识别器之前,我如何感知用户是否在说话。有没有办法感知噪音强度?
其次,有没有办法在后台启动语音识别器...??
如果我可以在后台服务中检测到音频信号(有人开始说话),然后它会立即启动语音识别器来识别语音,这是可能的吗?
发布于 2012-06-21 23:15:13
好的,我已经想好了。为此,我使用了mediaRecorder
类。当应用程序启动时,我开始使用mediaRecoder
录制音频(或者您可以提供一个按钮来启动和停止整个过程)。我检查mediaRecorder正在录制的音频的振幅。如果振幅超过预定义的阈值,我会暂停录制并启动Voice Recognition activity
。在OnActivityResult
中,我再次恢复录音机。
if(mRecorder != null){
int i= mRecorder.getMaxAmplitude(); // Getting amplitude
Log.d("AMPL : ", String.valueOf(i));
if(i>20000){ // If amplitude is more than 20000
onRecord(false); //Stop recording before launching recognizer
Intent intent=new Intent(this,VoiceRecognizer.class); //Launch recognizer activity
startActivityForResult(intent, 12112);
}
或者:您也可以使用this中提到的RecognitionListener接口,所以post。
发布于 2012-06-16 03:54:25
大多数语音识别器已经有一个端点指针来检测语音的开始和结束。端点指针通常尝试读取环境噪声水平,以确定静默的基线,并调整信噪比。但是,如果输入噪声水平改变,它可能会触发端点指针的语音开始。如果一直在听,用灵敏的麦克风,端点指针也可能会拾取你旁边的人说话,而不是你。
因此,使用语音按钮是一种很好的做法,可以在您想要发言时进行通知。试图让识别器一直在监听可能不是你想要做的,或者应该留给研究人员。
https://stackoverflow.com/questions/11002930
复制相似问题