将音频文件保存到NSURL

时间:2012-11-11 20:39:22

标签: iphone ios audio nsurl

我想保存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: 概要

  • (BOOL)startSpeakingString:(NSString *)string toURL:url;

描述

开始将字符串合成为声音(AIFF)文件。 正常或停止合成字符串时,消息 speechSynthesizer:didFinishSpeaking:发送给代理人。参数 串 要合成的文字。当为零或空时,不发生合成。 网址 输出声音文件的文件系统位置。返回值 合成开始成功时为YES,否则为否。

http://www.ecometrixem.com/cms-assets/documents/44729-919017.acapela-for-iphone.pdf

1 个答案:

答案 0 :(得分:2)

您可以在代码中考虑两件事:

  1. 这条线 NSString *FileNamePath = [[NSBundle mainBundle] pathForResource:@"testAudio" ofType:@"aiff"]; 不需要,因为它只返回文件的最后一部分时返回文件的完整路径:" testAudio.aiff"

  2. 使用构造函数构造URL对象,接受具有有效协议前缀的字符串,例如" http://"或" ftp://"而你需要另一个名为initFileURLWithPath:的构造函数。

  3. 所以上述所有代码可能如下所示:

    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];