OpenEars - FliteDidFinishSpeaking在Flite第一次被解雇时没有调用

时间:2012-05-01 16:48:24

标签: iphone xcode openears

列表,因为它更容易编写:

•音乐开始播放 •跳至下一曲目
•Flite说歌曲标题
fliteDidFinishSpeaking无法解雇 - 为什么? •点击播放以开始播放音乐 - [musicPlayer play];处于失败方法的结尾 •跳到下一首曲目(或等待歌曲完成)
•Flite说出最后一首歌的标题 - 没有采用say:的新论据 •音乐重启 - 从现在开始,Flite没有问题 •跳至下一曲目
•Flite通常说话 •音乐重新开始

这仅在应用首次启动时发生,因此初始化时出现问题,无论是在我的代码中还是在OpenEars / Flite本身。

1 个答案:

答案 0 :(得分:0)

蛮力似乎运作良好:

- (void)fliteWillStartSpeaking {
    [self resetFliteController];
    [fliteController say:@"some words" withVoice:curVoice];

    fliteDidFinish = NO;
    fliteFinishTimer = [NSTimer scheduledTimerWithTimeInterval:kFliteTimerCycle
                         target:self selector:@selector(forceFliteDidFinish)
                         userInfo:nil repeats:NO];
}

- (void)forceFliteDidFinish {
    if (!fliteDidFinish) {
        [self fliteDidFinishSpeaking];
    }

    [fliteFinishTimer invalidate];
}

如果有人找到了,那么正确的解决方案将是理想的。