在Android中使用SpeechRecognizer时,我注意到SpeechRecognizer会在几秒钟内自动停止收听。
我正在开发一个需要用户连续语音输入的应用程序。我们的应用程序需要在没有互联网的情况下工作。对于语音识别,我们使用SpeechRecognitor类。
以下是实现:(静态编程语言)
var recognizer = SpeechRecognizer.createSpeechRecognizer(this.applicationContext)
recognizer!!.setRecognitionListener(RecognitionListener(this))
开始聆听
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.taazaa.texttospeechdemo")
recognizer!!.startListening(intent)
在用户说话时暂停之前,这一直工作正常。
我需要以下实施:
>
语音识别器不应停止监听,直到用户手动停止识别。
识别器!!。停止侦听()
每次识别开始或停止时,设备都会发出哔哔声,我需要停止。
应用程序应该主要在脱机模式下工作。
让我知道我做错了什么,需要实施什么来支持以上两点。谷歌Bolo正在这样做,所以可能有办法。Google bolo:https://play.google.com/store/apps/details?id=com.google.android.apps.seekh
我尝试了许多链接,其中一些链接如下:
Android中的离线语音识别
Android离线语音识别(JellyBean)
如何处理ERROR\u RECOGNIZER\u BUSY
Android上的语音到文本
您可以看看这个使用SpeechRecognitor而不使用internet的示例:
顺便说一下,这是日本语。
关于持续的倾听。。。Android的语音识别器库有点棘手。不久前我就这样做了,问题是设备的麦克风。如果它在某种程度上被什么东西阻挡或打断,比如说入口被什么东西盖住了,或者某人正在使用免提(蓝牙,这也是另一回事),那么结果不会是百分之百的成功。
我建议您使用组件服务。这将使SpeechRecognizer持续运行。但想想这些州:
**在这个过程中,应用程序可能无法监听,你也需要处理这个问题。
由于组件服务在后台运行,您需要将其与您的活动或片段连接起来(可能使用活页夹或广播,具体取决于您的应用程序)
class ServiceSpeech : Service(), RecognitionListener {
val mVoiceBinder: IBinder = LocalBinder()
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
return START_STICKY
}
inner class LocalBinder : Binder() {
fun getService(): ServiceSpeech? {
return this@ServiceSpeech
}
}
/*
*
* create the methods for:
* build speechrecognizer
* startlistening
* stoplistening
* listeningAgain
* send the results to activity/fragment
*
* */
override fun onBind(p0: Intent?): IBinder? {
return mVoiceBinder
}
override fun onReadyForSpeech(p0: Bundle?) {
//important
}
override fun onBeginningOfSpeech() {
//important
}
override fun onError(p0: Int) {
//important, you could check SpeechRecognizer.ERROR_* to handle the errors
}
override fun onRmsChanged(p0: Float) {
//handle some events, will give you the sound intensity
}
override fun onPartialResults(p0: Bundle?) {
//important
}
override fun onResults(p0: Bundle?) {
//important
}
override fun onEndOfSpeech() {
//important
}
override fun onEvent(p0: Int, p1: Bundle?) {
}
override fun onBufferReceived(p0: ByteArray?) {
}
}
我希望这能帮助你。
我想制作一个语音识别器应用程序来转录用户的语音。我不想在这样做的时候有任何对话,所以是不可能的。(我知道如果我使用这种方法,我可以获得音频) 我正在使用SpeechRecognitor,并调用startListening来收听用户的音频。我在onResults中得到了非常准确的结果。 现在,我还需要在我的设备SD卡中存储用户的音频。为此,我尝试了MediaRecorder和AudioRecord,
我正在考虑做一个语音屏幕锁/解锁Android应用程序,作为我的最后一个毕业设计,我遇到了一些问题,当一个按下锁按钮时,我如何打开麦克风,这样它就可以一直听下去,直到密码说出来。 我已经搜索了它,但我只找到了使用RecognizerIntent和其他类Google Speech API的技术。 我需要知道当锁定屏幕显示时,我如何开始收听麦克风,这样我就可以捕捉音频流。不允许我使用任何api,没有谷
我有一个工作应用程序,我想添加语音命令。当前应用程序定期(定时器)通过蓝牙来回传输数据。用户可以按按钮和NumberPickers来修改通过蓝牙发送的数据。还有从蓝牙链接接收到的数据,并显示在文本视图中。此应用程序目前工作正常。 我想做的是添加语音命令功能,以便用户可以选择按下按钮/数字选择器,或者可以仅使用语音命令更改值。 我测试了一些可以在各种网站上找到的从语音到文本的例子。我成功地测试了一个
我做了很多研究,并尝试了离线pocket sphinx,但它接收了周围的声音,对我的应用程序做出了不同的反应。以上kitkat 4.4是否有谷歌离线应用程序。。我从两周后就开始尝试了。感谢您宝贵的回答。 详细信息:当活动开始时,第一个文本必须在完成后读取内容(文本到语音),读取语音识别必须根据命令例如:(下一步、上一步、前进、选项、1、2、3、4等)进行语音和语音识别。根据命令,它必须在on结果方
我正在寻找一个Android语音识别库。我只需要它来理解“是/否”的答案(用不同的语言,如英语、德语、法语)。 有什么建议吗?
[可能重复]但我没有找到下面问题的答案。 在过去的两天里,我一直在做一些语音识别方面的研究,但我的问题没有得到答案: 是否可以将语音识别作为一项服务运行?我想实现这样的功能:虽然我的手机处于睡眠模式,但我需要拨打一个号码