#android #flutter #speech-to-text #google-speech-to-text-api
Вопрос:
У меня есть приложение в 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 в папке main и debug у меня есть:
<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>
Ответ №1:
Попробуйте переключить параметр onDevice на значение false.