ブログ

AIテキストエンリッチメント:生の音声から完璧なテキストへ

生のトランスクリプションでは不十分な理由

思ったことを声に出して話したとき、「えー」「あの」「そのー」「つまり」というあらゆる言い淀みや途中で言い直した言葉がそのまま記録されると想像してください。それが生の音声トランスクリプションです。現在最も精度の高いモデルの一つであるWhisperは、余分な言葉も含めて、あなたが発した言葉を忠実に書き起こします。

同じ内容をメールやドキュメントで書いたとしたら、見た目はまったく異なるはずです。適切な句読点があり、言い淀みが除かれ、構造があり、プロフェッショナルな文体になっています。

その二つのバージョンの差を埋めるのが、AIテキストエンリッチメントです。

音声とテキストの間で何が起きているか

AIエンリッチメントを備えた音声認識パイプラインには、2つの明確なステージがあります。

ステージ1:トランスクリプション。 音声データは音声認識モデルによって処理されます。Telvrの場合はWhisper large-v3です。これが音声波形を高精度でテキストに変換します。出力は生のトランスクリプト——話した言葉が、話し言葉に自然に含まれるすべての不完全さとともに記録されたものです。

ステージ2:エンリッチメント。 生のトランスクリプトが、処理内容を指示する専用のプロンプトとともに言語モデルに渡されます。言語モデルはトランスクリプトをフォーマット済みの出力に変換します。言い淀みを除去し、文を再構成し、フォーマットルールを適用し、対象コンテキストに合った文体に調整します。

エンリッチメントのステップは「えー」や「あの」を単純に検索・置換するものではありません。真の言語理解を適用することで、思慮深い人が書いたかのような文章を生成します。

6つのエンリッチメントモードを解説

生のトランスクリプション

最もシンプルなモードです。後処理を最小限に抑え、Whisperが生成した内容に近い出力を返します。誰かの発言をそのまま引用したい場合、正確な言葉を記録したい場合、特定の言い回しを保持したい場合に便利です。

入力:「えーっと、まあ、主な問題は、えー、昨日の午後2時頃から支払いエンドポイントで通常の3倍のエラーレートが出ているということで」

出力:「主な問題は、昨日の午後2時頃から支払いエンドポイントで通常の3倍のエラーレートが発生していることです。」

生のモードでも、基本的なクリーンアップ(大文字・小文字の修正、数字の統一フォーマット)は適用されます。

クリーン&コレクト

日常の万能モードです。言い淀み(えー、あの、みたいな、つまり)を除去し、文法を修正し、適切な句読点を追加して、丁寧に書かれたかのようなクリーンな文章を出力します。Slackメッセージ、カジュアルなメール、ノート、ドキュメントなど、汎用テキストのデフォルトとして最適です。

入力:「なんかその、言いたいのはそのー、認証のまあ現在のやり方って言うか、えー、スケールしたときに問題になるよねって話で、セッションテーブル使ってるじゃないですか、あれがまあ、えー、ボトルネックになるわけで」

出力:「認証の現在のアプローチは、スケールすると問題が生じます。認証状態にセッションテーブルを使用しており、これがボトルネックになります。」

エンリッチメントは言い淀みを除去するだけでなく、考えを2つの明確な文に再構成していることに注目してください。

プロフェッショナルメール

話した内容を、件名、挨拶、本文、締めの言葉を含む完全なメールに変換します。文体はプロフェッショナルながら自然なトーンになります。内容を口述してフォーマットはAIに任せたいビジネスコミュニケーションに最適です。

入力:「ジェイクに、サーバー移行計画を週末までに出してほしいって伝えて、あと15日に予定しているセキュリティ監査のことも確認して、チームの準備はできてるか聞いてほしい」

出力:

件名:サーバー移行計画とセキュリティ監査について

ジェイクさん、

今週末までにサーバー移行計画をお送りいただけますでしょうか。また、15日に予定しているセキュリティ監査についても確認させてください——チームの準備は整っていますか?

よろしくお願いいたします。

ミーティングノート

話した内容を標準的な議事録フォーマットに構造化します。決定事項、アクションアイテム、コンテキスト、次のステップが含まれます。会議直後、記憶が新鮮なうちに話すポストミーティングサマリーを作成するために設計されています。

入力:「今日の製品ミーティング、モバイルのリリースをQ3に延期することを決定、トムがロードマップを更新する、あとリリース前に新しい利用規約の法務レビューが必要で、サラが担当、来週確認する」

出力:

決定事項

  • モバイルリリースをQ3に延期

アクションアイテム

  • トム:製品ロードマップの更新——進行中
  • サラ:リリース前に新利用規約の法務レビューを開始

次回確認

  • 来週

2〜3文サマリー

長い話し言葉を2〜3文のコンパクトなサマリーに凝縮します。エグゼクティブサマリー、ステータスアップデート、大量の内容を簡潔な文章にまとめたい場面で便利です。

入力:[プロジェクトの状況、現在のブロッカー、計画中の解決策、想定スケジュールをカバーした3分間の口頭説明]

出力:「プロジェクトは現在、サードパーティプロバイダーからのAPIアクセスが取れずブロックされており、統合が約2週間遅延しています。その間、開発を継続するためにモックAPIレイヤーを実装中です。完全な統合は月末までに完了する見込みです。」

開発タスク

話した内容を、コンテキスト、要件、受け入れ条件を含む開発タスクとして構造化します。GitHubのIssue、Linearのタスク、Jiraのチケットなど、一般的なフォーマットに準拠した出力が得られます。

入力:「APIにレート制限を追加する必要があって、今は保護が何もないからエンドポイントが叩き放題なんですよね、ユーザーごとに1分100リクエストまでにして、超えたら429を返す、カウンターはRedisで実装する」

出力:

タスク:APIレート制限の追加

背景 現在APIにレート制限がなく、エンドポイントが悪用にさらされている状態です。

要件

  • 認証済みユーザーごとに1分100リクエストまでに制限する
  • 制限超過時にHTTP 429(Too Many Requests)を返す
  • レートカウンターの実装にRedisを使用する

受け入れ条件

  • [ ] ユーザーごとに1分100リクエストのレート制限が機能している
  • [ ] 適切なヘッダーとともに429レスポンスが返される
  • [ ] Redisカウンターが1分後に正しくリセットされる

エンリッチメントの実装

エンリッチメントのステップでは、各モードに対して慎重に設計されたシステムプロンプトを持つ大規模言語モデルを使用します。プロンプトはロール(「あなたはプロフェッショナルなテキストエディターです」)、タスク(「以下の生の音声トランスクリプションをプロフェッショナルなメールに変換してください」)、ルール(「言い淀みを除去し、文法を修正し、件名と挨拶を追加する」)、そして期待される出力フォーマットを定義します。

生のWhisperトランスクリプトはユーザーメッセージとして追加され、LLMが一度の推論パスでフォーマット済みの出力を生成します。

このアーキテクチャにより、エンリッチメントが全体のレイテンシにわずか約1秒しか追加しない理由が分かります——効率的なモデル上での適切にプロンプトされたLLM推論は高速です。

適切なモードの選び方

適切なモードは、テキストを書く対象のコンテキストによって異なります。

  • 汎用テキスト、Slack、ノートなど: クリーンモード
  • プロフェッショナルなコンテキストでのメール: メールモード
  • ミーティング後のドキュメント: ミーティングノートモード
  • ステータスアップデート、要約、アブストラクト: サマリーモード
  • GitHubのIssue、Linear、Jiraのタスク: 開発タスクモード
  • カスタムワークフロー: 独自のシステムプロンプトを使うカスタムモード

Telvrでのモード切り替えはモードセレクターを1クリックするだけです。特定の用途が主な使い方であるユーザーのために、最後に選択したモードはセッション間で保持されるため、毎回選び直す必要はありません。

エンリッチメントとシンプルなクリーンアップの違い

「エンリッチメント」と「クリーンアップ」の区別は重要です。シンプルなクリーンアップツールは言い淀みを除去し、大文字・小文字を修正します——これは任意のテキスト処理スクリプトでも近似できる、比較的機械的な処理です。

真のエンリッチメントは言語理解を適用します。単に正確さのためではなく、明確さのために文を再構成します。話の流れの中からアクションアイテムを識別し、担当者と期限とともにフォーマットします。「〜について聞きたかったのですが」を、メールモードでは「〜についてお伺いしたく存じます」に変換します。

その差は出力に明確に現れます。機械的にクリーンアップされたテキストは「えー」を除いた話し言葉のように読めます。エンリッチメントされたテキストは、人が書いたものとして読めます。