CCAI Transcription を使用すると、ストリーミング音声データをリアルタイムで文字起こしテキストに変換できます。エージェント アシストはテキストに基づいて候補を表示するため、音声データを使用する前に変換する必要があります。CCAI Insights で音声文字変換されたストリーミング音声を使用して、エージェントの会話に関するリアルタイム データを収集することもできます(トピック モデリングなど)。
CCAI で使用するストリーミング音声を文字起こしする方法は 2 つあります。SIPREC 機能を使用する方法と、音声データをペイロードとして gRPC 呼び出しを行う方法です。このページでは、gRPC 呼び出しを使用してストリーミング音声データを文字変換するプロセスについて説明します。
CCAI Transcription は、Speech-to-Text のストリーミング音声認識を使用して動作します。Speech-to-Text には、標準と拡張の複数の認識モデルがあります。CCAI Transcription は、拡張電話通話モデルで使用する場合にのみ、GA レベルでサポートされます。
前提条件
- Google Cloudでプロジェクトを作成します。
- Dialogflow API を有効にします。
- アカウントで Speech-to-Text の拡張モデルにアクセスできることを確認するには、Google の担当者にお問い合わせください。
会話プロファイルを作成する
会話プロファイルを作成するには、Agent Assist コンソールを使用するか、ConversationProfile
リソースの create
メソッドを直接呼び出します。
CCAI 文字起こしでは、会話で音声データを送信するときに、ConversationProfile.stt_config
をデフォルトの InputAudioConfig
として構成することをおすすめします。
会話の実行時に文字起こしを取得する
会話の実行時に文字起こしを取得するには、会話の参加者を作成し、各参加者の音声データを送信する必要があります。
参加者を作成する
参加者には次の 3 種類があります。ロールの詳細については、リファレンス ドキュメントをご覧ください。participant
で create
メソッドを呼び出し、role
を指定します。文字起こしを取得するには、END_USER
または HUMAN_AGENT
の参加者のみが StreamingAnalyzeContent
を呼び出すことができます。
音声データを送信して文字起こしを取得する
StreamingAnalyzeContent
を使用して、次のパラメータで参加者の音声を Google に送信し、文字起こしを取得できます。
ストリームの最初のリクエストは
InputAudioConfig
である必要があります。(ここで構成されたフィールドは、ConversationProfile.stt_config
の対応する設定をオーバーライドします)。2 回目のリクエストまで音声入力を送信しないでください。audioEncoding
はAUDIO_ENCODING_LINEAR_16
またはAUDIO_ENCODING_MULAW
に設定する必要があります。model
: 音声の文字変換に使用する Speech-to-Text モデルです。このフィールドは、telephony
に設定します。バリアントは文字起こし品質に影響しないため、[音声モデルのバリアント] を指定しないか、[利用可能な最良のモデルを使用する] を選択できます。- 最高の文字起こし品質を得るには、
singleUtterance
をfalse
に設定する必要があります。singleUtterance
がfalse
の場合、END_OF_SINGLE_UTTERANCE
は想定されませんが、StreamingAnalyzeContentResponse.recognition_result
内のisFinal==true
を使用してストリームをハーフクローズできます。 - オプションの追加パラメータ: 次のパラメータはオプションです。これらのパラメータにアクセスするには、Google の担当者にお問い合わせください。
languageCode
: 音声のlanguage_code
。デフォルト値はen-US
です。alternativeLanguageCodes
: 音声で検出される可能性のある追加の言語。Agent Assist はlanguage_code
フィールドを使用して、音声の開始時に言語を自動的に検出し、以降のすべての会話ターンでその言語を使用します。alternativeLanguageCodes
フィールドでは、Agent Assist が選択できるオプションをさらに指定できます。phraseSets
: Speech-to-Text モデル適応phraseSet
リソース名。CCAI Transcription でモデル適応を使用するには、まず Speech-to-Text API を使用してphraseSet
を作成し、ここでリソース名を指定する必要があります。
音声ペイロードを含む 2 回目のリクエストを送信すると、ストリームから
StreamingAnalyzeContentResponses
が返信されるようになります。StreamingAnalyzeContentResponse.recognition_result
でis_final
がtrue
に設定されている場合、ストリームを半分閉じることができます(または、Python などの一部の言語では送信を停止できます)。- ストリームをハーフクローズすると、サーバーは最終的な文字起こしを含むレスポンスと、Dialogflow の候補や Agent Assist の候補を返します。
最終的な文字起こしは次の場所にあります。
StreamingAnalyzeContentResponse.message.content
。- Pub/Sub 通知を有効にすると、Pub/Sub で文字起こしを確認することもできます。
前のストリームが閉じられたら、新しいストリームを開始します。
- 音声の再送信:
is_final=true
を含むレスポンスの最後のspeech_end_offset
以降に生成された音声データは、最適な文字起こし品質を得るために、新しいストリームの開始時刻までStreamingAnalyzeContent
に再送信する必要があります。
- 音声の再送信:
次の図は、ストリームの仕組みを示しています。
ストリーミング認識リクエストのコードサンプル
次のコードサンプルは、ストリーミング音声文字変換リクエストを送信する方法を示しています。
Python
Agent Assist に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。