デジタル形式で録音された 2 つの音声が与えられた場合、2 つを比較して類似度を返すアルゴリズムはありますか?
4 に答える
あなたの明確化を考えると、あなたが探しているものは音声認識アルゴリズムに該当すると思います。
類似性の尺度を探しているだけで、音声をテキストに変換しようとしていない場合でも、概念は同じであり、アルゴリズムの大部分が非常に役立つ場合でも驚かないでしょう.
ただし、どこにでも到達するには、この類似係数をより形式的かつ正確に定義する必要があります。
編集:音声認識アルゴリズムは、音の抽象化といくつかの既知の形式との比較を行うため、役立つと思います。概念的には、これは 2 つの録音を取り、それらを抽象化して比較することとさほど変わらないかもしれません。
HMMに関するウィキペディアの記事から
「音声認識では、隠れマルコフ モデルは一連の n 次元の実数値ベクトル (n は 10 などの小さい整数) を出力し、これらの 1 つを 10 ミリ秒ごとに出力します。ベクトルはケプストラム係数で構成されます。これは、音声の短い時間ウィンドウのフーリエ変換を行い、コサイン変換を使用してスペクトルを無相関化し、最初の (最も重要な) 係数を取得することによって得られます。」
したがって、このようなアルゴリズムを両方の録音で実行すると、録音を表す係数が得られ、2 つの間の類似性を測定して確立するのがはるかに簡単になる可能性があります。
しかし、再び「類似係数」を定義するという問題に直面し、犬や馬を導入しても実際には役に立ちませんでした。
(まあ、少しはできますが、アルゴリズムを評価し、別のものを選択するという点では、よりうまくやる必要があります).
音声認識用の HTK ツールキットhttp://htk.eng.cam.ac.uk/、特に特徴抽出に関する部分を調べることをお勧めします。
良い指標と思われる機能:
- メルケプストラム係数 (一般的な音色)
- LPC (ハーモニクス用)
多くの異なるアルゴリズムがあります - このタスクの一般的な名前はSpeaker Identification
- このウィキペディアのページから始めて、そこから作業してください: http://en.wikipedia.org/wiki/Speaker_recognition
これがサウンドファイルで機能するかどうかはわかりませんが、続行する方法についてのアイデアが得られることを願っています. これは、別の画像でパターン (画像) を見つける方法の基本的な方法です。
最初に両方のサウンドファイルの fft を計算してから相関を行う必要があります。Formular では (疑似コード) のようになります。
fftSoundFile1 = fft(soundFile1);
fftConjSoundFile2 = conj(fft(soundFile2));
result_corr = real(ifft(soundFile1.*soundFile2));
fft = 高速フーリエ変換、ifft = 逆、conj = 共役複素数。fft は、サウンドファイルのサンプル値に対して実行されます。result_corr ベクトルのピークは、相関の高い位置を示します。この場合、両方のサウンドファイルは同じサイズでなければならないことに注意してください。そうでない場合は、短い方を max(soundFileLength) ベクトルのファイルに配置する必要があります。
よろしく
編集: .* は (matlab スタイルで) コンポーネントごとの mult を意味します。ベクトル mult を実行してはなりません! 次の編集: 複素数を操作する必要があることに注意してください。ただし、複雑なクラスがいくつかあるため、これについて気にする必要はないと思います。