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