问题描述
我在 Flutter 中有一个适用于 Android 和 iOS 的应用。 在 iOS 上一切正常。但是在 Android 上,我在语音到文本方面遇到了一些问题...
我正在使用这个插件:https://pub.flutter-io.cn/packages/speech_to_text/
我的 Android 代码是:
void startListeningAndroid(BuildContext context) async {
try {
speech.listen(
onResult: (SpeechRecognitionResult result) {
processWords(result,context);
},listenFor: Duration(seconds: 10),localeId: _currentLocaleId,onSoundLevelChange: soundLevelListener,cancelOnError: false,partialResults: true,onDevice: true,listenMode: ListenMode.dictation,pauseFor: Duration(seconds: 9),);
} catch (e) {
print(e.toString());
}
setState(() {});
}
每 11 秒我用以下代码重新开始监听:
if (Platform.isAndroid) {
timerSpeech = Timer.periodic(Duration(seconds: 11),((Timer t) async {
if (voiceRecognitionActivated) {
startListeningAndroid(context);
}
}));
}
但是一旦我开始听我得到以下日志:
initSpeechState error SpeechRecognitionError msg: error_speech_timeout,permanent: true
initSpeechState error SpeechRecognitionError msg: error_client,permanent: true
代码与之前工作的代码相同,它甚至不会在每次听音工作之前发出“哔”声。 android 政策或插件版本是否有任何更改可能导致此问题?
也在我的主文件夹和调试文件夹中的 AndroidManifest.xml 中:
<uses-permission android:name="android.permission.RECORD_AUdio"/>
<uses-permission android:name="android.permission.INTERNET"/>
<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
</queries>
解决方法
尝试将 onDevice 选项切换为 false。