2

私はボイスチェンジャーアプリについて非常に新しいです。誰でも女の子の声のようにピッチを変更する方法を教えてください。

これが私が使用したコードです。

audioPlayerNode=[[AVAudioPlayerNode alloc]init];

    [audioEngine attachNode:audioPlayerNode];

    changePitchEffect=[[AVAudioUnitTimePitch alloc]init];
      changePitchEffect.pitch=pitch;
 [audioEngine attachNode:changePitchEffect];


[audioEngine connect:audioPlayerNode to:changePitchEffect format:audioFile.processingFormat ];

[audioEngine connect:changePitchEffect to:audioEngine.outputNode format:processingFormat];

[audioPlayerNode scheduleFile:audioFile atTime:nil completionHandler:nil ];

    AVAudioInputNode *input = [audioEngine inputNode];
    AVAudioFormat *format = [input outputFormatForBus: 0];

    [audioEngine prepare];

    [audioEngine startAndReturnError:nil];

audioFileのピッチを変更した後、明瞭さが失われ、より多くの障害が発生しました。これに対する解決策を提案できる人はいますか

4

1 に答える 1

2

それは簡単な仕事ではありません。基本的には、全体のピッチではなく、音のフォルマントをシフトする必要があります。

男性と女性が同じ音符を歌っていると想像してください。彼らは同じ音符を歌っているにもかかわらず(つまり、彼らの音は実際には同じピッチにあるということです)、それでも男性と女性の違いを認識することができます. したがって、フォルマントの違いが原因です。フォルマントは、周波数スペクトル内の事前定義された範囲と考えることができます。

フォルマント シフトを提供する Obj-C/Swift フレームワークについては知りません。基本的な C++ ソリューションが見つかると思います。

自分で実装したい/実装しなければならない場合は、おそらく Core Audio を使用して自分で DSP を実行する必要があります。この場合、Obj-C/Swift での実装を開始する前に、Matlab/Octave または Native Instrument の「Reaktor」などのグラフィカル DSP プログラミング ソフトウェアで動作するプロトタイプを作成することをお勧めします。

前述のとおり、これは重要な作業です。


要件に応じて、ピッチ変更と EQ のさまざまな組み合わせと設定を試すことができますが、結果は常に「おもちゃのよう」になります。

于 2016-12-30T11:12:51.960 に答える