gpt4 book ai didi

ios - AVSpeechSynthesizer continueSpeaking 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:17 24 4
gpt4 key购买 nike

我已经创建了一个 AVSpeechSynthesizer 并开始播放一个 AVSpeechUtterance。这很好用。如果用户按下按钮,我会暂停合成器。这也有效。但是,当我尝试使用 continueSpeaking 方法重新启动合成器时,没有任何反应。如果我检查 isSpeaking 属性,它仍然是 NO。如何让音频从中断的地方重新开始播放?

AVSpeechSynthesizer *synthesizer_;

synthesizer_ = [[AVSpeechSynthesizer alloc] init];
synthesizer_.delegate = self;


- (void)textToSpeech{
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:itemText];
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:localeCode];
utterance.rate = UTTERANCE_RATE;
utterance.preUtteranceDelay = itemDelayTimeInterval;
[synthesizer_ speakUtterance:utterance];
}

- (IBAction)pauseButtonPressed:(id)sender {
if (synthesizer_.isSpeaking) {
[synthesizer_ pauseSpeakingAtBoundary:AVSpeechBoundaryWord];
}
else{
[synthesizer_ continueSpeaking];
}

最佳答案

您的原始代码是:

if (synthesizer_.isSpeaking) {

试试这个:

if (![synthesizer_ isPaused])

原因:

来自文档:请讲一个 bool 值,指示合成器是否正在说话。 (只读)

@property(nonatomic, readonly, getter=isSpeaking) BOOL speaking

讨论如果合成器正在说话或有排队要说话的话语,即使它当前已暂停,也返回 YES。如果合成器已经说完其队列中的所有话语,或者如果它还没有被赋予说话的话语,则返回 NO

可用性适用于 iOS 7.0 及更高版本。声明于AVSpeechSynthesis.h

因此,如果您使用此属性,并且语音已暂停,则此属性可以为真,您的语音继续代码将不会运行。

关于ios - AVSpeechSynthesizer continueSpeaking 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19367670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com