議事録作成アプリケーションを作ってみた

, ,

会議が終わったあと、「議事録、誰が書きますか?」という空気になった経験はありませんか?

メモを見返し、記憶をたどり、誰が何を言ったかを思い出しながら文章にしていく。会議そのものより、そのあとの作業のほうが重く感じることもあります。

そこで、会議の録音から議事録の下書きまでを、パソコン1台の中で完結させるアプリを作ってみました。今回はその紹介です。

なぜ「このPCの中だけ」にこだわったのか

録音して文字にしてくれるクラウドのサービスは、すでにたくさんあります。とても便利です。ただ、見積の金額、取引先の名前、人事の話など、社外に出したくない会議もありますよね。

「音声を外部のサービスに送ってよいか」を社内で確認するだけで、話が止まってしまうこともあります。

そこで最初に決めたのが、音声も文章も、このPCの外へは一切送らないという条件です。通信が必要なのは、初めて使うときに文字起こし用のモデル(音声を文字にするためのデータ)をダウンロードするときだけです。

使ったのは、すべて無料の道具です

有料のサービスや、API(外部のサービスを呼び出す仕組み)の契約は使っていません。プログラムはPython 3.12で書き、次の部品を組み合わせています。

部品役目
ffmpeg音声の変換係。マイク録音と、いろいろな形式の音声ファイルを同じ形式に揃える
openai-whisper文字起こし。OpenAIが公開している、無料で使える音声認識
Flaskブラウザで操作する画面と、Pythonの処理をつなぐ
scikit-learn声の特徴が似た発言を同じ人にまとめる(話者分け)

使い方は4段階だけ

画面は1ページで、上から順に進めるだけです。難しそうに見えますよね。でも、操作はこれだけです。

  1. 会議の件名・日時・場所・出席者を入れる
  2. 録音するか、音声ファイルを選ぶ
  3. 文字起こしをして、話者と文章を直す
  4. 議事録の下書きを確認して、保存・書き出しする

録音の方法は3通りあります。ブラウザのマイクで録る方法、ffmpegでこのPCのマイクから録る方法、そして、スマホやICレコーダーで録った音声ファイル(mp3、m4aなど)を読み込む方法です。会議の最中にパソコンを開けないときも、あとからファイルで渡せます。

なお、このアプリは自分のPCの中でだけ開く作り(127.0.0.1 ローカルWEBブラウザを利用)にしています。同じ社内ネットワークの別のPCからは開けません。

作ってみて工夫したところ

1. 音声の形式を、最初に1つに揃える

会議の音声は、スマホの録音、Web会議の録画、ICレコーダーなど、形式がばらばらです。入口で全部同じ形式に揃えてしまえば、あとの処理は1種類だけ考えればよくなります。この変換を引き受けるのがffmpegです。

コマンドは1行です。次のコマンドは、どんな音声でも「16kHz・モノラル・16bit」のWAVファイルに変換します。文字起こしに向いた、軽い形式です。

ffmpeg -i 会議.m4a -ar 16000 -ac 1 -c:a pcm_s16le audio.wav

2. Whisperに「日本語の会議です」と教える

文字起こしの中心は、次の数行です。実際のアプリでは、ここにもう少し細かい設定を足していますが、考え方はこの形です。

import whisper

model = whisper.load_model("small")
result = model.transcribe(
    "audio.wav",
    language="ja",
    fp16=False,
    initial_prompt="日本語の社内会議です。",
    condition_on_previous_text=False,
)
for seg in result["segments"]:
    print(round(seg["start"]), seg["text"])

ポイントは3つです。言語を日本語に指定すること、グラフィックボードを使わないPCなのでfp16=Falseにすること、そして「直前の文に引きずられない」設定にすることです。最後の設定は、一度間違えた言葉に、次の文まで引っ張られるのを防ぐためのものです。

3. 話者は、声の特徴で分ける(あくまで目安)

議事録には「誰が言ったか」が欠かせません。このアプリでは、発言ごとに声の高さや音の特徴、音量を数値にして、似た声どうしを同じ人としてまとめています。事前に声を登録する必要はありません。

最初に話した人から「話者1」「話者2」と名前が付くので、画面で本当の名前に直せます。発言ごとに話者を選び直すこともできます。ただし、声が似ている人どうし、同時に話した場面、「はい」のような短い相槌は、外れやすいところです。結果は目安として、保存する前に確認してください。

4. 議事録の下書きは「言い回し」で拾う

ここは正直にお伝えします。外部の文章生成サービスは使っていません。発言の言い回しを見て、決められたルールで振り分けています。

欄拾う言い回しの例
決定事項決定、こととします、了承、見送り
宿題お願いします、対応します、までに、担当
次回次回、来週、来月、日程
共有・報告報告、共有、課題、リスク、遅れ

そのため、議論の意味を理解して要約してくれるわけではありません。該当する言い回しが無ければ、その欄には「該当する言い回しはありません」と表示されます。あくまで「決定・宿題・次回が拾える下書き」です。

下書きは画面で自由に直せます。直した内容を、テキスト、HTML、Word(.docx)のどれかで書き出せます。

モデルは3種類から選べます

Whisperには、大きさの違うモデルがあります。このアプリでは、base・small・mediumの3つから選べるようにしました。

モデル特徴
base速い。ただし固有の語を取り違えることもある
small画面の初期値。まずはこれで試す
medium精度が上がる。ただしCPUだけで処理すると、長い会議では音声の長さの何倍も時間がかかることがある

私のおすすめは、まずsmallで試して、言葉の取り違えが気になるときだけmediumに上げる使い方です。mediumは時間がかかるので、会議のあとに流しておいて、その間に別の仕事をする、くらいの付き合い方が合っています。

できないことも、先にお伝えします

  • 文字起こしの品質は、モデルとマイクの位置・音量に左右されます。話す人の近くにマイクを置くのが基本です
  • 話者分けは声の特徴による目安です。声の登録や、重なった声の分離はできません
  • 議事録は言い回しの一致で作る下書きです。議論の意味を要約するものではありません
  • 文字起こしは、このPCの中で同時に1件だけです

「全部おまかせ」ではなく、「下書きまでを機械が引き受けて、確認と仕上げは人がする」という役割分担です。

使うと、作業の中身が変わります

これまでは、メモと記憶を頼りに、白紙から議事録を書いていました。このアプリを使うと、できあがった下書きを見ながら、話者と言葉の間違いを直す作業に変わります。

どれくらい時間が減るかは、会議の長さ、選ぶモデル、PCの性能で大きく変わります。そのため、ここでは数字を出しません。

まとめ

ffmpegとopenai-whisperを組み合わせると、録音、文字起こし、話者分け、議事録の下書きまでを、パソコン1台の中で行えます。社外に出せない会議でも使えることが、いちばんの強みです。

Excelの入力作業だけでなく、会議のあとの文書づくりも、自動化の対象になります。ご興味あられたお方は、お気軽にご相談ください。業務効率化はCSコンサルティングへ。

ブログ文章作成はClaudeのヘルプを借りています。ご了承ください。


トップへ戻る