回答:
ええ、私たちの一部はそれを行うことができます、あなたはピッチに影響を与えずにスピードを上げたり下げたりできます、何人かの人はタイムストレッチのこのアプリケーションを呼び出します、それを行うさまざまな方法がありますあなたにとって最善の方法は、それぞれの長所と短所があります。
時間領域:
タイムドメインでは、次のようなテクニックを試すことができます。
長所:高速で、一部のアルゴリズムは理解しやすく、モノフォニックサウンドの品質が高い
短所:一般に、正しい位置に接続するには非常に優れたピッチトラックが必要ですが、これは難しいため、ピッチトラックが失敗するか、ポリフォニックサウンドで機能しない場合、このアルゴリズムは多くの不具合/アーティファクトを生じます。出力音に。
周波数領域:
私が周波数領域で知っているすべてのタイムストレッチは、位相ボコーダー技術に基づいています。
長所:ポリフォニックまたはモノフォニックのサウンドで機能します。
短所:すべての数学を理解するのは難しいかもしれませんが、実装は少し難しいですが、時間領域コードのように高速ではありません。音声の場合、時間領域の結果を好むため、標準フェーズボコーダーの結果を改善するためのいくつかのトリックは共有されません。
ウィンドウとホップサイズはフェーズボコーダーの品質の鍵の1つであると言えます。通常4x
、再合成へのオーバーラップを選択します。4096
私の耳にはサイズの1つのハンウィンドウで十分です(もちろん、このサイズの処理能力がある場合) 、標準のフェーズボコーダーは残響効果を追加できます。この種の問題を回避するには、フェーズをロックする必要があるかもしれません。
詳細については、Miller Puckette and Portnoffの論文をご覧ください。
44100 * 60 = 2646000
、一度にフーリエを適用して処理する必要があるので、このようなリアルタイム処理の試みは忘れてください
あなたが説明するツール/理論は、実際には音楽技術の研究の大きな領域であり、広くオーディオのタイムスケール修正と呼ばれています。このフィールドの大きな要素は、タイムストレッチ後の周波数の可聴変化を防ぐ方法です。これは、アプリケーションの制約または目標に応じて、周波数領域と時間領域の両方の方法でアプローチできます。オーディオタイムスケール/ピッチ変更のウィキペディアエントリは、出発点として適しています。
周波数/ウェーブレットベースを使用したアプローチを追求したい場合は、ウィンドウサイズとベースの選択が、信号のローカライズの精度に影響します。例としてSTFTを使用するには、長いウィンドウは定常正弦波に対しては適切に機能しますが、過渡現象を破壊します。ウィンドウが短いほど、周波数領域の定位を犠牲にして、望ましい過渡応答が得られます。他のウェーブレットベースのパフォーマンスは、ベースへの信号の投影の性質に依存します。
以下は、Stephan M. BernseeによるC ++のシンプルで価値のあるチュートリアル関数(smbPitchShift.cpp)へのリンクです。これは、ピッチを変更せずに音楽をスローダウンまたはスピードアップできます。
彼はこのコードをThe Wide Open License(WOL)の下でリリースしました。私のアプリケーションでは、彼の機能をリアルタイムで音楽のスローダウンに適合させることができました。つまり、mp3ファイルを再生しながら、同時にそのmp3信号のピッチ検出も行いました。
音楽などのオーディオ信号のタイムストレッチとピッチシフトに関する彼の詳細な説明を含むベルンゼーのウェブサイトへのリンクも含めました。
time stretch
元のコードが適用され、Pitch Shift
この場合には、あなたが結合する必要があります時間スケールの修正適用するために、Pitch Shifit + Resample (interpolation)
Bernseeのコードは、大きさの窓使ってうまく動作しますが、4096
あなたは1オクターブ(上または下)ピッチシフトできるようになりますが、つまり、2.0x〜0.5xの係数を使用してタイムスケールを高品質で作成できるだけであり、適切に構築されたフェーズボコーダーは、同じウィンドウサイズを使用してより良い結果を得ることができ、これらを外挿できるようになります。より良い品質の要因
8192
ダウンロードページのコードのウィンドウサイズ=なので、処理に4倍のポイントを実行する必要がありますか、私はハーフウィンドウサイズ8192/2=4096
でフェーズボコーダーのいくつかの秘密を使用して同じことを行うことができると言いますが、ここでのポイントは、はるかに少ない処理で品質を維持できることです。