关于NetworkSpeechRecognizer与SodaSpeechRecognizer的技术疑问排查
关于SpeechRecognizer日志中SodaSpeechRecognizer的疑问解答
相关Logcat日志
12:34:00.933 NetworkSpeechRecognizer pid-29210 I Online recognizer - start listening 12:34:00.936 SodaSpeechRecognizer pid-29210 I Offline recognizer - start listening 12:34:00.936 SodaSpeechRecognizer I Initialize Soda [locale: en-US] 12:34:00.963 SodaSpeechRecognizer I Initialize Soda with language pack directory 12:34:01.099 SodaSpeechRecognizer I Offline recognizer - start detection 12:34:02.975 NetworkSpeechRecognizer I #cancel 12:34:02.976 NetworkSpeechRecognizer pid-29210 I #cancel 12:34:02.976 NetworkSpeechRecognizer I #failWithException 12:34:02.977 SodaSpeechRecognizer I startDetection successful 12:34:02.979 NetworkSpeechRecognizer W Recognizer network error 12:34:02.979 SodaSpeechRecognizer I Offline recognizer - stop detection
疑问解答
1. 什么是SodaSpeechRecognizer?
SodaSpeechRecognizer是谷歌实现的离线语音识别模块,从日志中的Offline recognizer标识可明确其定位:负责在设备本地完成语音识别任务,无需依赖网络。当在线语音识别模块(日志中的NetworkSpeechRecognizer)出现异常时,它会作为备选方案启动,保障语音识别功能的可用性。
2. 在哪里可以了解更多关于它的信息?
该模块属于谷歌私有功能,官方公开文档无详细说明。非官方渠道可找到《SODA: Speech On-Device API》类文章,但信息量有限。若需完整技术细节或权限支持,需直接联系谷歌官方获取。
3. 若SpeechRecognizer.java仅定义了private static final String TAG = "SpeechRecognizer";,这些TAG是如何生成的?
SodaSpeechRecognizer和NetworkSpeechRecognizer都是SpeechRecognizer的具体实现子类。这些子类各自定义了独立的TAG常量,比如SodaSpeechRecognizer.java中会存在private static final String TAG = "SodaSpeechRecognizer";,日志里的TAG就是这些子类自身输出的,并非来自父类SpeechRecognizer的TAG。Android语音识别框架采用多实现设计,父类定义统一接口,不同子类分别处理在线、离线的具体逻辑,各自输出带有自身标识的日志。
内容的提问来源于stack exchange,提问作者WebViewer
相关产品推荐
相关产品推荐

