Flutter speech_to_text插件在Android端无识别输出问题求助
你遇到的识别无返回问题和控制台的命名空间映射、启动页弃用警告无关,这些警告不会影响语音识别功能正常运行,可按以下优先级排查修复:
- 优先检查运行环境
Android原生模拟器默认未内置语音识别服务,会出现仅触发提示音但无识别结果的问题,可直接使用实体Android设备测试,若需在模拟器运行,需刷入Google Play服务并安装Google App启用语音识别能力。 - 补全动态权限申请
Android 6.0及以上版本中录音权限属于高危权限,仅在AndroidManifest.xml中声明不会生效,需要在初始化语音识别前主动申请权限,可借助permission_handler插件实现:
// 先在pubspec.yaml中添加permission_handler依赖 import 'package:permission_handler/permission_handler.dart'; void _initSpeech() async { // 先申请麦克风权限 PermissionStatus micStatus = await Permission.microphone.request(); if (micStatus.isGranted) { _speechEnabled = await _speechToText.initialize(); } else { _speechEnabled = false; // 可自行添加权限被拒的提示逻辑 } setState(() {}); }
- 补全listen调用参数
当前调用listen方法未指定识别语言、结果返回规则,部分设备默认语言与你输入语音语言不匹配时也不会返回结果,可修改调用逻辑:
void _startListening() async { await _speechToText.listen( onResult: _onSpeechResult, localeId: 'zh_CN', // 识别中文填写zh_CN,识别英文填写en_US partialResults: true, // 开启实时返回识别过程中的临时结果 listenFor: const Duration(seconds: 30), // 自定义最长识别时长 ); setState(() {}); }
- 添加调试日志确认回调触发
可在结果回调中增加打印,确认识别逻辑是否正常触发回调:
void _onSpeechResult(SpeechRecognitionResult result) { print('识别回调触发,返回内容:${result.recognizedWords}'); setState(() { _lastWords = result.recognizedWords; }); }
内容的提问来源于stack exchange,提问作者Aida Qilah
相关产品推荐
相关产品推荐

