Flutter 语音转文本在 Android 上不起作用

问题描述 投票:0回答:2

我有一个 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>
android flutter speech-to-text google-speech-to-text-api
2个回答
0
投票

尝试将 onDevice 选项切换为 false。


0
投票

在初始化之前,请确保您没有从库中调用/访问任何内容。文档中的某个地方有一个关于它的小注释。而且该库在较旧的 Android 版本上存在很多问题,请从可用的库中获取区域设置(该库有获取区域设置的功能),要小心,因为不同手机/Android 版本上的名称有所不同,如果没有不存在,您必须编写一些本机代码来提示用户下载它。在某些手机上,默认情况下没有选择识别器,因此您必须从手机设置中将谷歌语音识别器设置为默认值(也可以在本机中以编程方式完成)。

© www.soinside.com 2019 - 2024. All rights reserved.