ストリーミング STT
本ガイドでは、ストリーミング音声認識の実装方法を説明します。1) gRPC と 2) WebSocket の 2 つのプロトコルに対応しています。連携方法の詳細は、ストリーミング STT - gRPCとストリーミング STT - WebSocketを参照してください。 音声ファイルの文字起こしには、バッチ STTを利用できます。
ストリーミング STT には同時チャネル数の制限があります。詳細はレート制限ポリシーを参照してください。
接続後 60 秒以内にオーディオチャンクが一度も送信されない場合、サーバーがストリーミング接続を終了することがあります。
オーディオエンコーディング(Audio Encoding)
ストリーミング STT は LINEAR16、FLAC、MULAW、ALAW、AMR、AMR_WB、OGG_OPUS、OPUS に対応しています。
- LINEAR16、MULAW、ALAW、AMR、AMR_WB は生の音声データとして送信してください。
- OGG_OPUS は OGG コンテナ内の OPUS エンコード済みオーディオフレームとして送信してください。
- OPUS は gRPC でのみサポートされます。利用を希望する場合はお問い合わせください。
共通 DecoderConfig/Parameter 情報
gRPC と WebSocket で共通して使用する DecoderConfig の詳細は、次の表を参照してください。
| 名前 | Type (gRPC / WebSocket) | 説明 | 必須 | 既定値 |
|---|---|---|---|---|
| sample_rate | int | 範囲: 8000~48000 Hz | 〇 | - |
| encoding | AudioEncoding / string | オーディオエンコーディングを参照 | 〇 | - |
| model_name | string | 使用する音声認識モデル: sommers_ko(韓国語)、sommers_ja(日本語)、whisper(韓国語向け Fine-tuned、多言語) | - | sommers_ko |
| domain | string | ドメインを参照 | - | CALL |
| use_itn | bool | 英字・数字・単位の正規化を参照 | - | true |
| use_disfluency_filter | bool | フィラーワード除去を参照 | - | false |
| use_profanity_filter | bool | 不適切語フィルタを参照 | - | false |
| use_punctuation | bool | 句読点を付与するか | - | false |
| keywords | string[] / string | キーワードブースティングを参照 | - | - |
| language | string | whisper モデルで使用。音声認識言語を参照 | - | ko |
キーワードブースティング(Keywords Boosting)
キーワードブースティングは、ストリーミング STT で特定の単語の認識率を上げたり下げたりする機能です。
現在は sommers_ko モデル、または language を ko に設定した whisper モデルでのみ利用できます。
形式と使い方
キーワードと、必要に応じてスコアを指定します。
- gRPC では
string[]形式で指定します。 - WebSocket ではカンマ区切りの 1 つの
stringとして指定します。
各キーワードは、次のいずれかの形式で指定してください。
"単語": スコアを省略した場合は既定値 2.0 を使用"単語:スコア": 単語とスコアをコロンで区切る
キーワードブースティングのルール
- 単語: ハングル音節と空白のみ使用できます。
- スコア:
- 範囲: -5.0~5.0
- 正の値は認識率を上げます。
- 負の値は認識率を下げます。
- 0 はスコアを適用しません。ただし、一覧に含めるだけでも他のキーワードに影響する場合があるため、ブーストが不要なキーワードは削除してください。
例
// gRPC
["부스팅", "리턴제로:3.5", "에스티티:-1"]
// WebSocket
"부스팅,리턴제로:3.5,에스티티:-1"
- スコアは -5.0~5.0 の範囲で指定してください。
- 単語は韓国語の発音どおりに記述してください。たとえば、STT ではなく 에스티티 を使用します。
- 単語にはハングル音節と空白のみ使用できます。
- 各単語は 20 文字以内、最大 100 語まで指定できます。
- 短いキーワードで始まる長い単語を同時に登録すると、短いキーワードのブースト効果が下がる場合があります。たとえば、커피 と 커피숍 を同時に登録した場合です。
音声エージェント(AI Voice Agent)
AI Voice Agent やコールボットが独自の VAD または turn detector でユーザーの発話終了を判断した場合、FINALIZE コマンドで現在の発話を確定できます。サーバー側の end-point detection を待たずに final transcript を受け取り、次の応答生成をより早く開始できます。
FINALIZE はストリーミング接続を終了しません。final transcript を受信した後も、同じ接続で次のユーザーターンのオーディオを送信できます。セッションを終了するには、gRPC のリクエストストリームを half-close するか、WebSocket でテキストメッセージ EOS を送信します。空の発話や連続した FINALIZE は結果を生成しません。プロトコル別のリクエスト例は、gRPCとWebSocketを参照してください。
OGG_OPUS のようなコンテナベースのエンコーディングでは、FINALIZE 後の次の発話を、新しいコンテナヘッダーを含む独立したストリームとして開始してください。
ドメイン(Domain)
ドメインは、ユーザーの音声入力環境に合わせて STT モデルを最適化するために使用します。
対応ドメイン
- CALL(既定値): 電話通話や、マイクが話者の口元に近い環境向けに最適化されています。
- 近くの話者の音声を明瞭に認識します。
- 周囲の雑音や他の話者の音声混入を抑えます。
- 電話通話、個人用ヘッドセット、近接マイクに適しています。
- MEETING: 会議室など、話者から離れたマイクで収音する環境向けに最適化されています。
- 複数話者の音声を処理します。
- 会議室や公共空間などの遠距離収音に適しています。
実際の音声入力環境に合わせてドメインを選択してください。