3

TTSSDKで生成されたオーディオファイルを保存したい。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];

AcapelaiPhoneSDKのドキュメント。

6.2.3.startSpeakingString:toURL:概要

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

説明

文字列のサウンド(AIFF)ファイルへの合成を開始します。文字列の合成が正常に終了するか停止すると、メッセージspeechSynthesizer:didFinishSpeaking:がデリゲートに送信されます。パラメータ文字列合成するテキスト。nilまたは空の場合、合成は行われません。url出力サウンドファイルのファイルシステムの場所。合成が正常に開始された場合はYESを返し、それ以外の場合はNOを返します。

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

4

1 に答える 1

2

コードで考慮すべきことが2つあります。

  1. この行 NSString *FileNamePath = [[NSBundle mainBundle] pathForResource:@"testAudio" ofType:@"aiff"]; は、ファイルの最後の部分「testAudio.aiff」のみが必要なときにファイルのフルパスを返すため、必要ありません。

  2. 「http://」や「ftp://」などの有効なプロトコルプレフィックスを持つ文字列を受け入れるコンストラクターを使用してURLオブジェクトを作成しますが、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];
于 2012-11-11T21:00:35.187 に答える