我在 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);
}
}));
}
但是,一旦我开始 lisening,我就会得到以下日志:
initSpeechState error SpeechRecognitionError msg: error_speech_timeout, permanent: true
initSpeechState error SpeechRecognitionError msg: error_client, permanent: true
该代码与之前工作的代码相同,它甚至不会在每次 lisening 工作之前发出“哔”声。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>