我正在使用 flutter 文本转语音功能。稍后,当我收到文本后,它会分部分发送文本。
我正在使用语音识别插件,在其中输入语音命令并将文本发送到创建的 API 之一,但问题是它将文本部分发送到 API。 例子 : 实际文本:现在是什么时间 但有时字符串会进行 2 次 2 API 调用 或者有时它一次只发送几个单词
_speechRecognition.setAvailabilityHandler((bool result) => setState(() {
_isAvailable = result;
print('Avalibility handler was called');
}));
_speechRecognition.setRecognitionStartedHandler(
() => setState(() {
_isListening = true;
print('recognition start handler was called');
}),
);
_speechRecognition.setRecognitionResultHandler(
(String speech) => setState(() {
resultText = speech;
print(
'set result handler was called This is the result handler : $resultText');
if (_isListening == false && resultText != '') {
_handleSubmitted(speech);
}
}),
);
_speechRecognition.setRecognitionCompleteHandler(() {
setState(() {
print('set recognition complete handler was called');
_isListening = false;
});
});
_speechRecognition.activate().then(
(result) => setState(() {
_isAvailable = result;
print('set activate handler was called');
}),
);
}```
最佳答案
我在项目中为解决此问题所做的工作是,我采用了一个新变量来保存语音识别的结果,并且在完整的方法中,我已将该结果传递给 API 调用 示例:-
String transcription = '';
_speech.setRecognitionResultHandler(onRecognitionResult);
_speech.setRecognitionCompleteHandler(onRecognitionComplete);
void onRecognitionResult(String text) {
setState(() {
transcription = text;
});
}
void onRecognitionComplete() {
setState(() {
LogUtils.d("result.....$transcription");
_handleSubmitted(transcription);
});
}
不要在 onRecognitionResult 中管理 API 调用,而是使用 onRecognitionComplete
关于android - 文本的语音输入部分进行 api 调用后,flutter 中的语音识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58411212/