2013-05-08 1 views
0

У меня есть приложение iOS, которое читает текст с использованием API OpenEars. Я использую последнюю версию (1.2.5). Я не могу понять, как изменить высоту, пока слова читаются («на лету»). Я создал ползунок для управления высотой тона. Делегат запускается с изменением ползунка. В функции делегата изменен параметр target_mean FliteController. Цель состояла в том, чтобы изменить высоту тона, как только значение target_mean было изменено. Мой код выглядит следующим образом:Динамическое изменение шага OpenEars (на лету)

-(void)sayTheMessage:(NSString *)message { 

    // if there is nothing there, don't try to say anything 
    if (message == nil) 
     return; 

    [self.oeeo setDelegate:self]; 

    // we are going to say what is in the label... 
    @try { 

     // set the pitch, etc... 
     self.flite.target_mean = pitchValue; // Change the pitch 
     self.flite.target_stddev = varienceValue; // Change the variance 
     self.flite.duration_stretch = speedValue; // Change the speed 

     // finally say it! 
     [self.flite say:message withVoice:self.slt]; 

    } 
    @catch (NSException *exception) { 

     if ([delegate respondsToSelector:@selector(messageError)]) 
      [delegate messageError];   
    } 
    @finally { 

    } 
} 


-(void)changePitch:(float)pitch { 

    if ((pitch >= 0) && (pitch <= 2)) { 

     // save the new pitch internally 
     pitchValue = pitch; 

     // change the pitch of the current speaking.... 
     self.flite.target_mean = pitchValue; 
    } 

} 

Любые идеи?

ответ

2

Разработчик OpenEars здесь. Вы не можете изменять высоту звука на лету с помощью FliteController, так как шаг устанавливается до обработки речи.