You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android语音转文字:RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE失效求助

问题分析与修复方案

核心代码问题

你的代码存在参数使用错误,这是语言设置不生效的主要原因:

  • RecognizerIntent.EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE 是布尔类型参数,作用是让识别器仅返回用户系统偏好的语言,而非应用指定的语言。你错误传入了字符串类型的mylanguage,会导致参数解析异常,触发识别器 fallback 到系统默认语言(英式英语)。
  • 正确处理:直接删除该参数;若需验证用户偏好,传入true或false即可。

修正后的核心代码:

intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
Long timeToWait = 20000L;
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);

intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 3000);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 3000);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 3000);

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
// 仅保留正确的语言设置参数
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, mylanguage);

startActivityForResult(intent, RESULT_SPEECH);

额外验证与修复步骤

  • 确认mylanguage格式正确性:必须使用标准BCP 47语言标签,比如简体中文为"zh-CN"、美式英语为"en-US",避免仅用"zh"或"en"这类非完整格式,部分系统服务无法正确解析。
  • 切换系统语音输入引擎:MIUI 14.0.1默认可能使用小米自家语音服务,可在系统设置→更多设置→语言与输入法→语音输入中,切换为Google语音输入后测试是否生效。
  • 清除应用缓存:若之前错误参数导致系统服务缓存了错误设置,可清除应用缓存和数据后重启测试。

是否为系统Bug?

目前来看,核心问题是代码参数误用,而非Android或MIUI的系统Bug。若上述修复后仍无效,可能是MIUI对语音识别Intent的参数处理存在兼容性问题,可尝试添加辅助参数:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, mylanguage);

内容的提问来源于stack exchange,提问作者DriveCarefully

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:50:02