web-dev-qa-db-ja.com

ギターコード認識アルゴリズム?

ギターのコードに適した優れたデジタル信号処理アルゴリズムは何ですか?高速フーリエ変換なので、ギターで弾く単音だけが正確だと思いますが、同時に演奏される音(コード)は正確ではないと思います。

ありがとう!

39
user488792

簡単に言えば、複数のアルゴリズムが必要になるということです。良いコード認識方法は、「システム」としてより適切に説明できますが、通常、実際には周波数ドメインへの初期変換(ほとんどの場合DFT)に基づいています。

このような曲のコード表現が必要な場合

C G Am F7 F6 C ...

これは実際には、オーディオの音符の認識からわずかに取り除かれた問題です。実際、2つの問題(大まかに言えば)があります。

  1. 常に存在するピッチを見つける
  2. コードラベルを時間間隔に割り当てることができるように、これらのピッチを時間とともにグループ化します。

時間領域(通常のオーディオ)から周波数領域(スペクトル表現)への変換方法の重要性は限定的であることがわかります。後で行うことは非常に重要であり、この問題に取り組むために、洗練された確率モデル(音声認識のモデルと同様:HMM、DBNなど)がよく使用されます。

この分野の高度な研究を行うには、Googleの学者「コードの転写」、「コードの検出」、「コードのラベル付け」を試してください。

これらのアプローチのほとんどは、離散フーリエ変換(DFT)を使用して初期スペクトログラムを作成します。さらなるマルコフモデル、動的ベイジアンネットワーク、サポートベクターマシン(SVMstruct)、条件付きランダムフィールドなど、さまざまな時系列平滑化手法が使用されていますが、その後の処理でも、それらはわずかに異なる傾向があります。最も高度な筆記録者は、自動チューニング、キー情報、ベースノート情報、およびメトリック位置の情報を使用して、結果を改善します。私の 論文 (第2章)は素晴らしい概要を提供します。

オープンソースのコード検出アルゴリズム:

お役に立てれば。

71
tias

DFT(FFT)を使用する合理的に成功したツールがいくつかありますが、それらはDFTの計算後に多くの処理を実行します。

試してみてください このリンク 現在の最新技術の概要については、Googleの「Chordino」または「Chordata」は、オープンソースのコード抽出アルゴリズムについてです。

3
Matthias

さて、あなたはウェーブレットのような周波数領域のためのアルゴリズムの別のセットを試すことができます。しかし、それが精度の問題に役立つかどうかはわかりません。実際、FFTでどのような問題が発生しているのかはわかりませんでした。それは常にコードの近似であり、サウンドに関するそのような情報を取得する完璧な方法はありません。

したがって、そのスペクトルで行う分析によって異なります。単音では、実際にはFFTよりも優れたアルゴリズムがたくさんありますが、コードではFFTを使用する必要がある可能性が非常に高くなります。

対処しなければならない問題は、基本高調波を高次高調波から分割することです。役立つ可能性があることの1つは、ギターの範囲にある周波数のみを考慮することです。ギターサウンドだけを扱う必要がある場合は、ギターの通常の周波数領域グラフを検討する時間を与え、それを使用して精度を向上させるようにしてください。

3
Nemeth

ソフトウェアを適切に設定すれば、FFTはすべての単一トーンを提供できます。 FFTの要点は、トーンを区別することです。または、天体物理学者であれば、星から降り注ぐ光の中にある個々の要素(硫黄、水素...)を知りたいでしょう。

ハーモニクスは、C = 440hzなどの基本周波数よりも「パワー」が小さいため問題ではありませんが、C = 880hzも同様ですが、FFT結果では880が小さくなります。

2
user1359407

科学者の間には、音楽のさまざまなパラメーターを分析しようとする コンテスト があります。このコンテストのセクションの1つはコード認識です。このコンテストは公開されているので、誰でも参加でき、この分野で結果を表示できます。 2011年の結果が公開されました こちら

私の友人は、この領域(およびこのコンテスト)でも良い結果を出しています。彼のアプローチについては、彼の webpage で読むことができます。

1
Yury