0

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

1 回答 1

0

尝试将 onDevice 选项切换为 false。

于 2021-04-13T16:53:26.390 回答