1

谷歌文字转语音正在工作,但并非总是如此。它很少起作用(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];

}

}

关于解决这个问题的任何想法?提前致谢。

4

2 回答 2

1

Google Text-to-Speech 现在不是开源的。他们添加了一个带有可下载 tts mp3 url 的密钥。您可以随机生成密钥,这可能会有所帮助。但是在 iOS 中可以替代 Google Text-to-speech。我将AVSpeechSynthesizer用于某些语言。这篇文章写于 2014 年,此后苹果在 iOS SDK 中添加了一些其他语言。使用此代码段检查现有语言代码:

for(AVSpeechSynthesisVoice *voice in [AVSpeechSynthesisVoice speechVoices]) { NSLog(@"%@", voice.language); }

Sabdkosh中有一些可用于 tts 的印度语言。

于 2016-04-11T11:06:01.197 回答
0

正如Ashik指出的那样,您可以使用AVSpeechSynthesizer。但如果您追求更好的音频质量,您可以使用Google Cloud Text-to-Speech API

我制作了一个关于如何将它集成到你的 iOS 应用程序的教程,你可以在这里找到它。

这里还有一个演示应用程序。

于 2018-06-10T14:15:43.357 回答