要約
- 文字起こしや要約のAIは、多くが「会議が終わってから」動きます。
- 一方、Zoom AI Services の Fast mode は同期型で数秒で結果が返り、Scribe は精度も高い。
- それなら事後ではなく会議中に使えるのではと考え、 準リアルタイムで会議をサポートしてくれる AIファシリテーター を作ってみました。
- 会議音声をブラウザでライブ文字起こしし、原文とその要約を1画面に併記します。LLMが推奨質問・未決事項・脱線警告を会議中に提示し、終了時には議事録を生成します。
はじめに
昨今のAIの進歩により、議事録の自動作成や録画の文字起こしはもはや標準機能になりました。ただ、その多くは会議が終わったあとに生成されます。そのため、会議中のこういう困りごとには役に立ちません。
- いま何が決まった?(決まってない?)
- この話、さっきのアジェンダから逸れてない?
- 英語話者のあの人、いまの日本語の議論についてこれてる?
このような困りごともAIがサポートしてくれたら助かりますよね。問題は、会議中に使えるだけの速さと正確さが出せるかどうかでした。
Zoom AI Servicesは事後専用ではない
最近発表された Zoom AI Services(Scribe / Translator / Summarizer)を見てみると、むしろ会議中に向いた性質が書かれていました。
- Fast mode は同期・即応。公式ブログは Fast mode を "request–response for quick workloads you want immediately" と説明しています(Zoom Developer Blog)。投げたら数秒で返る、リクエスト=レスポンス型です。
- Scribe は精度が高い。Open ASR Leaderboard で首位、最も正確な音声認識と位置づけられています(同ブログ)。ライブ字幕が実用になるかは精度次第なので、ここは重要です。
これらの性質を活かすことで、会議進行もAIにサポートさせられるのではないかと考えました。
作ったもの
会議の隣で立ち上げておくAI会議ファシリテーターです。ローカル完結のWebアプリにしました。
補足:ライブキャプチャにブラウザの「システム音声つき画面共有」を使うため、現状は Windows の Chrome / Edge が前提です(macOS の Chrome は画面全体のシステム音声共有に非対応)。
基本設計は、公式パイプラインの3つのAPIに、進行を考える頭として汎用LLMを1枚足しただけです。
参加者に画面共有しながら会議を進める、という運用を想定しています。
| API | やること |
|---|---|
| Zoom Scribe | 会議音声をライブで文字起こし |
| Zoom Translator | 日本語↔英語 の翻訳 |
| Zoom Summarizer | 会議中は要約を圧縮/終了時に recap・action items を言語別生成 |
| 汎用LLM | 推奨質問・未決事項・脱線警告を組み立てる |
会議を始めると、ライブ字幕や要約・進行アシストが準リアルタイムで更新されます。
下記ではデモとして、夏の懇親会の企画会議をしてみました。
取り入れた工夫
① 公式パイプラインをライブに転用する
公式の型は録画1本を処理するイメージですが、会議中は音声がまだ終わっていません。そこで音声を10秒ごとのチャンクに切り、チャンクごとに Scribe → Translator を回し続けます。Fast mode が同期で速いおかげで、これが準リアルタイムで成立します。
もうひとつ、会議が長引くほどLLMに渡す文脈が膨らむ問題があります。そこで Summarizer を会議中にも回して「直近までの要約」を圧縮更新し、LLMには〈要約+直近3分の発言+議題の状態〉だけを渡します。Summarizer は議事録専用ではなく、会議中の文脈圧縮にも使っています。
② AIはサポートに徹させる
AIには決定をしてもらうのではなく、あくまで会議が前に進む手伝いをさせたいです。そのために歯止めを二重にかけました。
- プロンプト側:決定を断定しない/confirmed・tentative・proposed を区別する/根拠となる発言のタイムスタンプを必ず添える/提案は最大3件・短く、といったルールを与える。
- 後処理側:出力をコードでも整える。強い言い回しを機械的にやわらげ(「〜してください」→「〜するとよさそうです」)、同じ指摘は5分間抑制し、根拠タイムスタンプの無い提案は優先度を下げ、表示は最大3件に絞る。
// プロンプトを信じきらず、出力をコード側でも最終調整する
const SOFTEN_RULES: [RegExp, string][] = [
[/してください/g, "するとよさそうです"],
[/すべきです/g, "するのがよさそうです"],
[/決定です/g, "有力です"],
];
// さらに:「根拠タイムスタンプが無い提案は優先度を1段階降格」
// 「low は非表示・表示は最大3件」「同じ指摘は5分間ミュート」
主導権を人に残すという方針を、プロンプトのお願いだけに頼らずに後処理でも担保しています。
③ プライバシー設計
会議の音声や発言はセンシティブであり、機密事項が含まれることもあるでしょう。そこで、会議データ(音声・字幕・提案・議事録)はサーバープロセスのメモリ上だけで扱い、ディスクにもDBにも書かないことにしました(筆者がセキュリティに明るくないといった面もあります)。会議を終えるかアプリを閉じた時点で全てのデータを削除します。
そのうえで「キャプチャ開始前に参加者へ録音とAI処理を伝えて同意を得る」という運用の前提もUIに明示しました。ここはできれば運用ではなく仕組みで守らせるようにしたいので改善ポイントですね。
まとめ
稚拙ではありますが、準リアルタイムで会議をAIにサポートしてもらうためのアプリケーションを作成してみました。
AIを組み込んだアプリケーションはあまり開発したことがありませんでしたが、Zoom AI Servicesの精度・応答性が想像していたよりもずっと高く、おかげでファシリテーターとしてある程度形になったのではないかと思います。
リポジトリは随時改修中なので、是非コメントやアドバイスをいただけると嬉しいです!
各種リンク
🔗 リポジトリ: https://github.com/antaku66/ai-facilitator
🔗 参考(Zoom公式):AI Services Docs / Introducing Zoom AI Services / Summarizer・Translator の追加

