谷歌文字转语音正在工作,但并非总是如此。它很少起作用(15 次中有 1 次)。如果我获取 URL 并从浏览器浏览它,我可以听到音频正在播放,但它没有在我的应用程序中播放。这是在 GoogleLiveTTS.m 中调用的方法:
-(void)speak:(NSString *)text InLanguage:(NSString *)languageCode{
NSString *urlString = [NSString stringWithFormat:@"http://translate.google.com/translate_tts?tl=%@&q=%@&client=t",languageCode,[text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc]
initWithURL:url];
NSLog(@"URL:%@",urlRequest);
NSString *userAgent = @"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0";
[urlRequest setValue:userAgent forHTTPHeaderField:@"User-Agent"];
//NSData *responseData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:NULL error:NULL];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if([self.audioPlayer isPlaying])
[self.audioPlayer stop];
self.audioPlayer = [[AVAudioPlayer alloc] initWithData:data error:&connectionError];
[self.audioPlayer prepareToPlay];
[self.audioPlayer play];
}];
[queue release];
}
调用 speak 方法的方法:
-(IBAction)btnSpeak_Click:(id)sender{
if (self.ttsCandidate && [[AppDelegate sharedDelegate]connectedToInternet]) {
[[AppDelegate sharedDelegate].tts speak:self.ttsCandidate];
if(self.isEnglishText)
[[AppDelegate sharedDelegate].tts speak:self.ttsCandidate InLanguage:@"en"];
else
[[AppDelegate sharedDelegate].tts speak:self.ttsCandidate InLanguage:LanguageCode];
}
else if (![[AppDelegate sharedDelegate]connectedToInternet]){
toast = [self.view makeToast:@"Connection error." duration:3.0 position:@"bottom"];
[self performSelector:@selector(hideToast) withObject:nil afterDelay:2.0];
}
}
关于解决这个问题的任何想法?提前致谢。