2

単純な音声パターンを認識するプロジェクトに取り組んでいます。2 つのデータ セットがあり、それぞれが 4 ~ 32 の音符/デュレーションのペアで構成されています。1 つのセットは事前定義されており、もう 1 つは着信データ ストリームからのものです。強く相関する 2 つのデータ セットの長さは異なることがよくありますが、ほぼ同じ "形状" です。私の目標は、2 つのデータセットがどの程度相関/一致しているかについて、何らかのランキングを作成することです。

入力周波数をピッチに変換し、入力データ ストリームのピッチをシフトして、平均ピッチが事前定義されたデータ セットのピッチと一致するようにしました。また、事前定義されたセットの全体的な持続時間と一致するように、着信データ セットの持続時間を伸縮します。強い相関があるとしてランク付けする必要があるデータの 2 つのグラフの例を次に示します。

http://s2.postimage.org/FVeG0-ee3c23ecc094a55b15e538c3a0d83dd5.gif

(申し訳ありませんが、新しいユーザーとして、画像を直接投稿できませんでした)

リソースが最小限になるように、8 ビットのマイクロコントローラーでこれを行っています。速度はさほど問題ではなく、1 秒か 2 秒の処理が問題になることはありません。

明らかな解決策があったとしても、私は驚かないでしょう。私は問題をあまりにも長く見つめていました。何か案は?

前もって感謝します...

4

2 に答える 2

0

1D信号のマッチングは、多くの場合、畳み込み関数を使用して行われます。ただし、これはプロセッサを集中的に使用する場合があります。

使用できるより簡単なアルゴリズムは、最初に各音符の持続時間が2つの信号がほぼ等しいかどうかを確認することです。次に、2つの信号の次の周波数パターンが同じであることを確認します。次の周波数パターンとは、周波数の順序付きリストを、次の周波数が高いか低いかという順序付きリストに分解することです。したがって、500Hzから1000Hz、700Hz、400Hzになるものは、単純にHigher-Lower-Lowerになります。目的によっては、これで十分な場合があります。

于 2010-06-19T05:04:36.727 に答える
0

グラフィックは表示されませんでしたが...スペクトルをビンに分割します。あなたはおそらくすでにこれをすでに行っていますが、それらはあまりにも細かいかもしれません。アプリケーションに応じて、スペクトルをたとえば16または32のビンに分割することを検討してください。これは、私たちが聞く方法だからです。次に、各ビンの電力の比率を比較します。たとえば、最初のサンプルの500Hzと1000Hzの比率を、2番目のサンプルの同じ比率と比較します。これにより、サンプルの振幅が等しくないという問題が解消されます。

于 2010-03-29T18:32:50.033 に答える