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

Flutter Web中speech_to_text桌面可用但移动端Web失效问题

问题排查与解决方案

针对speech_to_text包在Android Chrome移动端失效的问题,可按以下步骤排查处理:

1. 调整设备端识别配置

移动端Chrome对设备端语音识别的支持有限,尤其是特定地区locale(如en-IN),先尝试关闭onDevice选项,改用云端识别:

await _speechToText.listen(
    onResult: _onSpeechResult,
    localeId: "en-IN",
    listenMode: ListenMode.dictation,
    listenFor: const Duration(seconds: 60),
    onDevice: false, // 修改为false
);

2. 验证Locale支持

部分移动端Chrome可能未预装en-IN的语音识别模型,先切换为通用locale(如en-US)测试:

await _speechToText.listen(
    onResult: _onSpeechResult,
    localeId: "en-US", // 替换为en-US
    listenMode: ListenMode.dictation,
    listenFor: const Duration(seconds: 60),
    onDevice: true,
);

3. 移除webDoNotAggregate选项

该选项禁用结果聚合,移动端Chrome的语音识别服务可能依赖聚合逻辑,尝试移除初始化时的该选项:

_speechEnabled = await _speechToText.initialize(
    finalTimeout: const Duration(seconds: 60),
    debugLogging: true,
    // 移除options: [SpeechToText.webDoNotAggregate]
);

4. 确认权限状态

尽管有录音提示音,仍需确认移动端Chrome已授予录音权限,可在初始化前主动检查:

bool hasPermission = await SpeechToText.hasPermission;
if (!hasPermission) {
  hasPermission = await SpeechToText.requestPermission();
}
_speechEnabled = await _speechToText.initialize(
    finalTimeout: const Duration(seconds: 60),
    debugLogging: true,
    options: [SpeechToText.webDoNotAggregate],
);

5. 查看调试日志

通过Chrome DevTools远程调试移动端Chrome,查看控制台输出的debugLogging信息,定位是否存在识别服务连接失败、权限报错等具体问题。

6. 版本适配检查

尝试升级speech_to_text到最新稳定版,或确认当前版本(7.0.0)与Flutter 3.27.3在移动端Web的兼容性,排查是否存在已知版本问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:02:43