4

我将 API 与以下代码一起使用:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"file.mp3"];

NSString *text = textToTranslate; //@"You are one chromosome away from being a potato.";
NSString *urlString = [NSString stringWithFormat:@"http://www.translate.google.com/translate_tts?tl=en&q=%@",text];
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url] ;
[request setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" forHTTPHeaderField:@"User-Agent"];
NSURLResponse* response = nil;
NSError* error = nil;
NSData* data = [NSURLConnection sendSynchronousRequest:request
                                     returningResponse:&response
                                                 error:&error];
[data writeToFile:path atomically:YES];

SystemSoundID soundID;
NSURL *url2 = [NSURL fileURLWithPath:path];

AudioServicesCreateSystemSoundID((__bridge CFURLRef)url2, &soundID);
AudioServicesPlaySystemSound (soundID);

哪个有效,但仅适用于短句(大约少于 10 个单词)我做错了什么?如何在不降低语音质量的情况下解决该问题或将其分成几篇文本?

4

2 回答 2

3

Google TTS 限制为100 个字符

所以你应该把你的长句子分成 100 个字符的小块,然后将它传递给 Google TTS 方法。

您可以通过执行以下步骤来实现这一点。

  1. 将你的长句分成 100 个字符的小块。
  2. 使用第一个拆分 100 个字符的字符串调用 Google TTS。
  3. 使用 Google TTS 和 AVAudioPlayer 播放
  4. 实现 AVAudioPlayer audioPlayerDidFinishPlaying 委托。
  5. 在该委托中,使用第二个拆分为 100 个字符的字符串调用 Google TTS。
  6. 递归调用该过程,直到到达最后一个字符。

这是我为您创建的Google-TTS-Library-For-iOS库:)

于 2013-04-19T01:25:30.233 回答
2

Google TTS 限制为 100 个字符。

我最近创建了一个对解决这个问题有很大帮助的库。有一些改进,但请免费使用。 谷歌TTSAPI

于 2013-07-28T04:44:24.250 回答