アプリでこの UI を使用して AVSpeechSynthesizer を実装しています。
AVSpeechSynthesizer の発話から進行状況を取得するにはどうすればよいですか? 現在の進行状況を取得するデリゲート メソッドや API がないように見えますが、進行状況を取得するための回避策はありますか?
アプリでこの UI を使用して AVSpeechSynthesizer を実装しています。
AVSpeechSynthesizer の発話から進行状況を取得するにはどうすればよいですか? 現在の進行状況を取得するデリゲート メソッドや API がないように見えますが、進行状況を取得するための回避策はありますか?
ここに行くには2つの方法があります。どちらも、インスタンスに を設定することから始まりdelegate
ますAVSpeechSynthesizer
。
いくつかの発話を作成してキューに入れることにより、シンセサイザーにテキストを提供している場合は、発話に指定した発話を追跡し、speechSynthesizer:didFinishSpeechUtterance:
完了時に通知されるようにデリゲートに実装できます。話されたテキストの長さと、それを分割した発話の数に応じて、話される合計数に対して完了した発話の数を測定することで、発話の進行状況を適切に大まかに示すことができます。
テキストをすべて 1 つの発話で提供している場合、または複数の発話を使用していて、よりきめ細かな進行状況の測定が必要な場合speechSynthesizer:willSpeakRangeOfSpeechString:utterance:
は、デリゲートに実装します。現在発話されている範囲と発話文字列の長さを比較することで、進行状況を確認できます。