2011-01-29 16 views
1

どのように私は話す2人を区別することができますか?誰かが "こんにちは"と言うように、別の人が "こんにちは"と言うと、私はどのような署名を音声データで探していますか?周期性?スピーカーの認識

これに答えることができる人には、ありがとう!

答えて

2

音声や信号処理の専門家であっても、これは非常に難しい問題です。 、 周波数推定、隠れマルコフ モデル、ガウス混合モデルを含め プロセスと店舗音声プリントに使用

様々な技術:http://en.wikipedia.org/wiki/Speaker_recognition

そして、いくつかの提案技術の出発点:このページには、より多くの情報を持っています パターンマッチングアルゴリズム、ニューラル ネットワーク、マトリックス表現、ベクトル 量子化および決定木。一部の システムでは、コーホートモデルなどの「反スピーカー」 技術と ワールドモデルも使用しています。

0

同じ単語またはフレーズを発声している場合は、区別するのが2人しかないため、これははるかに簡単です。私は単純なものから始め、必要に応じて複雑さを追加することをお勧めします。

まず、デジタル波形のサンプル数を時間と大きさに基づいて、または(ソフトウェア機能があれば)発声全体のFFTを試してみましょう。私は、線形判別式(またはあなたが既に入手可能なもの)のような、基本的なモデリングプロセスを最初に考えています。

0

もう1つの方法は、マイクロフォンの配列を使用して、ボーカルソースの位置と方向を区別することです。私はこれをより簡単な手法と考えています。なぜなら、位置計算は、モノまたはステレオソースから異なるスピーカーを分離するよりもはるかに複雑ではないからです。

10

この問題の解決方法は、デジタル信号処理(DSP)にあります。スピーカーの認識は複雑な問題であり、コンピュータと通信エンジニアリングを両立させます。話者識別の大部分の技術は、機械学習(話者データベースを介した訓練、次いで訓練データを用いた同定)による信号処理を必要とする。続いてもよいアルゴリズムの概要 -

  1. レコード生形式のオーディオ。これは、処理する必要があるデジタル信号として機能します。
  2. キャプチャされた信号に対しての前処理ルーチンを適用します。これらのルーチンは、単に信号の正規化またはのフィルタリングノイズを除去するための信号(人間の声の通常の周波数範囲のバンドパスフィルタを使用)バンドパスフィルタは、ローパスおよびハイパスフィルタを使用して作成することができます組み合わされて
  3. 捕捉されたシグナルがノイズからほとんど無くなったら、特徴抽出フェーズが始まります。音声特徴を抽出するために使用される既知の技術のいくつかは、メル周波数ケプストラム係数(MFCC)、線形予測符号化(LPC)または簡単なFFT 特徴である。
  4. 今、2つのフェーズがあります:トレーニングとテストです。
  5. 最初に、システムは、異なるスピーカーの音声機能を訓練して、それらを区別することができる前に、である必要があります。フィーチャが正確に計算されるようにするためには、訓練のためにスピーカーからの複数のサンプル(> 10)を収集する必要があります。
  6. ニューラルネットワークまたは距離ベースの分類などの異なるテクニックを使用してトレーニングを行い、異なるスピーカーからの声の特徴の違いを見つけることができます。
  7. テストフェーズでは、トレーニングデータを使用して、テスト対象の信号から最も近い距離にある音声機能セットを検出します。 ユークリッド距離またはチェビシェフ距離のような異なる距離を用いてこの近接度を計算することができる。 http://mistral.univ-avignon.fr/index_en.htmlMARFhttp://marf.sourceforge.net/ALIZEから

は、話者識別を可能にする2つのオープンソースの実装があります。

私はこの質問に少し遅れて答えましたが、誰かがそれが有用であることを願っています。

+2

3番目のオープンソースオプションが存在する:** Recognito ** https://github.com/amaurycrickx/recognito。主な利点は、短い学習曲線です。私は、Homayoon Beigiの "Speaker Recognitionの基礎"を読んで、そのテーマについて深く説明することをお勧めします – amaurycrickx