web-dev-qa-db-ja.com

オーディオサンプルのキーを決定するためのアルゴリズム

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

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

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

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

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

特に:the_mandrillとDanielBrücknerから。

53
Alex

これは非常にトリッキーな問題であり、信号処理の背景がない(またはそれについて学ぶことに関心がない)場合は、非常にイライラする時間があることに注意してください。問題にいくつかのFFTをスローすることを期待している場合は、それほど遠くまでは行きません。本当に魅力的なエリアですので、興味を持っていただければ幸いです。

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

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

したがって、このアプローチの複雑さを考えると、代替手段は、同時に演奏されているすべてのノートを確認することです。コードがある場合、または複数の楽器を使用している場合は、一度に再生する多くの正弦波のスペクトルスープが豊富になります。個々の音は基本周波数である複数の倍音で構成されているため、A(440Hz)は440、880、1320の正弦波で構成されます。さらに、Eを演奏すると(これを参照してください )ピッチの場合)それは659.25Hzで、ほぼAの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パワースペクトルなど)は、ヒストグラムエントリを増分します。次に、各キーA〜Gについて、ヒストグラムのビンを集計します。エントリが最も多いビンがキーである可能性が最も高くなります。

これは非常に単純なアプローチですが、かき鳴らされた、または持続したコードのキーを見つけるには十分な場合があります。また、信号を短い間隔(20msなど)に刻み、それぞれを分析して、より堅牢な推定を構築する必要があります。

編集:
試してみたい場合は、 Octave または [〜#〜] clam [〜#〜] のようなパッケージをダウンロードすることをお勧めします。オーディオデータを視覚化し、FFTおよびその他の演算を実行します。

その他の便利なリンク:

  • 私の博士論文 ピッチ認識のいくつかの側面について-数学は少し重いですが、第2章は(私が望む)音楽オーディオのさまざまなアプローチの非常にアクセスしやすい紹介です
  • http://en.wikipedia.org/wiki/Auditory_scene_analysis -音楽について話していませんが、複雑なシーンをどのように認識するかについていくつかの興味深い発見があるブレグマンの聴覚シーン分析
  • Dan Ellis は、この分野および同様の分野でいくつかの優れた論文を発表しています
  • キース・マーティン には興味深いアプローチがあります
57
the_mandrill

私は、大学でポリフォニックCDレコーディングをスコアに転記する問題に2年以上取り組んできました。問題は悪名高いほど難しい。問題に関連する最初の科学論文は1940年代にさかのぼり、今日に至るまで、一般的なケースに対する堅牢な解決策はありません。

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

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

フーリエ変換はnotを再生します。フーリエ変換は線形間隔の周波数を生成する一方で、関心のある周波数は対数的に間隔が空いているため、オーディオ分析に適しています。低い周波数では、隣接するピッチを分離するために高い周波数の解像度が必要ですが、これにより時間の解像度が悪くなり、別々のノートをすばやく連続して演奏する能力が失われます。

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

家に帰ったら、読んだ書類をよく読んで、最も関連性の高い20または30の書類を選び、ここに追加します。何かを実装する前にこれらを読むことをお勧めします-前述のとおり、最も一般的な仮定はやや不正確であり、実装およびテスト中に50年以上にわたって検出および分析されたすべての事柄を再発見したくない場合があります。

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


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

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

17

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

使用されている特定の音階を決定するのに役立つように、最も頻繁に聞こえる音をメモします(しゃれは意図されていません)。西洋音楽では、通常、音階のルートが最も一般的に聞こえる音であり、5番目、4番目の順に続きます。一般的な chordsarpeggios 、または progressions などのパターンを探すこともできます。

ここではサンプルサイズがおそらく重要になります。理想的には、各サンプルは1つの音符になります(1つのサンプルで2つのコードが得られないようにするため)。 filter outで低周波数に集中すると、通常は打楽器に関連するボリュームスパイク(「クリック」)を使用して、曲のテンポを特定し、アルゴリズムを「ロック」できる可能性があります。音楽のビートに。ハーフビートの長さのサンプルから始めて、そこから調整します。有用なデータがあまりないサンプル(スライドの真ん中にあるサンプルなど)を捨てる準備をしてください。

6
bta

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

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

5
JAB

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

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

コード、異なる「楽器/エフェクト」、または同音異音の音楽パターンがある場合、状況はより厳しくなります。

3
MRalwasser

キーを分析することは、ピッチを分析することと同じではありません。残念ながら、キーの概念全体はややあいまいであり、異なる定義は通常、強心性の概念、つまり中央のピッチ/コードのみを共有する傾向があります。自動転記のための優れたシステムがあったとしても、キーを決定するための信頼できるアルゴリズムはありません。

1
Musicologist

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

1
Nathan

最初に ピッチ検出アルゴリズム が必要です(例 autocorrelation )。

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

1
Paul R