调用ML Kit ASR接口返回3005错误提示service unavailable问题求助
错误原因及解决方案
核心问题
你出现该错误的直接原因是识别场景参数与语言设置不匹配:
你代码中通过putExtra(MLAsrConstants.SCENES, MLAsrConstants.SCENES_SHOPPING)设置了购物专属识别场景,该场景官方明确仅支持中文(zh-CN),但你同时将识别语言设置为了en-US,参数冲突直接触发服务不可用报错。
修复方案
根据你的业务需求二选一即可:
方案1:保留英文识别,删除购物场景配置
修改后代码如下:
// Create an Intent to set parameters. val mSpeechRecognizerIntent = Intent(MLAsrConstants.ACTION_HMS_ASR_SPEECH) // Use Intent for recognition parameter settings. mSpeechRecognizerIntent // Set the language that can be recognized to English. If this parameter is not set, English is recognized by default. Example: "zh-CN": Chinese; "en-US": English; "fr-FR": French; "es-ES": Spanish; "de-DE": German; "it-IT": Italian; "ar": Arabic; "th_TH": Thai; "ms_MY": Malay; "fil_PH": Filipino. .putExtra(MLAsrConstants.LANGUAGE, "en-US") // Set to return the recognition result along with the speech. If you ignore the setting, this mode is used by default. Options are as follows: // MLAsrConstants.FEATURE_WORDFLUX: Recognizes and returns texts through onRecognizingResults. // MLAsrConstants.FEATURE_ALLINONE: After the recognition is complete, texts are returned through onResults. .putExtra(MLAsrConstants.FEATURE, MLAsrConstants.FEATURE_WORDFLUX) // Start speech recognition. mSpeechRecognizer.startRecognizing(mSpeechRecognizerIntent)
方案2:保留购物场景,将语言切换为中文
修改语言配置行即可:
.putExtra(MLAsrConstants.LANGUAGE, "zh-CN")
其他排查方向
如果修改参数后仍报错,可以按顺序排查以下配置:
- 确认设备端HMS Core版本为最新版,旧版本可能存在服务兼容性问题
- 确认AGC后台已经开通ML Kit语音识别服务,项目中引入的agconnect-services.json文件与AGC后台配置一致,应用签名配置和AGC后台录入的签名信息匹配
- 确认设备网络正常,未使用代理、VPN或防火墙拦截华为服务相关请求
内容的提问来源于stack exchange,提问作者SpongeBob
相关产品推荐
相关产品推荐

