我在我的项目stated here中使用了Flite text to speech引擎。我正在从json url中获取值,并将它们转换为语音。但是,我想知道如何实现audioPlayerDidFinishPlaying:successfully: delegate方法,并在Flitetts文件中调用它时播放下一个块。音频播放器必须一个接一个地播放对象,在播放完第一个值之后,它必须获取下一个值并将其转换为语音。相应的图像等也必须加载...
这是我到目前为止所做的代码。
SBJSON *json = [[SBJSON alloc]init];
fliteEngine = [[FliteTTS alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.sampleurl.txt"]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *jsonstring = [[NSString alloc]initWithData:response encoding:NSUTF8StringEncoding];
NSArray *asanasList = [json objectWithString:jsonstring error:nil];
NSArray *asanas =[asanasList objectForKey:@"yogagurubackpain"];
for(NSDictionary *test in asanas)
{
UrlValues *myasanas = [[UrlValues alloc]init];
myasanas.asanatitle = [test objectForKey:@"asanatitle"];
myasanas.asanatranscript = [test objectForKey:@"asanatranscript"];
myasanas.asanapicture = [test objectForKey:@"asanapicture"];
[data.yoga addObject:myasanas];
[myasanas release];
}
UrlValues *asana=[[data yoga]objectAtIndex:0];
self.AsanaName.text = [asana asanatitle];
self.AsanaTranscript.text = [asana asanatranscript];
NSString *imageUrl = [asana asanapicture];
NSString* mapUrl = [imageUrl stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSData* imageData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:mapUrl]];
UIImage* image = [[UIImage alloc] initWithData:imageData];
self.AsanaImage.image = image;
NSString *speak = self.AsanaTranscript.text;
[fliteEngine setVoice:@"cmu_us_rms"];
[fliteEngine speakText:speak];
[fliteEngine setPitch:100.0 variance:11.0 speed:0.4];
[imageData release];
[image release];
[jsonstring release];
[json release];请帮助我一些示例代码或教程,以便我可以完成任务…
发布于 2010-06-24 02:32:26
只有在文本到语音转换引擎使用AVAudioPlayer对象播放声音时,才能调用audioPlayerDidFinishPlaying委托方法。如果不是,那么显然委托方法将不会被调用。相反,您必须禁用它,使其无法直接播放声音,并使用AVAudioPlayer对象。
这里有一个这样的例子:
http://artofsystems.blogspot.com/2009/02/speech-synthesis-on-iphone-with-flite.html
https://stackoverflow.com/questions/3100113
复制相似问题