3つのステップで声紋システムを構築する方法

3つのステップで声紋システムを構築する方法

背景

声紋検索は、その名前が示すように、話者認識であり、音を通じて話者の声を確認または識別します。声紋認識における重要なステップは、話者の音声を構造化されたベクトルに変換する音声ベクトル化です。 Alibaba Cloud AnalyticDB Vector Edition は、声紋検証および検索ソリューションのセットを提供します。ユーザーは、いくつかの簡単な SQL コマンドを使用するだけで、3 つのステップで高精度の音声プリント取得および検証サービスを構築できます。

声紋認識技術

1) 声紋検索のデモンストレーション

図 1 は、AnalyticDB ベクトル データベースの音声プリント検索システムのデモ インターフェイスを示しています。ユーザーエクスペリエンスを向上させるために、380人の音声情報をベクトルに変換し、システムに保存しました。現在のデモシステムは2つの部分に分かれています。最初の部分は検索部分です。ユーザーは録音した音声ファイルを入力するか、ユーザーがその場で音声ファイルを録音してアップロードし、音声マッチング検索のために声紋ライブラリに送信します。 2 番目の部分は登録部分です。ここでユーザーは自分の音声を現在の声紋ライブラリに登録してアップロードし、その後のクエリと検証を容易にすることができます。次の章では、それぞれの機能を個別に紹介していきます。

図1. 音声指紋デモンストレーションシステム

図2は、S0004のテスト音声「BAC009S0004W0486.wav」を音声プリントライブラリにアップロードして検索しています。TOP1の結果であるS0004が一番上に表示されることがわかります。

図2. クエリ音

図 3 は声紋登録システムを示しています。ユーザーは自分の声をバックグラウンド声紋データベースに登録して、簡単に検索することができます。たとえば、ユーザー Hanchao は自分の音声 (7 秒間のみ) を現在のシステムに登録します。現在のシステムはテキストなしの登録をサポートしており、ユーザーは何でも言って登録できます。

図3. 音の登録

図 4 は、ユーザーが現場で音声を録音し、それをシステムにアップロードして、検索を実行する様子を示しています。たとえば、「Hanchao」は 5 秒間の音声を録音し、それを音声プリント システムに送信して検索しました。 「Hanchao」の音は以前にも登録されており、現在のシステムでは、1位の音が「Hanchao」の音であることが分かります。

図4. 音声の録音と取得

現在、声紋デモンストレーションでは、会議室での認識に使用できる 1:N デモンストレーション結果を使用しています。音声を通じて、関連する会議のスピーカーを見つけることができます。現在、本人確認、このような 1 対 1 のデモンストレーションでは、本人確認を容易にするために距離を 550 未満に制限するだけで済みます。

2) アプリケーション構造の全体設計

Alibaba Cloud 声紋データベース検索のシステムフレームワークの全体的なアーキテクチャを図 5 に示します。AnalyticDB (声紋データベース) は、声紋検索アプリケーション全体のすべての構造化情報 (ユーザー登録 ID、ユーザー名、その他のユーザー情報) と非構造化情報 (音声ベクトル) の保存とクエリを担当します。クエリ プロセス中に、ユーザーは声紋抽出モデルを使用して音声をベクトルに変換し、AnalyticDB でクエリを実行します。システムは関連するユーザー情報とl2ベクトル距離[5]を返します。次の章では、音声抽出モデルのトレーニングとテストについて説明します。

図5. 声紋検索データベース

3) システムの精度

現在のデモ声紋システムでは、GMM-UMBモデルによって抽出されたiベクトルを検索ベクトルとして使用しています[3]。さらに、より高精度なディープラーニング声紋認識モデル(x-vector[4])のトレーニングも行いました。さらに、音声プリントモデルのトレーニングは、電話通話シナリオ、携帯電話のアプリシナリオ、ノイズの多いシナリオ、その他の関連シナリオなど、特定のシナリオに対して実行できます。詳細については、グループに参加してください。

学術界で一般的に使用されている(1:N)データセット(Aishall.v1 [1]データセットとTIMIT [2]データセット)における声紋認識の精度は99.5%以上です(表1を参照)。

表1. トップ1の精度テスト結果

声紋システムを構築するための3つのステップ

最初のステップは初期化です。

現在のシステムは音声変換機能を実装しており、ユーザーはフロントエンドで取得した音声をPOSTリクエストを通じてAlibaba Cloudサービスシステムに送信し、対応する声紋モデルを選択して、音声を対応するベクトルに変換することができます。

import requestimport jsonimport numpy as np# sound: サウンドバイナリファイル。 # model_id: モデルID。 def get_vector(sound, model_id='i-vector'): url = 'http://47.111.21.183:18089/demo/vdb/v1/retrieve' d = {'resource': sound, 'model_id': model_id} r = requests.post(url, data=d) js = json.loads(r.text) return np.array(js['emb'])# ユーザー ファイルを読み取ります。ファイル = 'xxx.wav'データ = f.read()print(get_vector(data))f.close()

初期化プロセス中に、ユーザーは関連するユーザー音声プリント テーブルを作成します。同時に、テーブルのベクトル列にベクトル インデックスを追加して、クエリ プロセスを高速化します。現在の声紋モデルは 400 次元のベクトルを出力するため、インデックス パラメータ dim は 400 に設定されています。

-- ユーザーの音声プリント テーブルを作成します。CREATE TABLE person_voiceprint_detection_table( id serial primary key, name varchar, voiceprint_feature float4[]); -- ベクトル インデックスを作成します。CREATE INDEX person_voiceprint_detection_table_idx ON person_voiceprint_detection_table USING ann(voiceprint_feature) WITH(distancemeasure=L2,dim=400,pq_segments=40);

2番目のステップは、ユーザーの声を登録することです。

登録プロセス中に、ユーザーが登録され、レコードが現在のシステムに挿入されます。

--ユーザー「Zhang San」を現在のシステムに登録します。 --HTTP サービスを通じて音声プリントを関連するベクトルに変換します。 person_voiceprint_detection_tableにINSERT INTO(name, voiceprint_feature)SELECT '张三', array[-0.017,-0.032,...]::float4[])

3 番目のステップは、ユーザーの音声を取得または検証することです。

音声指紋ドアロック検証(1:1 検証):検証システムでは、システムはユーザーの識別情報(user_id)を取得し、入力された音声ベクトルと音声指紋ライブラリ内のユーザーの音声ベクトル間の距離を計算します。通常、システムは距離のしきい値(しきい値 = 550)を設定します。ベクトル間の距離がこのしきい値より大きい場合、検証は失敗したことを意味します。閾値未満であれば、声紋認証が成功したことを意味します。

-- 音声プリントドアロック検出 (1:1) 検証 SELECT id, -- ユーザー ID 情報 name, -- ユーザー名 l2_distance(voiceprint_feature, ARRAY[-0.017,-0.032,...]::float4[]) AS distance -- ベクトル距離 FROM person_voiceprint_detection_table -- ユーザー音声テーブル WHERE distance < threshold -- 通常、しきい値は 550 です AND id = 'user_id' -- 検証するユーザー ID;

会議音声プリント取得 (1:N 検出): システムは、現在の話者の音声を識別して、最も関連性の高い登録ユーザー情報を返します。結果が返されない場合は、現在の会議のスピーカーが音声プリントデータベースに存在しないことを意味します。

-- 音声プリント会議担当者識別 (1:N) 検証 SELECT id, -- ユーザー ID 情報 name, -- ユーザー名 l2_distance(voiceprint_feature, ARRAY[-0.017,-0.032,...]::float4[]) AS distance -- ベクトル距離 FROM person_voiceprint_detection_table -- ユーザー音声テーブル WHERE distance < threshold -- 通常、しきい値は 550 です ORDER BY voiceprint_feature <-> ARRAY[-0.017,-0.032,...]::float4[] -- ベクトルで並べ替え LIMIT 1; -- 最も類似した結果を返します

[[397591]]

<<:  AI インテリジェント音声認識アルゴリズム パート 1

>>:  2020年、アルゴリズムの話題が主流になる年

ブログ    
ブログ    

推薦する

PyTorch と NumPy の徹底比較! ! !

こんにちは、Xiaozhuangです! pytorch のコンテンツを更新するように多くの人から促さ...

洪水期に緊急通信を確保するにはどうすればよいでしょうか?ドローンは誰もが好む新たな力となる

現在、わが国の南北は本格的な洪水期に入っており、水利部門が洪水・干ばつ災害対策の緊急対応をレベルIV...

ビデオ会議圧縮アルゴリズム

ビデオ会議 264 ビデオ圧縮 - SVC H.264 には、階層化されたエンコードを可能にする S...

AIと合成生物学の融合における5つの大きな課題:テクノロジー、データ、アルゴリズム、評価、社会学

過去 20 年間で生物学は大きな変化を遂げ、生物システムを設計することが可能になりました。私たちの細...

トラフィックエンジニアリングによりコード生成の精度が2倍に向上: 19%から44%

新しい論文の著者は、コード生成を「強化」する方法を提案しています。コード生成は人工知能においてますま...

ホワイトボードに描くだけでコードに変換されます。AI は UI デザイナーに取って代わるのでしょうか?

「新製品のホームページについてどう思いますか?」あなたは、UI、フロントエンド、マーケティング、運...

...

強化学習の博士号を取得して卒業することは人気がありますか? Redditユーザーがキャリアプランニングのアドバイスを求める

最近、修士号を取得して卒業しようとしているネットユーザーがネットユーザーに助けを求めました。「強化学...

[NCTSサミットレビュー] Rong360 Ai Hui: AIモデルテストの秘密を探る

2019年10月26日、Testinが主催する第2回NCTS中国クラウドテスト業界サミットが北京で開...

Alibaba iDSTのビジュアルコンピューティング責任者、Hua Xiansheng氏:アルゴリズムの利点は消えつつある

「テクノロジー研究と現実世界の問題を組み合わせ、現実の問題を解決して価値を生み出すことにますます興味...

人間は強力な人工知能の開発を心配する必要はない

[51CTO.com クイック翻訳] 現在、人工知能技術が「悪のロボット」に発展し、世界を支配するの...

ハン・ソン、チュー・ジュンヤンらがGAN圧縮方式を提案:計算電力消費は1/9以下、オープンソース化

GAN は大幅に圧縮することもできます。MIT ハン・ソン氏のチームによる最新の研究は、多くの研究者...

...

JVM チューニングの概要: 新世代のガベージ コレクション アルゴリズム

ガベージコレクションのボトルネック従来の世代別ガベージ コレクション方式では、ある程度、アプリケーシ...

情報理論に基づくキャリブレーション技術により、マルチモーダル機械学習の信頼性が向上

マルチモーダル機械学習は、さまざまなシナリオで目覚ましい進歩を遂げています。しかし、マルチモーダル学...