【问题标题】:AVSpeechSynthesizer - How to get progress?AVSpeechSynthesizer - 如何取得进展?
【发布时间】:2014-07-10 02:35:53
【问题描述】:

我正在我的应用中使用此 UI 实现 AVSpeechSynthesizer:

如何从 AVSpeechSynthesizer 话语中获取进度?我看到没有委托方法或 API 来获取当前进度,但是是否有解决方法来获取进度?

【问题讨论】:

标签: ios ios7 text-to-speech avspeechsynthesizer


【解决方案1】:

这里有两种方法。两者都从为您的 AVSpeechSynthesizer 实例设置 delegate 开始。

如果您通过创建多个话语并将其排入队列来向合成器提供文本,您可以跟踪您为其发言的话语,并在您的委托中实现speechSynthesizer:didFinishSpeechUtterance:,以便在完成时收到通知.根据您的口述文本的长度以及您已将其分解成多少话语,衡量已完成话语的数量与要说出的总数量,可以提供一个不错的粗粒度指示语音进度。

如果您在一个话语中提供全部文本,或者如果您正在使用多个话语并想要更细粒度地衡量进度,请在您的委托中实施 speechSynthesizer:willSpeakRangeOfSpeechString:utterance:。您可以通过将当前所说的范围与语音字符串的长度进行比较来观察进度。

【讨论】:

  • 我通过使用 willSpeakRange 委托方法并使用结构的 range.location 属性和 utterance.speechstring.length 获得完成百分比。
猜你喜欢
  • 2015-10-20
  • 2016-09-21
  • 2013-04-23
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2020-03-24
相关资源
最近更新 更多