我正在尝试实现Android的SpeechRecognizer功能。由于公司的隐私限制,数据必须明确地不离开设备。
到目前为止:
- 我使用
SpeechRecognizer.createSpeechRecognizer
方法实现了SpeechRecognizer类。在没有互联网的情况下尝试,它工作得很好!但是,据我所见,谷歌不能保证在线时不发送数据,如果不是为了转录,而是为了改善他们的音频训练数据.. SpeechRecognizer.createOnDeviceSpeechRecognizer
- 这可以在Android 12及以上版本中使用。假设我不介意。然而,它只适用于特定的设备,例如Pixel 6,甚至Pixel 4a也不支持。putExtra(RecognizerIntent.EXTRA_PREFER_OFFLINE, true)
- 这也不起作用。无论我尝试过哪个设备,它都会给出错误:ERROR_NO_MATCH
。
因此,我们只能使用普通的SpeechRecognizer.createSpeechRecognizer
进行实现,我的实现方式如下:
var recognizerIntent: Intent? = null
if (SpeechRecognizer.isRecognitionAvailable(applicationContext)) {
sr = SpeechRecognizer.createSpeechRecognizer(applicationContext)
val listener = MySpeechRecognitionListener(scopeProvider, lifecycleScope, {
...
}
sr.setRecognitionListener(listener)
recognizerIntent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH)
}
sr.startListening(recognizerIntent)
} else {...}
问题: 我们能否保证Android的SpeechRecognizer不会将数据发送给Google?
SpeechRecognizer
的工作方式。 - CommonsWare