Flutter Speech to Text 不适用于 Android

问题描述

我在 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。