1

私はCore Audioを初めて使用し、本当に迷っています。オーディオを録音してから、その録音に音声変調を適用して再生しようとしています。音声録音に Audio Queue を使用する Speak Here の例を見てきました。オーディオサンプルを変更する方法の部分で立ち往生しています。コールバック関数で Audio Unit を使用してオーディオ サンプルを変更できることは理解していますが、サンプルを変更するためにそれらのサンプルに何を適用すればよいかわかりません (ピッチを変更すると効果がありますか?)。

ソース コードやチュートリアル、または目的 C の音声変調について説明しているサイトを教えていただければ、本当に助かります。よろしくお願いします。

4

2 に答える 2

2

ここでやろうとしていることはそれほど単純ではありません。基本的に、ボイスを変更するにはボコーダー(「ボイスコーダー」)を実装する必要があります。ウィキペディアのリンクはそこであなたを助けるはずです。

その後、CoreAudioでこれらのサンプルを操作します。これはAudioQueueServicesを使用して行うことができますが、それは必ずしも使いやすいAPIではありません。実際には、より単純なCoreAudio APIの1つを使用して、ボコーダーをAudioUnitでラップする方が問題が少ない場合があります。

オーディオ処理の経験はありますか?一般的なオーディオ処理に関する事前の知識がなくてもボコーダーを実装するのは難しい作業です。

于 2010-08-30T07:03:10.430 に答える
2

まず、実際に質問に答えます。AudioQueueNewInput()関数を呼び出すときに、データが利用可能になるたびに呼び出されるルーチンの名前を渡します。あなたはおそらくそれをMyInputBufferHandler()か何かと呼んでいます。3番目の引数は、着信データを保持するAudioQueueBufferRefです。

これは、各サンプル(振幅)を見て、それを上下させるほど単純ではないことに注意してください。時間(時間)領域のサンプルを振幅として受け取ります。利用可能なピッチまたは周波数情報はありません。あなたがする必要があるのは、入ってくるサンプル(波形)を周波数領域に移動することです。ここで、その空間の各「ポイント」は周波数であり、それに付随する電力と位相です。FFT(高速フーリエ変換)でそれを行うことができますが、数学はやや洗練されています。AppleはAccelerationフレームワークでFFTルーチンを提供していますが、ここでは非常に深い水域に足を踏み入れていることに注意してください。

于 2010-12-01T20:47:24.210 に答える