ios - 如何在 iOS 7 中使用 AVSpeechSynthesizer 改变说话时的语速

标签 ios text-to-speech avspeechsynthesizer

我想在朗读文本时更改语速以了解速度。

我测试了以下两种方式,但语速没有改变。

- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer willSpeakRangeOfSpeechString:NSRange)characterRange utterance:(AVSpeechUtterance *)utterance{

    // 1. AVSpeechUtterance *SpeechUtterence; 
    SpeechUtterence.rate = fSpeechSpeed;

   // 2. set fSpeechSpeed from other view 
    utterance.rate = fSpeechSpeed;

}

最佳答案

如果语音合成器已经开始说话,则意味着您已经调用了 speakUtterance 方法。那时更改任何 AVSpeechUtterance 实例属性(例如速率)都不会产生任何影响。如果你想改变当前说话的速度,你需要使用上面列出的方法 (willSpeakRangeOfSpeechString) 来查明你在分配给话语的字符串中的位置,调用语音合成器方法 stopSpeakingAtBoundary 来停止当前的话语,创建一个基于剩余字符串的新话语,然后再次调用 speakUtterance。

关于ios - 如何在 iOS 7 中使用 AVSpeechSynthesizer 改变说话时的语速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25499803/

相关文章:

带有ARC的iOS APP没有泄漏但事件字节增加

iphone - 在完成 block 中保留循环

android - 文字转语音问题

ios - AVSpeechSynthesizer 不适用于印地语

objective-c - Facebook库登录对话框如何修改其外观?

ios - 如何将 Eureka 表单与另一个表放在 UIViewController 中?

ibm-cloud - IBM Watson 文本转语音curl 示例不起作用

javascript - 如何将 TextToSpeech.talk ("hi' ) 操作添加到按钮

ios - 嗨,有没有办法让 AVSpeech 合成器在使用耳机播放音频的同时使用任一 channel 播放音频?

ios - 实时更改 AVSpeechUtterance 速率