スキップしてコンテンツを表示

Lex V2 (ja-JP・電話8kHz音声) で発話終了からASR確定まで約2秒かかる — 短縮方法はあるか

0

Amazon Connect + Lex V2 で電話IVR(自由発話キャプチャ)を構築しています。 お客様の発話終了から Lex の認識確定(fulfillment code hook 起動)までに約1.5〜3.0秒かかり、 通話中の無音として体験を損ねています。これが想定内の動作か、短縮手段があるかを知りたいです。

【構成】

  • Amazon Connect の GetCustomerInput ブロック経由(ストリーミング、8kHz電話音声)
  • ロケール: ja_JP、音声モデル: Neural(会話ログの speechRecognitionSettings で確認)
  • キャプチャ用インテント1つ + カスタムスロット(スロット値約300件、resolutionStrategy=OriginalValue)
  • audioSpecification: endTimeoutMs=400, maxLengthMs=15000
  • カスタム語彙 約40語

【実測】

  1. 実通話ログの突合(録音波形・Connectフローログ・Lex会話ログ・Lambdaログ)で、 発話終了 → fulfillment 起動が約1.9〜3.4秒(endTimeoutMs 400ms を含む)。 発話が長いほど確定も遅い(発話1.4秒→約1.6秒、発話2.2秒→約2.4〜3.0秒)。
  2. RecognizeUtterance API 単体でも再現。実通話から切り出した2.2〜2.7秒の音声 (audio/lpcm 8kHz)で応答まで中央値1.3〜2.1秒、最大4.1秒。
  3. 切り分け済み:
    • fulfillment Lambda は平均125msで主要因ではない
    • スロット値の advancedRecognitionSetting (UseSlotValuesAsCustomVocabulary) を 外してビルドし同一音声でA/B比較 → 所要時間に有意差なし

【質問】

  1. ja-JP / 8kHz / Neural で、発話終了検知後にASR/NLU確定まで1〜2.5秒かかるのは仕様(想定内)でしょうか。 確定時に音声全体を再処理する2パス的な挙動に見えます。
  2. この確定時間を短縮できる設定はありますか(音声モデル、スロット構成、語彙、その他)。
  3. 発話長に比例して確定時間が伸びる挙動を、一定時間に抑える方法はありますか。

質問済み 1ヶ月前53ビュー

1回答
0

質問1: これは仕様(想定内)か

断定できる公式ドキュメントは見当たりませんでしたが、アーキテクチャ的にみて構造的な制約である可能性が高いです。

RecognizeUtteranceの内部処理は、音声(8kHz PCM)→Lex内蔵STT→テキスト→NLU→インテントマッチという直列パイプラインになっています。

つまりLexの音声認識エンジンは、発話終了を検知してから発話全体をバッファとして後処理するアーキテクチャであり、リアルタイムストリーミングでインクリメンタルに確定していく方式ではないと考えられます。これは、発話が長いほど確定が遅くなるという実測結果(1.4秒発話→1.6秒、2.2秒発話→2.4〜3.0秒)と整合的です。

ただし、AWS公式ドキュメントに「ja-JP/8kHz/Neuralでの想定レイテンシ範囲」を明記した記述は見つかりませんでした。この点は推測の域を出ないため、確実な仕様として断定はできません。

質問2: 確定時間を短縮できる設定はあるか

現在の設定調整だけでの大幅な短縮は期待しにくいです。 検証されたA/Bテスト(UseSlotValuesAsCustomVocabulary除去)で有意差が出なかった点からも、スロット構成・語彙側のチューニングでは限界がある可能性が高いです。

質問3: 発話長比例の遅延を一定に抑える方法

根本的な解決には、Lex内蔵STTをバイパスするアーキテクチャ変更が必要になる可能性が高いです。

Lexにvia RecognizeUtteranceで音声を送ると、内部でLex内蔵STT→テキスト→NLUという流れになりますが、この内蔵STTを使わず、音声を先にAmazon Transcribeでストリーミング処理し、テキスト化した結果をLexのRecognizeText(NLUのみ)に渡すという構成が提案されています。

【現状のパス】 Caller Audio → Lex RecognizeUtterance (内蔵STT + NLU、まとめて後処理)

【改善パス】 Caller Audio → Amazon Transcribe Streaming (逐次・インクリメンタルにテキスト化) → Lex RecognizeText(NLUのみ)

Transcribe Streamingは音声を受信しながら継続的に部分認識結果を返すため、発話終了時点で「ほぼ確定済みのテキスト」が既に用意されており、Lexに渡すのはNLU処理のみで済みます。これにより、発話長に比例して確定時間が伸びる問題を軽減できる可能性があります。

推奨する次のアクション: AWSサポートケースの起票(優先度高)

今回のような「内部処理の挙動そのもの」に関する質問は、公開ドキュメントでは確認できない領域のため、既に取得済みの実測データ(発話長と確定時間の相関、RecognizeUtterance単体再現データ)を添えてAWSサポートに問い合わせるのが最も確実です。

回答済み 1ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。