如何解决iPhone上的文字转语音
|解决方法
我对此进行了调查,很遗憾,这些选择要么非常昂贵,要么质量很差:
Acapela质量好,但价格昂贵。
Ivona iOS版本和价格可根据要求提供。
NeoSpeech的VoiceText。价格可根据要求提供。
https://bitbucket.org/sfoster/iphone-tts/音乐节端口。质量差。
与此相关的是如何使用Google的在线TTS(来自iPhone SDK的代码-Google TTS和编码):
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@\"file.mp3\"];
NSString *text = @\"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] autorelease];
[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];
AVAudioPlayer *player;
NSError *err;
if ([[NSFileManager defaultManager] fileExistsAtPath:path])
{
player = [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:path] error:&err];
player.volume = 0.4f;
[player prepareToPlay];
[player setNumberOfLoops:0];
[player play];
}
Apple的配音框架是私有的,只能用于可访问性。至少如果您希望您的申请获得批准。但是,如果要在决定使用哪个系统时使用它,则为:
// Not App Store safe. Only available in real devices.
// See http://arstechnica.com/apple/2010/02/iphone-voiceservices-looking-under-the-hood/
#define RTLD_LAZY 0x1
#define RTLD_NOW 0x2
#define RTLD_LOCAL 0x4
#define RTLD_GLOBAL 0x8
NSObject *voiceSynthesizer;
void *voiceServices;
-(void) say:(NSString*)text {
if (!voiceSynthesizer)
{
NSString *vsLocation = @\"/System/Library/PrivateFrameworks/VoiceServices.framework/VoiceServices\";
voiceServices = dlopen(vsLocation.UTF8String,RTLD_LAZY);
voiceSynthesizer = [NSClassFromString(@\"VSSpeechSynthesizer\") new];
}
[voiceSynthesizer performSelector:@selector(startSpeakingString:) withObject:text];
}
, 从关于SO的一些问题(忘了哪个,再也找不到),我得到了指向OpenEars的链接。
对于这么轻的东西,我真的不能抱怨。
插入有点混乱,但是文档全部用于Xcode4。除非出现用户错误,否则它不会爆炸项目。有一些警告(其中一些警告看起来像它们在运行时会导致崩溃),但是到目前为止看起来还不错。
编辑:最新的OE版本更容易安装。绝对推荐。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。