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];
}
Правильное исправление было бы идеальным, если бы кто-нибудь нашел его.