すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:ボイスプリント検索

最終更新日:Apr 02, 2026

このドキュメントでは、AnalyticDB for MySQL に基づくボイスプリント認識ソリューションを紹介し、ライドヘイリングドライバーの録音における機密性の高いコンテンツを検出するユースケースについて詳しく説明します。このソリューションは、ライドヘイリングサービス、複数人会議、オフラインセールス、AIボイスレコーダー、音声アシスタントなどのシナリオに適用できます。話者を特定し、発話内容を検査することで、企業がインテリジェントなボイスプリント検索システムを効率的に構築するのに役立ちます。

背景情報

デジタル時代において、音声は身分認証、セキュリティ制御、インテリジェントなインタラクションのための主要な生体認証識別子です。ボイスプリント認識技術は、音声特徴を抽出し、それらを構造化されたベクターに変換することで、話者を効率的に検証および取得します。

AnalyticDB for MySQL は、ネイティブなベクター保存および検索機能に基づいて、エンドツーエンドのボイスプリント認識ソリューションを提供します。ボイスプリント比較、検索、クラスタリングの3つのコア機能をサポートしています。このソリューションは、話者ダイアリゼーション、音声テキスト変換、コンテンツ品質検査などの機能で拡張でき、高精度なボイスプリント検索システムを迅速に構築するのに役立ちます。

制限事項

ボイスプリント検索機能は現在、招待プレビュー中です。この機能を使用するには、テクニカルサポートにチケットを送信して有効化してください。

機能

ボイスプリント比較

この機能は、組み込みのボイスプリントモデルを使用して、生オーディオからボイスプリント特徴を抽出し、それらを構造化されたベクターに変換します。2つの音声ベクター間の類似度を計算することで、それらが同じ話者に属するかどうかを判断し、1:1のボイスプリント本人確認を可能にします。

ボイスプリント検索

この機能は、ボイスプリント特徴ベクターと効率的なインデックスを使用して、確立されたボイスプリントライブラリからターゲット話者を迅速に検索します。1:Nのボイスプリント認識シナリオをサポートし、大規模なボイスプリントライブラリでの効率的なID照合に最適です。

ボイスプリントクラスタリング

この機能は、教師なし学習技術を使用して、ラベル付けされていないオーディオデータを分析し、話者IDごとに自動的にグループ化します。複数話者オーディオシナリオを効果的に処理し、オーディオデータのインテリジェントなグループ化と管理を可能にします。

使用方法

API

オーディオ埋め込みの生成 - /audio/embedding

  • メソッド: POST

  • 機能: オーディオファイルの埋め込みベクターを生成します。

パラメーター:

パラメーター

タイプ

必須

説明

input_audio

string

はい

入力オーディオのURL。

oss_ak

string

いいえ

OSS AccessKey ID。

oss_sk

string

いいえ

OSS AccessKey Secret。

oss_token

string

いいえ

OSS STSトークン。

start_time

float

いいえ

開始タイムスタンプ。

end_time

float

いいえ

終了タイムスタンプ。

リクエスト例:

curl -X POST "http://addr:8100/audio/embedding" \
  -H "Authorization: Bearer {api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "input_audio": "https://dashscope.oss-cn-beijing-internal.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "start_time": 1220,
    "end_time": 3200
  }'

レスポンス例:

{
  "code": 200,
  "message": "success",
  "result": [1.861976, 0.151182, -0.888397, ...]
}

ボイスプリントの登録 - /voice/enroll

  • メソッド: POST

  • 機能: 新しいボイスプリントサンプルを登録します。

パラメーター:

パラメーター

タイプ

必須

説明

audio_url

string

はい

入力オーディオのURL。

name

string

はい

ボイスプリントの名前。

リクエスト例:

curl -X POST "http://addr:8100/voice/enroll" \
  -H "Authorization: Bearer {api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "audio_url": "https://dashscope.oss-cn-beijing-internal.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "name": "test1"
  }'

レスポンス例:

{"code": 200, "message": "Voiceprint enrollment successful", "result": true}

ボイスプリントのクエリ - /voice/query

  • メソッド: GET または POST

  • 機能: 登録されたボイスプリントレコードをクエリします。

パラメーター:

パラメーター

タイプ

必須

説明

name

string

いいえ

ボイスプリントの名前。

id

integer

いいえ

ボイスプリントのID。

リクエスト例:

curl "http://addr:8100/voice/query" \
  -H "Authorization: Bearer {api-key}"

レスポンス例:

{
  "code": 200,
  "message": "Found 1 voiceprint records",
  "result": [{"id": 1968033551534260224, "name": "test1", "location": null}]
}

ボイスプリントの削除 - /voice/delete

  • メソッド: DELETE または POST

  • 機能: 指定されたボイスプリントレコードを削除します。

パラメーター:

パラメーター

タイプ

必須

説明

name

string

条件付き

ボイスプリントの名前。このパラメーターまたは id のいずれかを指定する必要があります。

id

integer

条件付き

ボイスプリントのID。このパラメーターまたは name のいずれかを指定する必要があります。

リクエスト例:

curl -X POST "http://addr:8100/voice/delete" \
  -H "Authorization: Bearer {api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "test1"
  }'

レスポンス例:

{"code": 200, "message": "Voiceprint deletion successful", "result": true}

ボイスプリント検索 - /voice/search

  • メソッド: POST

  • 機能: 指定されたオーディオファイルに最適な一致のボイスプリントを検索します。

パラメーター:

パラメーター

タイプ

必須

説明

audio_url

string

はい

検索するオーディオファイルのURL。

names

array

いいえ

検索に含めるボイスプリント名のリスト。

top_k

integer

いいえ

返される上位結果の数。デフォルト値: 1。

リクエスト例:

curl -X POST "http://addr:8100/voice/search" \
  -H "Authorization: Bearer {api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "audio_url": "https://dashscope.oss-cn-beijing-internal.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "top_k": 1
  }'

レスポンス例:

{
  "code": 200,
  "message": "Found 1 matching voiceprints",
  "result": [{"name": "test1", "similarity": 0.99999994}]
}

ASR (音声テキスト変換) - /bailian/funasr/asr

  • メソッド: POST

  • 機能: Alibaba Cloud Model Studio FunASR を使用してオーディオをテキストに変換します。

パラメーター:

パラメーター

タイプ

必須

説明

source_url

string

はい

OSS内のオーディオファイルのパス。

model_name

string

いいえ

モデル名。デフォルト値は fun-asr です。利用可能なモデルのリストについては、Alibaba Cloud Model Studio FunASR の「モデルリスト」をご参照ください。

diarization

bool

いいえ

話者ダイアリゼーションを有効にするかどうかを指定します。デフォルト値は true です。

speaker_count

int

いいえ

話者の数。このパラメーターが指定されていない場合、システムが自動的に話者の数を検出します。

output_type

string

いいえ

出力フォーマット。url は結果ファイルの一時的なURLを返し、json は構造化データが返されます。デフォルト値は url です。

lang

string

いいえ

言語設定。サポートされている言語については、Alibaba Cloud Model Studio FunASR の「リクエストパラメーター」ドキュメントをご参照ください。

diarization_mode

string

いいえ

話者ダイアリゼーションの結果でサポートされている集約ディメンションは wordsentence、および speaker です。

リクエスト例:

curl -X POST "http://addr:8100/bailian/funasr/asr" \
  -H "Authorization: Bearer {api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "source_url": "https://dashscope.oss-cn-beijing-internal.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "output_type": "json",
    "diarization_mode": "sentence",
    "model_name": "fun-asr-mtl",
    "lang": "zh"
  }'

レスポンス例:

{
  "code": 200,
  "message": "success",
  "result": {
    "file_url": "https://dashscope.oss-cn-beijing-internal.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav",
    "properties": {
      "audio_format": "pcm_s16le",
      "channels": [0],
      "original_sampling_rate": 16000,
      "original_duration_in_milliseconds": 3834
    },
    "transcripts": [
      {
        "channel_id": 0,
        "speakers": [
          {
            "speaker_id": 0,
            "sentences": [
              {
                "sentence_id": 1,
                "start_time": 100,
                "end_time": 3300,
                "text": "Hello world, this is the Alibaba Speech Lab."
              }
            ]
          }
        ]
      }
    ]
  }
}

SQL

AnalyticDB for MySQL には、SQL で直接ボイスプリント検索を実行できる AI機能が含まれています。

ai_audio_embed

オーディオファイルのボイスプリント埋め込みベクターを生成します。詳細については、「ai_audio_embed」をご参照ください。

ai_audio_embed(text)
ai_audio_embed(model_name, text)
ai_audio_embed(model_name, text, options)

ai_audio_transcribe

オーディオファイルをテキストに変換します。詳細については、「ai_audio_transcribe」をご参照ください。

ai_audio_transcribe(url)
ai_audio_transcribe(model_name, url)
ai_audio_transcribe(model_name, url, options)

ボイスプリントライブラリテーブルの作成

CREATE DATABASE ai;

CREATE TABLE IF NOT EXISTS
  ai.voiceTest (
    id bigint NOT NULL AUTO_INCREMENT,
    name varchar NOT NULL,
    voiceprint_feature ARRAY<float>(512) ENCODE = 'no' COMPRESSION = 'no',
    ANN INDEX idx_voiceprint_feature (voiceprint_feature),
    PRIMARY KEY (id)
  ) INDEX_ALL = 'Y' STORAGE_POLICY = 'HOT' ENGINE = 'XUANWU'
    TABLE_PROPERTIES = '{"format":"columnstore"}'
    DISTRIBUTE BY HASH (id);

ボイスプリントの登録

INSERT INTO ai.voiceTest (name, voiceprint_feature)
SELECT '{name}', ai_audio_embed('{audio_file}');

ボイスプリントのクエリ

SELECT id, name FROM ai.voiceTest WHERE name = '{name}';

ボイスプリントの削除

DELETE FROM ai.voiceTest WHERE name = '{name}';

ボイスプリント検索の実行

SELECT name, similarity
FROM (
    SELECT
        name,
        cosine_similarity(
            voiceprint_feature,
            ai_audio_embed('audio_embedding', '{audio_file}',
              '{''start_time'':1000, ''end_time'':3000}')
        ) AS similarity
    FROM ai.voiceTest
) t
ORDER BY similarity DESC
LIMIT 3;

ユースケース:ドライバーモニタリングとコンテンツ検出

背景情報

ある配車サービス会社は、音声認識技術を利用して車内の音声録音を分析したいと考えていました。その目的は、複数人での会話からドライバーの音声を正確に抽出し、ドライバーの発言にポリシー違反がないかを特定することでした。

この会社は、AnalyticDB for MySQL のボイスプリント認識ソリューションを利用して、エンドツーエンドのシステムを構築しました。このシステムは、話者ダイアライゼーション、ノイズリダクション、自動音声認識 (ASR)、自動ボイスプリントライブラリ構築、ボイスプリント検索、テキストコンテンツの品質検査といった主要なステップをカバーしています。

ソリューションのワークフロー

  1. 音声強調:生の音声を前処理して、バックグラウンドノイズを低減し、人の声を強調します。

  2. 話者ダイアライゼーション:話者認識技術を使用して音声を分離し、各セグメントをその話者に割り当てます。

  3. 音声セグメンテーション:話者ダイアライゼーションの結果に基づいて、元の音声を各話者ごとに独立したクリップに分割し、個別の処理と分析を容易にします。

  4. ボイスプリント認識と音声テキスト変換:ボイスプリント認識と自動音声認識 (ASR) を使用して、各音声セグメントから発話内容を抽出します。

  5. ボイスプリント検索:ボイスプリントライブラリを検索して、音声セグメントをドライバーの ID と照合します。

  6. コンテンツの品質検査:話者の ID を書き起こされたテキストと統合し、大規模言語モデル (LLM) を使用してコンテンツにポリシー違反がないか分析します。