我正在我的应用中使用此UI实现AVSpeechSynthesizer:
如何从AVSpeechSynthesizer话语中获得进展?我看到没有委托方法或API来获取当前进度,但有没有一种解决方法来获得进展?
答案 0 :(得分:3)
这里有两种方法。两者都从为AVSpeechSynthesizer
实例设置delegate
开始。
如果您通过创建和排列多个话语为合成器提供文本,您可以跟踪您发言的话语,并在您的代表中实施speechSynthesizer:didFinishSpeechUtterance:
在他们完成时通知。根据您的语音文字的长度以及您将其分成多少话语,根据所说的总数来衡量已完成的话语数量,可以提供语音进度的粗略指示。
如果您在一个话语中提供文字,或者如果您正在使用多个话语并想要更细粒度的进度衡量标准,请在您的代表中实施speechSynthesizer:willSpeakRangeOfSpeechString:utterance:
。您可以通过将当前所说的范围与语音字符串的长度进行比较来观察进度。