56

オーディオサンプルの音楽キーを決定することに興味があります。アルゴリズムはどのように音楽オーディオ サンプルのキーを近似しようとしますか (または可能でしょうか)?

Antares Autotune と Melodyne は、このようなことを行う 2 つのソフトウェアです。

これがどのように機能するかについて、誰でも簡単に説明できますか? コード進行などの周波数スペクトルを分析して、曲のキーを数学的に推測すること。

このトピックは私にとても興味があります!

編集 - この質問に貢献したすべての人から見つけられる素晴らしい情報源と豊富な情報

特に: the_mandrill と Daniel Brückner から。

4

8 に答える 8

62

これは非常にトリッキーな問題であり、信号処理のバックグラウンドがない場合 (または信号処理について学ぶことに興味がない場合) は、非常にイライラすることになります。問題にいくつかの FFT を投入することを期待している場合は、それほど遠くまで到達することはできません。非常に魅力的な分野ですので、興味を持っていただければ幸いです。

最初に、ピッチ認識の問題があります。これは、自己相関またはハーモニック サム スペクトルなどの方法を使用して、単純なモノフォニック楽器 (たとえば、声) に対してかなり簡単に実行できます (たとえば、Paul R のリンクを参照してください)。しかし、多くの場合、これは間違った結果をもたらすことに気付くでしょう: 期待していたピッチの半分または 2 倍になることがよくあります。これは、ピッチ周期倍増またはオクターブ エラーと呼ばれ、基本的に、FFT または自己相関では、データが時間の経過とともに一定の特性を持っているという前提があるために発生します。人間が楽器を演奏する場合、常に何らかのバリエーションがあります。

キー認識の問題を、最初にピッチ認識を行い、次に一連のピッチからキーを見つけるという問題としてアプローチする人もいます。ピッチのモノフォニック シーケンス以外のものがあれば、これは非常に困難です。ピッチのモノフォニック シーケンスがある場合でも、キーを決定するための明確な方法ではありません。たとえば、クロマティック ノートをどのように処理するか、メジャーかマイナーかを決定する方法などです。そのため、Krumhansl のキー検索アルゴリズムに似た方法を使用する必要があります。

したがって、このアプローチの複雑さを考えると、別の方法は、同時に演奏されているすべての音符を調べることです。和音または複数の楽器がある場合、一度に演奏される多くの正弦波の豊富なスペクトル スープが得られます。個々の音は基本周波数の複数の高調波で構成されているため、A (440Hz) は 440、880、1320 の正弦波で構成されます... さらに、E を演奏すると (ピッチについてはこのを参照)、それは 659.25 です。ほぼHzA の 1.5 倍 (実際には 1.498)。これは、A のすべての 3 次高調波が E のすべての 2 次高調波と一致することを意味します。和音が心地よく聞こえる理由は、それらが高調波を共有しているためです。(余談ですが、西洋のハーモニーが機能する理由は、2 の 12 乗根の 7 乗がほぼ 1.5 になるという運命の癖によるものです)

この 5 度からメジャー、マイナー、その他のコードへの間隔を超えて調べると、他の比率が見つかります。多くの重要な検出手法は、これらの比率を列挙し、信号の各スペクトル ピークのヒストグラムを埋めると思います。したがって、和音 A5 を検出する場合、440、880、659、1320、1760、1977 でピークを見つけることが期待されます。B5 の場合、494、988、741 などになります。したがって、頻度ヒストグラムを作成し、すべてについて信号の正弦波ピーク (FFT パワー スペクトルなどから) は、ヒストグラム エントリをインクリメントします。次に、キーごとに AG がヒストグラムのビンを集計し、エントリが最も多いビンがキーである可能性が最も高くなります。

これは非常に単純なアプローチですが、かき鳴らしたコードや持続したコードのキーを見つけるのに十分な場合があります。また、信号を小さな間隔 (たとえば 20 ミリ秒) に切り刻み、それぞれを分析してより確実な推定値を作成する必要があります。

編集:
実験したい場合は、OctaveCLAMなどのパッケージをダウンロードして、オーディオ データを視覚化し、FFT やその他の操作を実行することをお勧めします。

その他の便利なリンク:

  • ピッチ認識のいくつかの側面に関する私の博士論文- 数学は少し難しいですが、第 2 章は (願わくば) 音楽オーディオのモデリングのさまざまなアプローチへの非常にアクセスしやすい入門書です。
  • http://en.wikipedia.org/wiki/Auditory_scene_analysis -- Bregman の聴覚情景分析では、音楽の話ではありませんが、私たちが複雑な情景をどのように知覚するかについて、いくつかの興味深い発見があります。
  • Dan Ellisは、この分野および同様の分野でいくつかの優れた論文を発表しています。
  • Keith Martinにはいくつかの興味深いアプローチがあります
于 2010-06-29T16:39:22.783 に答える
18

私は大学で 2 年以上、ポリフォニック CD 録音をスコアに書き写す問題に取り組んできました。問題は難しいことで知られています。この問題に関連する最初の科学論文は 1940 年代にさかのぼり、今日に至るまで、一般的なケースに対する確実な解決策はありません。

あなたが通常読んでいるすべての基本的な仮定は正確には正しくなく、それらのほとんどは十分に間違っているため、非常に単純なシナリオ以外では使用できなくなります。

倍音の周波数は基本周波数の倍数ではありません。非線形効果があるため、高い部分音は期待される周波数から離れてドリフトします。数ヘルツだけではありません。6 分の 1 を期待していた場所に 7 分の 1 部分音を見つけることは珍しいことではありません。

フーリエ変換は、関心のある周波数が対数的に配置されているのに対し、フーリエ変換は線形に配置された周波数を生成するため、オーディオ分析には適していません。低周波数では、隣接するピッチを分離するために高周波数の解像度が必要ですが、これにより時間の解像度が低下し、別々の音符をすばやく連続して再生することができなくなります。

オーディオ録音には、(おそらく)スコアを再構築するために必要なすべての情報が含まれているわけではありません。私たちの音楽認識の大部分は、耳と脳で行われます。そのため、最も成功しているシステムの一部は、(西洋の) 音楽の構造に関する大規模な知識リポジトリを備えたエキスパート システムであり、オーディオ録音から情報を抽出するために信号処理にわずかな部分しか依存していません。

家に帰ったら、読んだ論文に目を通し、最も関連性の高い 20 つか 30 の論文を選んで、ここに追加します。何かを実装することを決定する前に、それらを読むことを強くお勧めします-前に述べたように、ほとんどの一般的な仮定は多少間違っており、実装とテスト中に50年以上にわたって発見および分析されたこれらすべてを再発見したくない.

難しい問題ですが、とても楽しいです。あなたが試したことと、それがどれほどうまくいったかを本当に聞きたいです。


今のところ、Constant Q 変換、ケプストラム、およびウィグナー (–Ville) 分布を見ることができます。短時間フーリエ スペクトルの位相のシフトから周波数を抽出する方法についての優れた論文もいくつかあります。これにより、周波数を数 1000 倍の精度で決定できるため、(高い時間分解能のために) 非常に短いウィンドウ サイズを使用できます。基礎となるフーリエ変換の周波数分解能よりも。

このすべての変換は、通常のフーリエ変換よりもはるかに音声処理の問題に適合します。基本的な変換の結果を改善するには、エネルギー再割り当ての概念を見てください。

于 2010-06-29T17:50:21.347 に答える
6

フーリエ変換を使用して、オーディオ サンプルから周波数スペクトルを計算できます。この出力から、特定の音の周波数値を使用して、これをサンプル中に聞こえた音のリストに変換できます。一連のサンプルからサンプルごとに聞こえる最も強い音を選択すると、使用されているさまざまな音の適切なマップが得られます。これをさまざまな音階と比較して、その音の組み合わせを含む可能性のある音階のリストを取得できます。

どの音階が使用されているかを判断するために、最も頻繁に聞こえる音符を書き留めてください (駄洒落ではありません)。西洋音楽では、通常、音階のルートは最もよく耳にする音で、次に 5 番目、4 番目の音と続きます。一般的なコードアルペジオプログレッションなどのパターンを探すこともできます。

ここでは、サンプルサイズがおそらく重要になります。理想的には、各サンプルは 1 つのノートになります (1 つのサンプルで 2 つのコードを取得しないようにするため)。フィルタリングして低周波数に集中すると、通常打楽器に関連する音量スパイク (「クリック」) を使用して、曲のテンポを決定し、アルゴリズムを音楽のビートに「ロック」できる場合があります。半拍長のサンプルから始めて、そこから調整します。多くの有用なデータを持たないサンプル (スライドの途中で取得したサンプルなど) を破棄する準備をしてください。

于 2010-06-29T15:30:04.283 に答える
5

この記事からわかる限り、さまざまなキーにはそれぞれ独自の共通周波数があるため、オーディオ サンプルを分析して、最も一般的な音符とコードを検出する可能性があります。結局のところ、シャープとフラットの同じ構成を持つ複数のキーを持つことができます。違いは、キーが開始する音とそのようなキーの和音であるため、重要な音符と和音が現れる頻度はそのようなことを理解できる唯一の本当の方法です。多くの情報を省略せずに、実際の数式の素人の説明を得ることができるとは本当に思いません。

これは、この分野での経験がまったくない人からのものであることに注意してください。彼の最初の露出は、この回答にリンクされている記事です。

于 2010-06-29T15:16:21.683 に答える
3

これは複雑なトピックですが、単一のキー (単音) を決定するための単純なアルゴリズムは次のようになります。

ノートを含むサンプルの一部で、たとえば 4096 サンプル (正確なサイズは解像度の要求によって異なります) に対してフーリエ変換を実行します。スペクトルのパワー ピークを決定します。これがノートの周波数です。

コード、異なる「楽器/エフェクト」、または同音異義の音楽パターンがある場合、物事はよりタイトになります。

于 2010-06-29T15:21:42.510 に答える
2

まず、ピッチ検出アルゴリズム(自己相関など)が必要です。

次に、ピッチ検出アルゴリズムを使用して、多数の短い時間枠でピッチを抽出できます。その後、サンプリングされたピッチがどの音楽キーに最も適合するかを確認する必要があります。

于 2010-06-29T15:30:52.893 に答える
1

今すぐたくさんの曲を分類する必要がある場合は、Mechanical Turkなどで問題をクラウドソーシングしてください。

于 2010-06-29T21:06:13.287 に答える