簡體   English   中英

在iOS上使用谷歌文字轉語音(TTS)API

[英]Using google Text-To-Speech (TTS) API on iOS

我正在使用此代碼的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個字)我做錯了什么? 如何在不降低語音質量的情況下解決這個問題或將其分成幾個文本?

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庫:)

Google TTS限制為100個字符。

我最近創建了一個lib,它幫助解決了這個問題。 有一些改進,但請自由使用它。 GoogleTTSAPI

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM