OpenEars - fliteDidFinishSpeaking не вызывается при первом запуске Flite

Список, так как его легче написать:

• музыка начинает играть
• Перейти к следующей дорожке
• Флит говорит название песни
fliteDidFinishSpeaking не стреляет - почему?
• Нажмите Play, чтобы запустить музыку - [musicPlayer play]; находится в конце неудачного метода
• Перейти к следующему треку (или просто дождаться окончания песни)
• Флайт говорит название последней песни - не принимая новый аргумент для say:
• Музыка перезапускается - с этого момента у Flite нет проблем
• Перейти к следующей дорожке
• Флит говорит нормально
• музыка перезапускается

Это происходит только при первом запуске приложения, поэтому что-то не так с инициализацией, либо в моем коде, либо в самом OpenEars/Flite.

1 ответ

Решение

Грубая сила, кажется, работает довольно хорошо:

- (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];
}

Правильное исправление было бы идеальным, если бы кто-нибудь нашел его.

Другие вопросы по тегам