2012-05-01 1 views
0

список, так как это проще написать:OpenEars - fliteDidFinishSpeaking не называется первый раз Flite запускаемое

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

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

ответ

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

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