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

Flutter使用speech_to_text包出现error_no_match错误求助

iOS模拟器运行speech_to_text示例报error_no_match错误排查

问题背景

在MacOS上开发iOS应用,运行speech_to_text官方示例代码,已在info.plist中配置NSSpeechRecognitionUsageDescription和NSMicrophoneUsageDescription权限,iOS模拟器麦克风功能正常,但运行时出现错误:SpeechRecognitionError msg: error_no_match, permanent: true, listening: false。

错误日志:

flutter: 2023-11-10T17:08:46.137011 Received listener status: done, listening: false
flutter: 2023-11-10T17:08:46.198755 Received listener status: done, listening: false
flutter: 2023-11-10T17:08:46.199145 Received error status: SpeechRecognitionError msg: error_no_match, permanent: true, listening: false

排查解决步骤

1. 明确错误含义

error_no_match表示系统语音识别引擎未识别到任何匹配的有效语音内容,常见原因包括语音输入不符合预期、语言设置不匹配、识别模式不适配等。

2. 匹配语言设置与输入语言

  • 确认示例中选择的localeId和你实际说话的语言完全一致,比如系统默认英文但你说中文,会直接导致识别失败。
  • 在示例的SessionOptionsWidget下拉菜单中,选择你正在使用的语言(如中文选zh-CN/zh-TW)。

3. 调整识别模式

示例默认使用ListenMode.confirmation,该模式针对短指令确认场景设计,对语音完整性要求高。若为自由说话场景,建议改为ListenMode.dictation:

speech.listen(
  // 保留其他参数
  listenMode: ListenMode.dictation,
);

4. 检查设备端识别兼容性

iOS设备端语音识别(onDevice: true)仅支持部分语言,且需提前下载对应语言包。若开启了该选项:

  • 确认当前选择的语言支持设备端识别
  • 暂时关闭onDevice选项,测试云端识别是否正常

5. 延长停顿超时时间

示例默认pauseFor为3秒,若说话停顿超过该时间,识别会提前结束且无匹配结果。可尝试延长至5秒:

final TextEditingController _pauseForController =
    TextEditingController(text: '5');

6. 优化语音输入质量

即使模拟器麦克风功能正常,也可能存在音量低或环境噪音问题:

  • 提高麦克风输入音量
  • 在安静环境下测试
  • 改用真机测试,排除模拟器潜在限制

7. 验证iOS版本支持

确保模拟器使用的iOS版本支持目标语言的语音识别功能,部分旧版本iOS对小众语言的识别支持有限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:24:52