1

次のリンク、アドバイス、またはその他の形式のヘルプを提供できる人はいますか?

目的 - Python を使用して 10 秒のオーディオ サンプルを分類し、後でマイクに向かって話し、Python が db から最も近い一致のスニペット (一緒にフェード) を選択して再生できるようにします。

私の目的は、最も近い一致を得ることではなく、オーディオ サンプルのソースが何であるかは気にしません。したがって、結果はおそらく、ノイズの中で話す (楽しい) 以外には役に立たないでしょう。

Python アプリで、たとえば db の 10 秒のサンプル内で FFT の特定の一致を見つけられるようにしたいと考えています。マイクのリアルタイム サンプリングには 100 ミリ秒のバッファサンプルがあると思います。

何か案は?FFT? 何デシベル?他の?

4

3 に答える 3

3

これを行うには、次の 3 つのことが必要です。

  1. セグメンテーション(オーディオ サンプルの作成方法を決定する)
  2. 特徴抽出(関心のあるオーディオ機能 (FFT など) を決定します)
  3. 距離メトリック(「最も近い」サンプルを決定)

セグメンテーション: 現在、10 秒のサンプルを使用して説明しています。声の変化によりよく適合するものを得るために、短いセグメント (100 ~ 1000 ミリ秒に近い) でより良い結果が得られると思います。

特徴抽出:FFTの使用について言及しました。ゼロクロッシング率は、その単純さを考えると驚くほどOKです。もっと派手にしたい場合は、MFCCまたはスペクトルセントロイドを使用するのがおそらく最適な方法です。

距離メトリック: ほとんどの人はユークリッド距離を使用しますが、マンハッタン距離コサイン距離地球移動距離などのより凝った距離もあります。

データベースの場合、サンプルのセットが十分に小さい場合は、すべてをkdtreeにロードして、高速な距離計算を実行し、それをメモリに保持できるようにすることができます。

幸運を!楽しいプロジェクトのようですね。

于 2011-11-29T20:57:04.740 に答える
0

「音楽フィンガープリンティング」でアルゴリズムを検索してみてください。

于 2011-11-29T16:12:58.843 に答える