我想保存TTS SDK生成的音频文件。 我不确定使用NSURL路径做什么是正确的方法。
这是代码,但结果显示NO。 如果我不尝试保存音频文件,MyAcaTTS工作正常。
NSString *FileNamePath = [[NSBundle mainBundle] pathForResource:@"testAudio" ofType:@"aiff"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appSettingsPath = [documentsDirectory stringByAppendingPathComponent:FileNamePath];
NSURL *url=[[NSURL alloc]initWithString:appSettingsPath];
BOOL result = [MyAcaTTS_ startSpeakingString:@"testing" toURL:url];
Acapela iPhone SDK的文档。
6.2.3.startSpeakingString:的toURL: 概要
描述
开始将字符串合成为声音(AIFF)文件。 正常或停止合成字符串时,消息 speechSynthesizer:didFinishSpeaking:发送给代理人。参数 串 要合成的文字。当为零或空时,不发生合成。 网址 输出声音文件的文件系统位置。返回值 合成开始成功时为YES,否则为否。
http://www.ecometrixem.com/cms-assets/documents/44729-919017.acapela-for-iphone.pdf
答案 0 :(得分:2)
您可以在代码中考虑两件事:
这条线
NSString *FileNamePath = [[NSBundle mainBundle] pathForResource:@"testAudio" ofType:@"aiff"];
不需要,因为它只返回文件的最后一部分时返回文件的完整路径:" testAudio.aiff"
使用构造函数构造URL对象,接受具有有效协议前缀的字符串,例如" http://"或" ftp://"而你需要另一个名为initFileURLWithPath:
的构造函数。
所以上述所有代码可能如下所示:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appSettingsPath = [documentsDirectory stringByAppendingPathComponent:@"testAudio.aiff"];
NSURL *url=[[NSURL alloc]initFileURLWithPath:appSettingsPath];
BOOL result = [MyAcaTTS_ startSpeakingString:@"testing" toURL:url];