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年、アルゴリズムの話題が主流になる年

ブログ    
ブログ    
ブログ    

推薦する

GPT-4 パラメータは 10 兆に達します!この表は、新しい言語モデルのパラメータが GPT-3 の 57 倍になると予測しています。

機械学習の場合、パラメータはアルゴリズムの鍵となります。パラメータは、履歴入力データであり、モデルト...

AIのための大規模ストレージインフラストラクチャの要件

大規模な人工知能 (AI) により、容量とパフォーマンスの面でストレージ インフラストラクチャの水準...

...

ロボット工学と自動化は医療業界にどのような影響を与えるでしょうか?

ヘルスケアにおけるロボット工学と自動化は業界を変革し、精度、効率、患者ケアを向上させました。これらの...

...

AIがワールドカップの初代審判員になるチャンスはあるでしょうか?

著者 | ユン・チャオ最近、国際サッカー連盟(FIFA)は、2022年にカタールで開催されるワールド...

Baiduの新しい論文はGram-CTCを提案:単一システムの音声転写が最高レベルに到達

[[188128]]最近、百度シリコンバレーAI研究所の劉海栄氏、李翔剛氏らは、音声認識の速度と精度...

次世代のインターネット技術 - ディープラーニング

[[384617]]過去 20 年間がインターネットの急速な発展の 20 年間であったとすれば、次の...

AI モデルの「アウトソーシング」をやめましょう!新しい研究によると、機械学習モデルのセキュリティを弱める「バックドア」の一部は検出できないことが判明した。

悪意のある「バックドア」が埋め込まれたモデルが、何百万、何十億ものパラメータを持つモデルの中に、何者...

Linux の割り込み処理メカニズムを使用してシステムパフォーマンスを向上させる

Linux 割り込み処理メカニズムを使用すると、システム パフォーマンスが大幅に向上します。割り込み...

...

数時間のビデオを視聴するだけで人間のチャットを真似できますか? Facebookのロボットは表情が豊か

ヒューマノイドロボットの類似性は人間の好感度に比例するわけではありません。 1970年に日本のロボッ...

時間変換に基づく初のビデオ移行攻撃アルゴリズム、復旦大学の研究がAAAI 2022に選出

[[441526]]近年、ディープラーニングは一連のタスク(画像認識、物体認識、セマンティックセグメ...

大規模なモデルをグローバルに微調整できないわけではなく、LoRA の方がコスト効率が高いだけです。チュートリアルは準備完了です。

データ量とモデルパラメータの数を増やすことが、ニューラル ネットワークのパフォーマンスを向上させる最...