異なる(音楽的?)トーンの識別に使用する方法論


12

私はこの問題をどのように攻撃するのが最善かを研究し、解明しようとしています。音楽処理、画像処理、信号処理にまたがるので、それを見る方法は無数にあります。純粋なsig-procドメインでは複雑に見えるかもしれないことは、画像や音楽の処理を行う人々によって簡単に(そしてすでに解決されているので)アプローチするための最良の方法について尋ねたかったのです。とにかく、問題は次のとおりです。ここに画像の説明を入力してください

問題の私の手描きを許せば、次を見ることができます:

上の図から、3つの異なる「タイプ」の信号があります。最初のパルスは、からまで周波数を「ステップアップ」して、繰り返すパルスです。特定のパルス持続時間と特定のパルス繰り返し時間を持っています。f 4f1f4

2番目のものはにのみ存在しますが、パルス長が短く、パルス繰り返し周波数が高速です。f1

最後に、3番目はトーンです。f1

問題は、信号1、信号2、および信号3を区別できる分類器を作成できるように、どのようにこの問題に取り組むかです。つまり、シグナルの1つをフィードすると、このシグナルがそうであることがわかります。対角線混同行列を与える最適な分類子は何ですか?

いくつかの追加のコンテキストと私がこれまで考えてきたこと:

私が言ったように、これは多くの分野にまたがっています。私が座ってこれと戦争に行く前に、どの方法論がすでに存在しているのかを尋ねたかった。ホイールを誤って再発明したくありません。さまざまな視点から見た考えをいくつか紹介します。

信号処理の観点: 私が検討したことの1つは、ケプストラム分析を行い、ケプストラムのGabor Bandwidthを他の2と区別するために使用し、次にケプストラムの最高ピークを測定することでした。シグナル-2から1。それが私の現在の信号処理作業ソリューションです。

画像処理の観点:ここでは、スペクトログラムに対して実際に画像を作成できるので、その分野の何かを活用できるのではないかと考えています。私はこの部分に精通していませんが、ハフ変換を使用して「ライン」検出を行い、ラインを「カウント」(ラインとブロブではない場合はどうですか?)してそこから行くのはどうですか?もちろん、スペクトログラムを撮影する任意の時点で、表示されるすべてのパルスが時間軸に沿ってシフトする可能性がありますので、これは問題になりますか?わからない...

音楽処理の観点:確かに信号処理のサブセットですが、signal-1には特定の、おそらく反復的な(音楽的?)品質があり、music-procの人々は常に見ており、すでに解決済みです多分楽器を区別する?確かではありませんが、考えは私に起こりました。おそらく、この立場はそれを見る最良の方法であり、時間領域の塊を取り、それらのステップレートをからかいますか?繰り返しますが、これは私の分野ではありませんが、これは以前に見られたものだと強く疑っています... 3つの信号すべてを異なる種類の楽器として見ることができますか?

また、かなりの量のトレーニングデータがあることも付け加える必要があります。そのため、これらの方法のいくつかを使用すると、特徴抽出を行うことができ、K-Nearest Neighborを使用できますが、それは単なる考えです。

とにかく、これは私が今立っている場所です、どんな助けも感謝しています。

ありがとう!

コメントに基づく編集:

  • はい、、、、はすべて事前に知られています。(いくつかの差異が、は非常に少ない。例えば、私たちがいることを知っていると言うことができます = 400kHzには、それは401.32 kHzででてくるかもしれません。しかしまでの距離ので、高いです比較して500 kHzであるかもしれない。)信号-1常にこれらの4つの既知の周波数を踏むことになります。Signal-2には常に1つの周波数があります。f 2 f 3 f 4 f 1 f 2 f 2f1f2f3f4f1f2f2

  • 信号の3つのクラスすべてのパルス繰り返し率とパルス長もすべて事前にわかっています。(ある程度の分散がありますが、非常にわずかです)。ただし、信号1と2のパルス繰り返し率とパルス長は常にわかっていますが、それらは範囲です。幸いなことに、これらの範囲はまったく重複していません。

  • 入力はリアルタイムで入力される連続時系列ですが、信号1、2、および3は相互に排他的であると仮定できます。つまり、信号の1つだけが任意の時点で存在するということです。また、任意の時点で処理するためにどれだけの時間チャンクを使用するかについて、多くの柔軟性があります。

  • データはノイズを含む可能性があり、既知の、、、ない帯域に偽のトーンなどがある可能性があります。これはかなり可能です。ただし、問題を「始める」ために、中程度のSNRを想定できます。f 2 f 3 f 4f1f2f3f4


あなたの入力は何ですか?1 /信号1/2/3(セグメンテーション+分類問題)の発生を分離したい連続ストリーム、または2 /カテゴリ1/2/3に分類する必要がある1種類の信号のみの個別サンプル?信号のいくつかの特性を記述します。信号1のPRT。信号2の繰り返し周波数。信号3の周波数。f1 / f2 / f3 / f4の値。これらのパラメーターは事前に知られていますか、それとも可変ですか?最後に、入力にセグメント化する信号が複数ある場合、セグメントの典型的な持続時間はどのくらいですか?
pichenettes

別の質問:図面からは、純粋なトーン(高調波、ノイズなし)を扱っているように見えます。その場合ですか、それともデータは図面よりも汚れていますか?
-pichenettes

@pichenettesありがとう、編集に必要な情報を追加しました。
スペイシー

この質問の進捗状況と解決策をフォローアップしていただければ幸いです。分析は、主に研究対象の音の時間変動に依存します。それらがfftウィンドウよりも高速である場合、たとえば256サンプル未満では高解像度のスペクトログラムが必要になります。スペクトログラムが正確であるほど、サウンドの詳細情報をより多く見ることができます。FFTはおそらく大丈夫です。その後の質問は、単純なパターン分析ルーチンを使用してサウンドを分類するための論理演算子を追加する場合です。パルスの持続時間、パルス間の距離、全体の弦の性質などを分析します。
com.prehensible

すべてのx線のピーク値をチェックするだけでメインハーモニックスを見つけるのは簡単です。その後、パターンシグニチャ分析プログラミングを使用して分析するグラフが作成されます。数列を比較および分類する際に意識的に使用する最も優れた差別化要因のルールを作成します。
com.prehensible

回答:


7

ステップ1

パルス幅よりも小さいフレームサイズを使用して、信号のSTFTを計算します。このフレームサイズでも、f1、f2、f3、f4の間で十分な周波数識別ができると思います。はフレームインデックス、はFFTビンインデックスです。m kSmkmk

ステップ2

各STFTフレームについて、YINのようなものを使用して、YINによって計算されたDMFの「ディップ」の深さなどの「ピッチ信頼性」インジケータとともに、主要な基本周波数を計算します。

をフレーム推定された支配的なf0と呼び、をフレーム検出されたピッチ信頼度と呼びます。m v m mfmmvmm

データのノイズがそれほど大きくない場合は、自己相関をピッチ推定器として使用し、自己相関の大きい二次ピークとの比をピッチ信頼性指標として使用することでできます。ただし、YINの実装は安価です。r0

emm

ステップ3

MMM=50

次の機能を抽出します。

  • σfkfmm[kMk+M]vm>τ
  • V M M [ K - M K + M ]σvkは、シーケンスの標準偏差vmm[kMk+M]
  • E M M [ K - M K + M ]σekは、シーケンスの標準偏差emm[kMk+M]

直観的に、は信号の主要なピッチ成分の周波数安定性を測定し、は信号の「ピッチ」の変動性を測定し、は信号の振幅の変動性をします。σ V σ Eσfσvσe

σ V σ E σ F σ V σ E σ F σ Vσfσvσeσfσvσeσfσvσe

トレーニングデータでこれらの3つの特徴を計算し、単純なベイズ分類器(ガウス分布の束)をトレーニングします。データの質に応じて、分類器を使用せずに、機能で手動で定義したしきい値を使用することもできますが、これはお勧めしません。

ステップ4

M

データと分類子が適切であれば、次のようなものが表示されます。

1、1、1、1、1、1、1、1、1、1、2、2、2、2、2、1、1、1、1、1、1、1、1、3、3、3、3、 3、3、3

これにより、開始時間と終了時間、および各信号のタイプが非常に明確に区切られます。

データにノイズが多い場合は、誤って誤分類されたフレームが存在する必要があります。

1、1、1、1、1、1、2、1、1、1、2、2、3、2、2、1、1、1、3、1、1、1、1、3、3、3、2、 3、3、3

2番目のケースのように多くのがらくたが表示される場合は、3または5検出の近傍のデータに対してモードフィルターを使用します。またはHMMを使用します。

持ち帰りメッセージ

検出の基礎となるのはスペクトルの特徴ではなく、信号の持続時間と同じスケールのウィンドウ上のスペクトルの特徴の集約された時間統計です。この問題は、2つのタイムスケールでの処理を実際に必要とします:非常にローカルな信号プロパティ(振幅、ドミナントピッチ、ピッチ強度)を計算するSTFTフレーム、およびこれらの信号プロパティの時間変動を覗く大きなウィンドウ。


HTKなどを活用する場合は、音声認識スタイルも使用できます。音響モデル:4台の電話機P1、P2、P3、P4(f1のトーン、f2のトーン、f3のトーン、f4のトーン)+無音の場合は1つの記号S。電話機ごとに1つまたは2つのガウス分布。信号1のワードモデルW1:(P1 S P2 S P3 S P4 S)+。信号2のワードモデルW2:(P1 S)+。信号3のワードモデルW3:(P1)+。文モデル:(W1 | W2 | W3)*。唯一の注意点は、音声認識ツールボックスを使用する場合、MFCCはf1 / f2 / f3 / f4を区別するには低解像度でピッチに依存しないため、特徴抽出フロントエンドを微調整する必要があることです。
-pichenettes

@pichenettesありがとうpichenettes、それは非常に良い答えです-私はいくつかのフォローアップがあります:1)あなたが言及する「YIN」とは何ですか?「DMF」とは何ですか?私はグーグルを通してそれらについて何も見つけることができませんでした。2)尺度としての「ピッチ自信」とは正確には何ですか?3)自己相関を使用してピッチの信頼性を見つけることができると言います-時間領域フレームまたはフレームのSTFTの自己相関?(おそらくあなたがピッチ自信を意味するのか分からないので、私はこれを理解していない)。(続き...)
スペイシー

@pichenettes(続き)4)機能については、ウィンドウごとに存在しますか?したがって、ウィンドウごとに3つの標準(この場合)101フレームを計算していますか?この場合、トレーニングの時間になると、3次元の「ポイント」は101フレームを超える3つの標準から作成されました。5)ステップ4で、1,1,1,2,2などの番号がある場合、各番号は、そのウィンドウを正しく分類した方法に対応していますか?最初の「1」はフレーム-50から50で構成されるウィンドウの分類であり、2番目の「1」はフレーム-49から51で構成されるウィンドウの分類でしたか?(ウィンドウは毎回1フレーム
スペイシー

@pichenettes 6)最後に、これが「アラーム」として使用されることを述べたはずです。そのため、signal-1またはsignal-2のいずれかが存在する場合、アラームが鳴りますが、何もありません-何も誤検出しないように、分類しようとする前に一致するしきい値があるべきではありませんか?(たとえば、バックグラウンドノイズのみ)。(私は今、単純ベイズ分類器について学んでいるので、そのマルチクラスかどうかはわかりません)。7)早速、ありがとうございました!あなたのための千と一つの支持!:
スペイシー

1
1 / YINは、音声および音楽信号用の古典的なピッチ検出アルゴリズムです。recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf。DMFは、ピッチ推定のためにYINのようなアルゴリズムによって計算される量である「差分振幅関数」です。2 / YINのようなピッチ検出アルゴリズムは、基本周波数の推定値と、返されたピッチが正しい答えである可能性を示す「信頼スコア」を生成します。ノイズの多い信号またはいくつかのピッチを示す信号では、これは低くなり、純粋な正弦波では非常に高くなります。
-pichenettes

3

別のアプローチとしては、4つのヘテロダイン検出器があります。入力信号に4つの周波数のローカル発振器を乗算し、結果の出力をローパスフィルターします。各出力は、画像の垂直線を表します。時間の関数として4つの周波数のそれぞれで出力を取得します。ローパスフィルターを使用すると、許容する周波数偏差の量と、出力の変化の速さ、つまりエッジの鋭さを調整できます。

これは、信号がかなりノイズの多い場合でもうまく機能します。


私はこの方法を考えていました-スペクトログラムなどを使用してパスパンドで直接作業するよりも、この方法の利点(ミックスダウンとLPF処理)をお考えですか?
スペイシー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.