내 프로젝트의 음성 엔진에 Flite 텍스트를 사용하고 있습니다. stated here. 나는 json URL로부터 가치를 얻고 그것을 연설로 변환하고있다. 그러나, 나는 audioPlayerDidFinishPlaying을 구현하는 방법을 알고 싶다. 성공적으로 : Flitetts 파일에서 호출 될 때 메소드를 위임하고 다음 청크를 재생한다. 오디오 플레이어는 다른 개체를 재생해야하며 첫 번째 값을 재생 한 후에 다음 값을 가져 와서이를 음성으로 변환해야합니다. 등 해당 이미지는 내가 얻을 수 있도록 여기에 audioPlayerDidFinishPlaying : successful : Flite 엔진에서
'내가 지금까지했던 코드
...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];
Plz은 몇 가지 예제 코드 또는 자습서를 도와 ...로드해야합니다 작업 완료 ...
플라이트 엔진이 AVAudioPlayer 개체를 사용하여 첫 번째 문자열이 음성으로 변환 된 후도 audioPlayerDidFinishPlaying 호출지고 :
은 여기에의 예입니다. 내가 알고 싶은 유일한 것은이 문자열을 사용하여 첫 번째 문자열을 완성한 후 다음 문자열로 이동하는 방법입니다. –
음, 한 가지 방법은 'audioPlayerDidFinishPlaying'에 다음 URL을로드하고 Flite 엔진을 통해 코드를 제공하는 코드를 넣는 것입니다. 기본적으로 : 처음 실행될 때 첫 번째 URL을 파싱합니다. 'audioPlayerDidFinishPlaying'에서 파싱 할 다른 URL이 있는지 확인한 후 파싱하고 재생하는 경우 검사합니다. 그래서 이런 식으로'audioPlayerDidFinishPlaying'을 루프로 사용할 수 있습니다. – iwasrobbed
올바른 방향으로 가리킬 수도 있습니다. http://www.iphonedevsdk.com/forum/iphone-sdk-development/27285-play-sequence-audio-files-avaudioplayer.html – iwasrobbed