记录/保存来自语音识别意图的音频

在问这个问题之前,我检查了所有与该问题相关的所有stackoverflow其他线程,但均未成功,因此,请不要回答指向其他线程的链接,:)


我想保存/记录谷歌识别服务用于语音到文本操作的音频(使用RecognizerIntent或SpeechRecognizer)。


我经历了很多想法:


来自RecognitionListener的onBufferReceived:我知道,这不起作用,只需对其进行测试以查看会发生什么,并且永不调用onBufferReceived(在JB 4.3的银河系连接上进行了测试)

使用了媒体记录器:无法正常工作。它打破了语音识别。麦克风只能执行一项操作

尝试在语音执行到文本api之前将识别服务保存到临时音频文件的位置,以将其复制,但是没有成功

我快要绝望了,但我只是注意到Google Keep应用程序正在做我需要做的事情!!!!我使用logcat调试了一些keep应用程序,该应用程序还调用了“ RecognizerIntent.ACTION_RECOGNIZE_SPEECH”(就像我们,开发人员一样)来触发语音到文本。但是,如何保存音频呢?可以是隐藏API吗?谷歌是“作弊” :)吗?


谢谢您的帮助


最好的祝福


红颜莎娜
浏览 502回答 3
3回答

UYOU

@Kaarel的答案几乎是完整的-产生的音频已经intent.getData()可以使用读取ContentResolver不幸的是,返回的AMR文件质量很低-我找不到能够获得高质量记录的方法。除“ audio / AMR”外,我尝试过的任何值在中都返回null intent.getData()。如果您找到获取高质量录音的方法-请发表评论或添加答案!public void startSpeechRecognition() {&nbsp; &nbsp;// Fire an intent to start the speech recognition activity.&nbsp; &nbsp;Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);&nbsp; &nbsp;// secret parameters that when added provide audio url in the result&nbsp; &nbsp;intent.putExtra("android.speech.extra.GET_AUDIO_FORMAT", "audio/AMR");&nbsp; &nbsp;intent.putExtra("android.speech.extra.GET_AUDIO", true);&nbsp; &nbsp;startActivityForResult(intent, "<some code you choose>");}// handle result of speech recognition@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {&nbsp; &nbsp; // the resulting text is in the getExtras:&nbsp; &nbsp; Bundle bundle = data.getExtras();&nbsp; &nbsp; ArrayList<String> matches = bundle.getStringArrayList(RecognizerIntent.EXTRA_RESULTS)&nbsp; &nbsp; // the recording url is in getData:&nbsp; &nbsp; Uri audioUri = data.getData();&nbsp; &nbsp; ContentResolver contentResolver = getContentResolver();&nbsp; &nbsp; InputStream filestream = contentResolver.openInputStream(audioUri);&nbsp; &nbsp; // TODO: read audio file from inputstream}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android