🤖

会議の文字起こしから議事録をまとめるLLMツールを作った

2024/10/09に公開

Leaner 開発チームの黒曜(@kokuyouwind)です。

Leaner では先月(2024 年 9 月)に葉山で開発合宿を行いました。合宿全体については既に開発者ブログの記事が上がっています。

https://developer.leaner.co.jp/entry/20240919_development_retreat_2024_in_hayama

今回、自分は議事録の自動まとめツールを作るチームでプロンプトを調整し、結構いい感じに動いたため記事を書くことにしました。

やりたかったこと

商談や社内のミーティングなどの実施後に議事録を作ることがあるのですが、結構時間がかかるため ChatGPT などの LLM を使って自動化できないか、というのを試しました。

やりたいこととしては LabBase さんの以下の記事が近いです。

https://zenn.dev/labbase/articles/4cf5fea056ae0e

ただし前提が異なる部分もあったため、諸々検証したうえで最終的には異なる構成になりました。

  • Amptalk を利用しており文字起こしが取得できているため、文字起こし部分はこれより精度が良いかが基準になる
  • tl;dvNotta などの文字起こし・議事録作成 SaaS が良さそうであれば乗り換えも検討できる
  • 自前で作り込みすぎると将来の保守が大変になるので、極力シンプルな構成にしたい

できあがったもの

過程はすっ飛ばして、できあがったのが「議事録つくる君 v2」です。[1]

これは Dify を使って作った LLM アプリで、 Amptalk の文字起こしを入力するといい感じの議事録を生成してくれます。

例として、以下のような会議の文字起こしがあったとしましょう。[2]

有限会社水瀬ジャム - 古河ベーカリー オンライン商談 文字起こし

00:02 相沢祐一
古河ベーカリーの皆様、聞こえておりますでしょうか?

00:16 古河早苗
はい、聞こえています。

00:28 岡崎朋也
岡崎です。こちらも問題ありません。

00:47 相沢祐一
ありがとうございます。有限会社水瀬ジャムの相沢と申します。本日はお忙しい中、このような機会を設けていただきまして誠にありがとうございます。

01:02 相沢祐一
古河ベーカリーの皆様本日はよろしくお願いいたします。えー、本日は弊社製造部長の水瀬とご一緒させていただいております。水瀬さん、お願いします。

01:17 水瀬秋子
水瀬ジャム製造部長の水瀬と申します。本日はどうぞよろしくお願いいたします。

01:32 相沢祐一 さて、古河ベーカリーの皆様、本日はですね、弊社が満を持して開発いたしました新商品「謎ジャム」、こちらをですね、ご紹介させていただきたく、ご連絡いたしました。

01:43 相沢祐一
この「謎ジャム」、従来のジャムの常識を覆す、まさに画期的な商品と言えるかと考えております。資料をご覧いただいたかと思いますが

01:58 相沢祐一
最大の特徴はですね、この鮮やかで美しい色合いです。そして、果実本来の風味を最大限に引き出した、奥深い味わいです,

02:13 相沢祐一
そしてですね、「謎ジャム」は、ただ美味しいだけじゃございません。弊社の長年の研究開発の末に生み出された、独自の製法によって、果実の栄養価を損なうことなく

02:28 相沢祐一
ぎゅっと凝縮することに成功いたしました。ビタミン、ミネラル、食物繊維…「謎ジャム」は、まさに「食べるサプリメント」とも言うべき

02:47 相沢祐一
ヘルシーで栄養満点なジャムに仕上がっております。さらに!保存料、着色料は一切使用しておりませんので、お子様にも安心してお召し上がりいただけます。安心安全な

03:13 相沢祐一
こだわりの国産果実のみを使用しております。パンのお供としてはもちろんのことヨーグルトやアイスクリームに添えても美味しく召し上がれますし

03:28 相沢祐一
お菓子作りにも最適です。えー 以上がですね、「謎ジャム」のご紹介になります。なにか、ご質問などございましたらお気軽にお申し付けください,

04:17 古河早苗
なるほど、とても魅力的な商品ですね。ええっと、あの 原料は何を使用されているのでしょうか?弊社の商品には、使用する原料の産地や栽培方法にこだわっているものも多いもので…

05:13 水瀬秋子
はい、国産の厳選した果実のみを使用しております。具体的な産地や品種は、季節や仕入れ状況によって異なりますが、その時期、最も美味しい旬の果実を、こだわりの方法で仕入れております。

05:28 水瀬秋子
ええと、産地や品種、栽培方法につきましては、大変申し訳ございません、企業秘密ということで、詳しくはお話しできないのですが… 安心安全な果実を、という点には

05:43 水瀬秋子
並々ならぬこだわりを持っておりまして、独自の基準をクリアした、信頼のおける契約農家さんから仕入れております。

06:47 岡崎朋也
なるほど…あのー ちなみにですが、お値段の方はどうなっているんでしょうか?弊社の商品開発部としても、非常に興味深い商品でして

07:02 岡崎朋也
ぜひとも前向きに検討したいと考えているのですが。

07:13 相沢祐一
ありがとうございます!もちろんでございます。えーっと、単価はですね、1瓶、これは200g入りですが、これで税別600円とさせていただいております,

07:28 相沢祐一
はい、で、大量注文の場合は、別途ご相談させていただければと。

07:43 古河早苗
なるほど、ありがとうございます。実は弊社、看板商品として「レインボーパン」という7色の生地で作る、見た目も鮮やかな菓子パンがありまして。

08:08 古河早苗
これがお子様から大人の方まで、幅広い世代に人気なんです。「謎ジャム」の鮮やかな色合いと、フルーツ本来の美味しさが加われば、さらに魅力的な商品になるのでは、と

08:23 古河早苗
考えておりまして。ぜひ、前向きに検討させていただきたいと思っております。

08:43 岡崎朋也
ええ、一度、社内で検討し、発注数を見積もった上で、改めて見積もりをいただけたらと思います。

09:17 相沢祐一
かしこまりました!本日は誠にありがとうございました。

09:28 水瀬秋子
ありがとうございました。

09:47 古河早苗
ありがとうございました。

10:02 岡崎朋也
失礼します。

この議事録をアプリの「生の文字起こし」の欄に入力し実行すると、以下のように議事録が生成されます。

生成された議事録全文は以下のようになります。

生成された議事録

全体の概要

  • ミーティングの目的: 有限会社水瀬ジャムの新商品「謎ジャム」の古河ベーカリーへの紹介
  • 参加者:
    • 相沢祐一 (有限会社水瀬ジャム, 営業)
    • 水瀬秋子 (有限会社水瀬ジャム, 製造部長)
    • 古河早苗 (古河ベーカリー, 担当者)
    • 岡崎朋也 (古河ベーカリー, 商品開発部)
  • 日時: 不明
  • 場所: オンライン会議

サマリ

有限会社水瀬ジャムの相沢と水瀬が、古河ベーカリーに新商品「謎ジャム」を紹介した。
「謎ジャム」は、鮮やかな色合いと、果実本来の風味を最大限に引き出した奥深い味わいが特徴。
安心安全な国産果実のみを使用し、保存料・着色料は一切使用していない。
古河ベーカリーの看板商品「レインボーパン」との相性が良いと提案した。
古河ベーカリー側は、商品に興味を示し、社内検討の上、改めて見積もりを依頼する。

ネクストアクション

  • 岡崎朋也 - 社内で検討し、発注数を見積もった上で、改めて見積もりを依頼する。

トピックごとの発言タイムライン

トピック名: 謎ジャムの紹介 (01:32 - 03:28)

概要

相沢より、新商品「謎ジャム」の特徴について説明があった。

会話の流れ

  • 01:32 相沢祐一 - 新商品「謎ジャム」を紹介する。
  • 01:58 相沢祐一 - 最大の特徴は、鮮やかで美しい色合いと、果実本来の風味を最大限に引き出した奥深い味わいである。
  • 02:28 相沢祐一 - 独自の製法により、果実の栄養価を損なうことなく凝縮することに成功し、「食べるサプリメント」と言えるほどヘルシーで栄養満点である。
  • 02:47 相沢祐一 - 保存料、着色料は一切使用しておらず、安心安全な国産果実のみを使用している。
  • 03:13 相沢祐一 - パンのお供としてはもちろん、ヨーグルトやアイスクリームに添えたり、お菓子作りにも最適である。

トピック名: 謎ジャムの原料 (04:17 - 06:47)

概要

古河より「謎ジャム」の原料について質問があり、水瀬が回答した。

会話の流れ

  • 04:17 古河早苗 - 原料は何を使用しているのか、産地や栽培方法にこだわっているため、詳細を教えてほしい。
  • 05:13 水瀬秋子 - 国産の厳選した果実のみを使用している。具体的な産地や品種は、季節や仕入れ状況によって異なる。
  • 05:28 水瀬秋子 - 産地や品種、栽培方法については企業秘密のため、詳しくはお話しできない。
  • 05:43 水瀬秋子 - 安心安全な果実という点には並々ならぬこだわりを持っており、独自の基準をクリアした、信頼のおける契約農家から仕入れている。

トピック名: 謎ジャムの価格と導入検討 (06:47 - 08:43)

概要

岡崎より「謎ジャム」の価格について質問があり、相沢が回答した。
古河より「レインボーパン」との相性の良さを提案し、導入を検討する旨の発言があった。

会話の流れ

  • 06:47 岡崎朋也 - 値段はいくらなのか。
  • 07:13 相沢祐一 - 1瓶(200g入り)で税別600円。大量注文の場合は別途相談可能。
  • 07:43 古河早苗 - 看板商品「レインボーパン」に「謎ジャム」の鮮やかな色合いとフルーツ本来の美味しさが加われば、さらに魅力的な商品になると考えている。
  • 08:23 古河早苗 - 前向きに検討したい。
  • 08:43 岡崎朋也 - 一度社内で検討し、発注数を見積もった上で、改めて見積もりを依頼する。

工夫ポイント

ChatGPT などに「議事録をまとめてください」などのプロンプトを渡すだけでも、ある程度の議事録は生成してくれます。

ただこれだけだと「〇〇について議論を行った」など、結論だけで話の流れがわからなかったり、そもそもどんな議論が行われたのかすら書かれていなかったりするケースがたまに発生します。特に入力となる文字起こしが長いほど大雑把なまとめになりがちです。

そこで今回のプロンプトでは「全体の概要」と「トピックごとの発言タイムライン」に分割し、「トピックごとの発言タイムライン」では大まかな会話の流れがわかるよう発言をピックアップ & 大意が変わらないようサマライズしてもらうようにしました。

これにより、全体の概要を見れば会議全体の結論がわかり、どうしてその結論に至ったのかは発言タイムラインを見れば大体わかるようになりました。

プロンプト

基本的に以下のシステムプロンプトを利用しているだけなので、 ChatGPT や Google AI Studio などのコンソールでも簡単に実行できます。

ただ LLM によって出力傾向が違い、個人的には Gemini 1.5 Pro の出力が一番精度が良いと思います。

議事録つくる君 v2 システムプロンプト
ある会議の不完全な文字起こしが与えられます。
あなたの仕事は、この会議の議事録を以下の指定に従ってマークダウン形式でまとめることです。

# 全体の概要

 * ミーティングの目的:[文字起こしから判断、もしくは情報がない場合は「不明」と記載]
 * 参加者:[文字起こしから判断、もしくは情報がない場合は「不明」と記載]
 * 日時:[文字起こしから判断、もしくは情報がない場合は「不明」と記載]
 * 場所:[文字起こしから判断、もしくは情報がない場合は「不明」と記載]

## サマリ

ミーティング全体のサマリを以下の例と同様に箇条書きでまとめてください。この際、トピックを見ただけで内容が判断できないものについては2レベルや3レベルの箇条書き項目を作り詳細を記述してください。

 * AがB社のC氏,D氏に向けてXサービスのデモを行った
 * C氏より、Xサービスの以下の点について質問が行われた
   * N機能ではUが行えるか → AよりPによって行えると回答した
   * ...
 * D氏より、導入が決定したため契約資料を送付して欲しいとの申し出があった
   * Aが至急送付すると回答した
 * ...

## 決まったこと

ミーティング全体で決まったことを以下の例と同様に箇条書きでまとめてください。何かを決めるミーティングでない場合はこの節は省いてください。

 * B社がXサービスを導入することが決定した
 * ...

## ネクストアクション

ミーティング全体で次のアクションとして挙げられていることを箇条書きで、発言タイムスタンプと担当者を併記してまとめてください。ネクストアクションのないミーティングではこの節は省いてください。

 * AよりD氏宛にXサービスの詳細な資料を送付する
 * ...

# トピックごとの発言タイムライン

会話のトピックを10~30分程度で区切って抜き出し、各トピックについて以下のフォーマットで情報をまとめてください。

## トピック名:** [トピック名] (開始時間 - 終了時間)
### 概要

[そのトピックの概要を簡潔に記述]

### 会話の流れ

* [時間] : [話者] - [発言内容の要約]
* [時間] : [話者] - [発言内容の要約] 
* ...

なお、会話の流れに含む発言要約については清書し、読みやすく整えてください。また話者の発言として自然な表現にしてください。(「XXXについて発言」「XXXと自己紹介」ではなく「XXXだ」「XXXです」など発言らしい内容にする)
会話の流れは長くとも20項目に収まるよう、重要な発言のみピックアップしたうえで流れが自然になるよう整えてください。
 
 * 同一話者の連続する発言は1つの行にまとめる(発言内容が30文字以上になる場合のみ、同一話者の発言が連続しても良い)
 * 話し言葉や砕けた言葉遣いを書き言葉に修正する(入れちゃいます→入れます、など)
 * 丁寧語・敬語(です・ます調)を常体(だ・ある調)に統一する
 * おかしい文章を校正し、前後の文脈から誤字だと判断できる部分を修正する
 * 肯定の意味がない「はい」「あっ」などの不要な感嘆符や「なるほど」「そういうことなんですね」「わかる」などの相槌・無意味な繰り返し・意味不明で不要と判断できる部分は省く
 * 文脈上、大きな意味のない発言は省く
 * 用語集を元に、間違いと思われる部分を訂正する

======== 出力例 ========

# 全体の概要

 * ミーティングの目的: サービスXの導入に向けた、現状業務のヒアリング
 * 参加者:
   * 相沢祐一 (鍵っ子株式会社, 部長)
   * 国崎往人 (鍵っ子株式会社, 導入後の支援チーム責任者)
   * 岡崎朋也 (鍵っ子株式会社, インサイドセールス)
   * 水瀬 (有限会社葉鍵, 企画課)
   * 古河 (有限会社葉鍵, 工場長)
   * 神北 (有限会社葉鍵, 管理課, ITチーム担当)
 * 日時: 2024年1月1日
 * 場所: オンライン会議

## サマリ

鍵っ子株式会社による、有限会社葉鍵へのLeaner見積導入に向けたヒアリングを行った。

 * 有限会社葉鍵では、購買統括部が資材調達における仕入先選定を行っている。工場単体では、設備や板金など、頻度は高くないものの、都度見積もりが必要なものを調達している。
 * 板金などの見積もりは、主にメールとFAXで行われており、システム化されていないため、履歴管理や比較検討に課題を感じている。
 * Leaner見積のデモを通して、システム上でサプライヤーとの見積もり依頼から回答、比較検討、交渉、社内承認までを一元管理できることを説明。
 * 現状の課題や要望をより詳細にヒアリングするため、改めて10月7日15時よりヒアリングを実施することが決定した。

## 決まったこと

 * 次回ヒアリングを10月7日15時〜16時に実施する。

## ネクストアクション

 * 相沢祐一 - 有限会社葉鍵 水瀬様に次回ミーティングのZoomリンクを送付する。
 * 有限会社葉鍵 神北様 - サプライヤーから回収している見積書のサンプルを見繕って鍵っ子株式会社に送付する。

# トピックごとの発言タイムライン
## トピック名: 自己紹介 (00:37 - 09:23)
### 概要

参加者全員の自己紹介。鍵っ子株式会社側は、会社の概要、サービス内容、導入実績などを説明した。有限会社葉鍵側は、各部署の役割や、現在の業務内容について簡単に説明した。

### 会話の流れ

 * 02:06 相沢祐一 - 鍵っ子株式会社の相沢と申します。本日はよろしくお願いいたします。Leaner見積は、調達・購買プロセスをデジタル化し、生産性を向上させるツールです。本日はサービス概要と導入事例、他部門での活用事例などをご紹介させていただきます。
 * 04:55 国崎往人 - 鍵っ子株式会社の国崎と申します。導入後の支援チームの責任者を務めています。
 * 07:01 水瀬 - 有限会社葉鍵の企画課の水瀬と申します。新技術導入や仕事量拡大などの企画を担当しています。

## トピック名: 鍵っ子株式会社概要・サービス紹介 (09:23 - 16:27)
### 概要

相沢より、鍵っ子株式会社の会社概要とLeaner見積のサービス概要について説明があった。

### 会話の流れ

 * 09:23 相沢祐一 - これより、弊社の会社概要とサービス概要についてご説明させていただきます。
 * 10:42 相沢祐一 - 当社は、key様やLeaf様をはじめ、様々なメーカー様に導入いただいております。特定のメーカー様に特化したものではなく、部品、資材、設備など、幅広い調達ニーズに対応可能です。
 * 13:14 相沢祐一 - 当社のサービスは、調達購買業務の中でも、特に「ソーシング」と呼ばれる領域に特化しています。ソーシングとは、価格決定前の段階、つまり、どのようなものを、どのような条件で購入するかを決定し、サプライヤーから見積もりを取得し、比較検討、交渉、査定などを行い、最終的な価格を決定するまでのプロセスを指します。
 * 15:50 相沢祐一 - 御社では、この「ソーシング」の部分は、どのような業務プロセスで行っているのでしょうか。

======== 用語集 ========

Leaner(りーなー,固有名詞)
Leaner Technologies(りーなーてくのろじーず,固有名詞)
Leaner見積(りーなーみつもり,固有名詞)
Leaner購買(りーなーこうばい,固有名詞)

プロンプトの最後にある「用語集」の部分は、自社でよく使われる固有名詞を一通り入れておくと良い感じに補正してくれます。

特に Leaner は文字起こしだと「ラーナー」になりがちなのですが、そういう部分を勝手に直してくれるので便利です。

検証して諦めたもの

文字起こし + 自動要約の SaaS 導入

tl;dvNotta などの SaaS が使えるのであれば、運用保守も楽だし機能も勝手に増えるしで良いかなぁと思い、最初に検証しました。

悪くはなかったのですが、以下の点で見送りました。

  • Amptalk から載せ替えたいと思うほど、文字起こしに明確な精度の差を感じなかった
  • AI 要約は少なくともデフォルト設定ではあまり良いと思えなかった
    • 適当に書いたプロンプトでも gpt-4o や Gemini 1.5 Pro を直接使ったほうが良い出力が得られたうえ、調整の幅も広かった

Slack から利用できるようにする

Dify の画面をいちいち開くのは面倒だったので、 Slack からボット経由で利用できると良いのでは? と思い ころちゃん(@corocn) が実装してくれました。

連携自体はうまくいったのですが、そもそも文字起こしが長すぎて Slack に投稿できないことがわかり断念しました…

まとめ

今年の開発合宿は一泊二日で実際に作業できる時間が結構短かったのですが、集中して色々試すことができたため結構良いツールを作れました。

議事録つくる君 v2 は社内で実際に利用し好評をもらっているので、今後もブラッシュアップを進めたいです。

脚注
  1. v1 は「文字起こしの清書」と「そこからの議事録生成」の 2 ステップ構成にしていましたが、プロンプトを改良した結果 1 ステップで良くなったため v2 になりました。 ↩︎

  2. この例は Amptalk の文字起こしと同じフォーマットで、適当な内容をでっちあげて Gemini で生成しました。実物はもっと誤字が多く相槌など意味のない情報も多い他、 1 時間ほどあるため文量が多いです。 ↩︎

リーナーテックブログ

Discussion