カスタム STT
本ガイドでは、独自の STT(音声認識)サービス(Azure Speech Services、AWS Transcribe、その他カスタム STT など)をデジタルヒューマンと統合する方法を説明します。
概要:STT のオプションを理解する
デジタルヒューマンで音声認識を扱う方法は 3 種類 あります。
1. ビルトイン STT
プラットフォーム設定でマイクを有効化
Hosted Experience SDK
プラットフォーム(Google/Deepgram)
2. ミニプレム(MiniPrem) Whisper
MiniPrem の Whisper サービスを利用
お客様のフロントエンド
MiniPrem Whisper コンテナ
3. カスタム STT(BYOSTT)
独自の STT プロバイダーを持ち込む
お客様のフロントエンド
お客様の STT サービス(Azure、AWS など)
本ガイドはオプション 3:カスタム STT(Bring Your Own STT)に焦点を当てます。
アーキテクチャ:カスタム STT の動作
カスタム STT を使用する場合、デジタルヒューマンプラットフォームにビルトインされた音声認識を完全にバイパスします。処理の流れは次のとおりです。
主要概念:chatPrompt() メソッド
chatPrompt() メソッドは、カスタム STT を使用する際に、ユーザーのテキストをデジタルヒューマンに送信するための手段です。
パラメータ:
transcribedText(文字列):STT サービスから受信したテキストaddClosedCaption(真偽値):テキストを字幕として表示する場合はtrueを指定
例:
ステップバイステップ実装ガイド
ステップ 1:ビルトインマイクなしで初期化する
デジタルヒューマンセッションを初期化する際は、ビルトインマイクを有効化しないでください。重要なオプションは次のとおりです。
カスタム STT 向けの主要設定オプション:
enableMicrophone
false
プラットフォームによる音声キャプチャを防止
enableVad
false
ビルトイン音声アクティビティ検出を無効化
showUserInputInterface
false
オプション:独自入力 UI がある場合は ビルトイン入力 UI を非表示
やってはいけないこと:
注記: speechRecognitionProvider オプション(google/deepgram)は、ビルトインマイクを使用する場合にのみ適用されます。カスタム STT では文字起こしをお客様側で処理するため、本オプションは無関係です。
ステップ 2:ユーザーのマイクから音声をキャプチャする
Web Audio API または MediaRecorder を使用して音声をキャプチャします。
ステップ 3:STT サービスへ音声を送信する(Azure の例)
オプション A:Azure Speech SDK(推奨)
オプション B:Azure REST API
音声処理を自前で行い、Azure の REST API を呼び出したい場合は次のように実装します。
ステップ 4:文字起こしテキストをデジタルヒューマンへ送信する
STT サービスから文字起こしテキストを受信したら、デジタルヒューマンへ送信します。
ステップ 5:デジタルヒューマンの発話状態を処理する
ハウリングを防ぐため、デジタルヒューマンが発話している間はマイクをミュート/ミュート解除します。
完全な動作サンプル
以下は Azure を用いてカスタム STT を実装する完全な React コンポーネント例です。
Azure Speech Services のセットアップ
前提条件
Speech Services リソースを利用できる Azure アカウント
Azure Portal から取得した サブスクリプションキー と リージョン
認証情報の取得
Azure Portal にアクセスします
新規に「Speech Services」リソースを作成します
作成後、「キーとエンドポイント」へ移動します
以下をコピーします:
KEY 1 または KEY 2(サブスクリプションキー)
場所/リージョン(例:
eastus、westus2)
サポートされる音声フォーマット
Azure Speech Services は以下を受け付けます。
PCM WAV:16 ビット、モノラル、16kHz(推奨)
Opus/WebM:ストリーミングに対応
MP3:対応するが効率は劣る
言語サポート
設定で使用言語を指定します。
サポート対象言語の一覧は Azure 言語サポート を参照してください。
トラブルシューティング
よくある問題
1. 「デジタルヒューマンへの接続に失敗しました」
chatPrompt()を呼び出す前にデジタルヒューマンセッションが初期化されているか確認してくださいWebSocket 接続が確立されているか確認してください
2. 「Azure STT が文字起こししない」
サブスクリプションキーとリージョンが正しいか確認してください
ブラウザのマイク権限を確認してください
音声フォーマットが Azure の要件に合致しているか確認してください(16kHz 推奨)
3. 「デジタルヒューマンが応答しない」
chatPrompt()が呼び出されているか確認してください(console.log を追加)テキストが空または空白のみでないか確認してください
会話/セッションがアクティブか確認してください
4. 「エコー/ハウリングが発生する」
デジタルヒューマンが発話中の自動ミュートを実装してください(ステップ 5 参照)
音声キャプチャ設定でエコーキャンセルを使用してください
スピーカーとマイクの物理的距離を確保してください
5. 「文字起こしが遅い」
バッチ処理ではなくストリーミング/連続認識を使用してください
ユーザーに最も近い Azure リージョンを選択してください
精度向上のため Azure のニューラルモデルの利用を検討してください
デバッグログ
処理の流れを追跡するためのログを追加します。
セキュリティ上の考慮事項
API キーをフロントエンドで露出させない
Azure 認証はバックエンドプロキシ経由で処理します。
バックエンドのトークンサービス例(Node.js)
その他の STT プロバイダー
AWS Transcribe
Google Cloud Speech-to-Text
まとめ
デジタルヒューマンでカスタム STT を利用する手順は次のとおりです。
ビルトインマイクを 有効化しない(
enableMicrophone: false)Web Audio API または MediaRecorder を使って 音声をキャプチャ する
キャプチャした音声を STT サービス(Azure、AWS、Google など)へ 送信 する
chatPrompt(text, true)を使って 文字起こしテキストをデジタルヒューマンへ送信 するデジタルヒューマンの発話状態を扱い、マイクのミュート/ミュート解除を行う
要となるメソッドは次のとおりです。
このメソッドにより、独自に文字起こししたテキストをデジタルヒューマンへ処理用に送信します。
最終更新
