「如何讓程式知道何時text to speech播放完了?」
首先,前面簡單講解介面的程式碼的技術概念時,有提到一種情況是「寫一段程式碼,但不自己決定它在程式中何時會運行,而是被動的等待程式呼叫這段程式碼。」
這裡的情形也很類似。「寫一段程式碼,但不自己決定它在程式中何時會運行,而是等text to speech播放完了執行。」
(仔細聽,程式設計師們經常在討論這類的事情。「你呼叫我的程式碼的時間不對!」「我呼叫了你的程式碼就掛掉了!」...好吧!這不叫討論,這叫顛三倒四的互相撕吼。)
html.SpeechSynthesis? _synthesis;
html.SpeechSynthesisUtterance? _utterance;
TtsRecorder() {
_synthesis = html.window.speechSynthesis;
_utterance = html.SpeechSynthesisUtterance();
}
Future<void> speakAndRecord(String text) async {
// Start recording
await _recorder.startRecording();
// Speak the text
_utterance!.text = text;
_utterance!.onend = (event) {
// Stop recording when the speech synthesis has finished
_recorder.stopRecording();
};
_synthesis!.speak(_utterance!);
}
對了,為了這個功能,我將語音功能搬移到「TtsRecorder」的物件內。
下面這段程式碼是用來「偵測何時結束」的功能。
_utterance!.onend = (event) {
// Stop recording when the speech synthesis has finished
_recorder.stopRecording();
};
這看起來很像函數,但又好像不是....
怎麼解釋它已經超越了我的pay grade了!我又不想複製貼上!所以...啊!然後這段程式碼不能執行....為什麼?下一篇再看看了!