2013-12-16 7 views
17

私のアプリでAVSpeechSynthesizerを使用していますが、音声ファイルまたはAVAssetに音声テキストを保存しようとしています。私はAppleのドキュメントを見て、何も見なかったが、確かめるために質問を投稿すると思った。以下は私の現在のコードです。オーディオファイルへのAVSpeechSynthesizerの発話

AVSpeechUtterance * utterance = [AVSpeechUtterance speechUtteranceWithString:textView.text]; 
float rate = [speedSlider value]/1.5; 
utterance.rate = rate; 
[speechSynthesizer speakUtterance:utterance]; 
+0

このAPIは新しく、後で追加できる機能が不足している可能性があります。再生中のオーディオを録音する方法を調べることはできますか? – erdekhayser

+0

ええ私は既にAVAudioRecoderをセットアップしましたが、クリーナーソリューションがあるかどうかを確認したいだけでした。 – Sean

+0

この問題に適した解決策を見つけましたか?私は似たようなものを作りたいと思っています。 –

答えて

4

(ない他のアプリからの)あなたアプリによって生成された音声を記録することが可能です。 AVSpeechは、生成されたオーディオを保存するためのAPIを提供していませんが、Appleはジョブを実行できる他のAPIを持っています。解決策はおそらくあなたが望むほどきれいではありませんが、うまくいくはずです。

Appleは、高度なオーディオ処理と録音を管理するために、Audio Unit Frameworkというフレームワークを提供しています。これは、オーディオを同時に再生して録音できるiOS SDKの唯一のフレームワークです(私の知る限り)。 Audio Unit Hosting Guideは有望に見え、Audio Mixer Sample Appもそうです。

注:AVSpeechSynthesizerでAudio Unit Frameworkを使用しようとしたことはありません(動作している場合と動作していない場合があります)。しかし、AVSpeechSynthesizerがCoreAudioでうまくいっていることを考えると、AudioUnitsで動作する可能性は高いです。


上記の解決策が機能しない場合は、簡単な回避策が必要です。 AVSpeechSynthesizerは正常に機能するためにネットワーク接続を必要としませんので、多くの場合、オーディオを保存するにはにはが必要ではありません。代わりに、あなたは後でNSFileManagerを使用するためのテキストを保存できます。

NSString *textToSynthesize = @"Just what do you think you are doing, Dave?"; 

NSError *error; 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths firstObject]; 

[textToSynthesize writeToFile:[documentsDirectory stringByAppendingPathComponent:@"synthText.txt"] atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

テキストを合成する準備ができたら、ちょうどファイルからそれを読んで、バックAVSpeechSynthesizerに差し込みます。私は、このソリューションはすべての場合に機能しません(たとえば、オーディオファイルを誰かに送信する必要がある場合など)。


これらは、問題の解決方法のほんの一例であり、どちらも回避策であり、具体的なシナリオによっては動作しない場合もあります。 YMMV。がんばろう!

+0

サムの答えの最初の部分は良いです - アップルはオーディオユニットとオーディオ処理キューを使ってオーディオを操作、録音、再生するリソースを提供していますが、使用するのは非常に複雑で、投資するよりも時間がかかることがあります。しかし、これがあなたの唯一の選択肢だと思うなら、AppleのCore Audioフレームワークへのインターフェースを使いやすいThe Amazing Audio Engineを調べるべきです。 [素晴らしいオーディオエンジンのウェブサイト](http://theamazingaudioengine.com/) – themantalope

関連する問題