TECH BLOG

エルカミーの技術ブログです

【Difyで作るシリーズ 9】音声ファイルから議事録を作成する

はじめに

Dify というサービスを聞いたことがあるけれど、「何ができるかわからない」、「どう使うのかわからない」などの理由で使ったことがない方は多いのではないでしょうか。

そのような方のために、「Dify で何ができるのか?」や Dify を使った活用事例を紹介する記事をシリーズ化していきます。

今回は第9回目で、会議の音声ファイルから、テンプレートを指定して議事録を作成するワークフローを作成する方法について紹介します。

🙂
この記事の対象者
  • Dify という言葉を聞いたことがあるが、何ができるのかがわからない方
  • Dify を業務に取り入れたいと検討している方
事前準備
  • Dify へのサインアップ
  • OpenAI APIまたはGemini APIのAPIキーの取得
    • Gemini APIの場合
      1. ここにアクセスし、「APIキーを作成」を選択します。
      2. 「新しいプロジェクトでAPIキーを作成」を押します。
      3. APIキーをコピーします。
    • Open AI APIの場合
      • サインアップした後、こちらからAPIキーを作成し、保存します。
  • APIキーのセットアップ
環境
  • Chrome
  • Dify v1.8.0

概要

議事録アプリの仕様
入力
  • 議事録の音声ファイル
  • テンプレートの選択

    以下のテンプレートを選択できるようにします。

    • オリジナルテンプレート
    • 標準テンプレート
    • 決定事項とTODOテンプレート
    • エグゼクティブサマリーテンプレート
出力
  • テンプレートに合わせた議事録
完成イメージ
📌
イメージ
  1. 「template」でテンプレートの種類を選びます。
  2. 「audio」で音声ファイルをアップロードします。
  3. 右側に議事録が返ってきます。
image block

今回作成するワークフローの全体図です。

image block

作成手順

ここからは、ワークフロー構築の手順について説明します。

手順
  1. ワークフローの新規作成
  2. ワークフロー作成画面上での作業
  3. ワークフローの動作確認
1. ワークフローの新規作成
  1. 最初の画面の「最初から作成」を選択します。
    image block
  2. 「ワークフロー」を選択し、「アプリのアイコンと名前」を入力してから「作成する」を選択します。
    image block
2. ワークフロー作成画面上での作業
  1. 「開始」ノードを選択した後、「+」ボタンを押し、下記の表のように3つの項目を追加します。
    番号 フィールドタイプ 変数名 ラベル名 オプション 最大長 サポートされたファイル アップロードされたファイルのタイプ デフォルト値 必須
    選択 template template 「標準」「決定事項とTODO」「エグゼクティブサマリー」 - - なし ×
    段落 original_template original_template - 1024 - - なし ×
    ファイルリスト audio audio - - 音声 両方 -

    以下の画像のようになっているか確認します。

    image block
  2. 「LLM」ノードを追加し、以下の表のように項目を追加してください。
    項目
    AIモデル gpt-4o-audio-preview-2025-06-03
    SYSTEM (以下のプロンプト)
    USER 「開始」の{x}audio

    「SYSTEM」に入力するプロンプトは以下です。

    音声から話者を区別し、それぞれに一貫したラベルを付与してください(例:「佐藤」「田中」、不明なら「担当A」「担当B」)。
    
    それぞれの発話内容をテキストとして正確に書き起こしてください。
    image block
  3. 「LLM」ノードを追加し、以下の表のように項目を追加してください。
    項目
    AIモデル chatgpt-4o-latest
    コンテキスト 「話者分離+文字起こし」の{x}text
    SYSTEM (以下のプロンプト)

    「SYSTEM」に入力するプロンプトは以下です。

    [コンテキスト]
    
    # これは会議の文字起こしデータです。このデータを要点のみに集約するように処理してください。フィラーや不要な情報(例: 'えーっと', 'あー', 'そのー' など)を削除し、以下の条件に基づいて簡潔にまとめてください。
    
    #### **処理の条件**
    1. **フィラーの削除**: 「えーっと」「あー」「うーん」などの意味のない音声や言葉を削除してください。
    2. **重複表現の簡略化**: 同じ内容が繰り返されている場合、1回にまとめて記載してください。
    3. **不要な雑談の削除**: 話題に直接関連しない雑談や冗長なコメント(例: '天気の話', '挨拶のやりとり')を省いてください。
    4. **話者の意図を保持**: 話者の主張や決定事項は削除せず、内容を簡潔に表現してください。
    5. **文法を整える**: 不完全な文や言葉の途中で止まった文がある場合は、文法的に正しく整えてください。
    6. **3000文字程度にまとめる**
    7. **誤変換は勝手に解釈してまとめない**
    
    #### **出力フォーマット**
    - 話者名を残し、以下の形式で簡潔にまとめてください。
      - (話者名):「(要点を簡潔にした発言内容)」
    - 可能であれば、話者ごとに内容を12文程度に集約してください。
    
    
    #### **注意点**
    - 出力はまだ議事録ではありません。要点を整理した簡潔な文字起こしを目的としています。
    - 話者の意図が失われないように注意してください。
    
    #### これは会議の文字起こしデータです。このデータを要点のみに集約するように処理してください。フィラーや不要な情報(例: 'えーっと', 'あー', 'そのー' など)を削除し、以下の条件に基づいて簡潔にまとめてください。
    
    
    #### **処理の条件**
    1. **フィラーの削除**: 「えーっと」「あー」「うーん」などの意味のない音声や言葉を削除してください。
    2. **重複表現の簡略化**: 同じ内容が繰り返されている場合、1回にまとめて記載してください。
    3. **不要な雑談の削除**: 話題に直接関連しない雑談や冗長なコメント(例: '天気の話', '挨拶のやりとり')を省いてください。
    4. **話者の意図を保持**: 話者の主張や決定事項は削除せず、内容を簡潔に表現してください。
    5. **文法を整える**: 不完全な文や言葉の途中で止まった文がある場合は、文法的に正しく整えてください。
    6. **3000文字程度にまとめる**
    7. **誤変換は勝手に解釈してまとめない**
    
    
    #### **出力フォーマット**
    - 話者名を残し、以下の形式で簡潔にまとめてください。
      - (話者名):「(要点を簡潔にした発言内容)」
    - 可能であれば、話者ごとに内容を12文程度に集約してください。
    
    
    #### **注意点**
    - 出力はまだ議事録ではありません。要点を整理した簡潔な文字起こしを目的としています。
    - 話者の意図が失われないように注意してください。
    ⚠️
    赤文字の部分はご自身が作成しているワークフローに合わせて編集してください。
    image block
  4. 「IF/ELSE」ノードを追加します。このノードでは、以下の4つの場合に分けて議事録を作成するための条件分岐を作成します。
    1. 「オリジナル」テンプレート
    2. 「標準」テンプレート
    3. 「決定事項とTODO」テンプレート
    4. 「エグゼクティブサマリー」テンプレート

    下記の図のように条件を追加してください。

    flowchart TD
        A[開始] --> B{original_templateが空でない<br>AND<br>templateが空である}
        B -->|Yes| C[オリジナルテンプレート]
        B -->|No| D{templateが「標準」である<br>OR<br>templateが空である}
        D -->|Yes| E[標準]
        D -->|No| F{templateが「決定事項とTODO」である}
        F -->|Yes| G[決定事項とTODO]
        F -->|No| H{templateが「エグゼクティブサマリー」である}
        H -->|Yes| I[エグゼクティブサマリー]
    image block
  5. CASE1に「LLM」ノードを追加し、以下の表のように項目を追加します。
    項目
    AIモデル chatgpt-4o-latest
    コンテキスト 「集約」の{x}text
    SYSTEM (以下のプロンプト)

    「SYSTEM」に入力するプロンプトは以下です。

    # あなたはプロフェッショナルな秘書です。以下に提供する会議の文字起こしデータと、ユーザーが指定するオリジナルテンプレートをもとに、議事録を作成してください。テンプレートの指示に従い、内容を正確かつ簡潔に記述してください。
    
    ## 以下のデータを基に議事録を作成してください
    
    1. 会議の文字起こしデータ
    [コンテキスト]
    
    2. オリジナルテンプレート(ユーザー指定の形式)
    [「開始」の{x}original_template]
    
    ## 注意事項
    
    1. オリジナルテンプレートの形式や項目を厳守してください。
    2. 会議の文字起こしデータを基に、テンプレートに沿った内容を簡潔に整理してください。
    3. 冗長な表現を避け、明確かつ簡潔な記述を心がけてください。
    4. 必要に応じて、関連する情報を適切に補足し、全体の一貫性を保ってください。
    image block
  6. CASE2に「LLM」ノードを追加し、以下の表のように項目を追加します。
    項目
    AIモデル chatgpt-4o-latest
    コンテキスト 「集約」の{x}text
    SYSTEM (以下のプロンプト)

    「SYSTEM」に入力するプロンプトは以下です。

    # あなたはプロフェッショナルな秘書です。以下に提供する会議の文字起こしデータをもとに、質の高い議事録を作成してください。会議の内容を簡潔かつ正確に整理し、要点を分かりやすく記述してください。
    
    ## 議事録作成における指示
    
    以下のテンプレートに従い、簡潔かつ明確にまとめてください:
    
    ```
    # 議事録
    
    ## 1. 会議情報(情報がない場合は「不明」と記載)
    - 議題: [会議の主なテーマを記載]
    - 参加者: [参加者の名前を列挙]
    - 場所: [会議が行われた場所(オンラインの場合はその旨を記載)]
    - 日時: [会議の日付と時間]
    
    ## 2. アジェンダ
    [会議で取り上げられた主なトピックや議題をリスト形式で記載]
    
    ## 3. 議論内容
    - トピック1: [文字起こしの議論内容を簡潔に要約]
    - トピック2: [文字起こしの議論内容を簡潔に要約]
    
    ## 4. 決定事項
    - 決定事項1: [具体的な決定内容]
    - 決定事項2: [具体的な決定内容]
    
    ## 5. TODO
    - [担当者名]: [タスク内容] (締切:YYYY/MM/DD)
    - [担当者名]: [タスク内容] (締切:YYYY/MM/DD)
    ```
    
    ## 以下のデータを基に議事録を作成してください
    
    1. 会議の文字起こしデータ
    [コンテキスト]
    
    ## 注意事項
    
    1. 会議内容の要点を抽出し、簡潔にまとめてください。
    2. 冗長な表現を避け、読み手が迅速に理解できる内容を心がけてください。
    3. TODOは、タスクの責任者、内容、および締切を具体的に記載してください。
    image block
  7. CASE3に「LLM」ノードを追加し、以下の表のように項目を追加します。
    項目
    AIモデル chatgpt-4o-latest
    コンテキスト 「集約」の{x}text
    SYSTEM (以下のプロンプト)

    「SYSTEM」に入力するプロンプトは以下です。

    # あなたはプロフェッショナルな秘書です。以下に提供する会議の文字起こしデータをもとに、決定事項とTODOのみを簡潔にまとめた議事録を作成してください。会議内容を的確に要約し、明確な形式で出力してください。
    
    ## 議事録作成における指示
    
    以下のテンプレートに従って、簡潔に記述してください:
    
    ```
    # 決定事項とTODO
    
    ## 1. 決定事項
    [会議中に合意された重要な決定事項を箇条書きで記載。]
    例:
    - 決定事項1: [具体的な決定内容]
    - 決定事項2: [具体的な決定内容]
    
    ## 2. TODO
    - [担当者名]: [タスク内容] (締切:YYYY/MM/DD)
    - [担当者名]: [タスク内容] (締切:YYYY/MM/DD)
    ```
    
    ## 以下のデータを基に議事録を作成してください
    
    1. 会議の文字起こしデータ
    [コンテキスト]
    
    ## 注意事項
    
    1. 決定事項は簡潔に要点をまとめ、具体的かつ実行可能な内容にしてください。
    2. TODOには、具体的なタスク、担当者、および締切を明確に記載してください。
    3. 冗長な表現を避け、簡潔で明瞭な出力を心がけてください。
    image block
  8. CASE4に「LLM」ノードを追加し、以下の表のように項目を追加します。
    項目
    AIモデル chatgpt-4o-latest
    コンテキスト 「集約」の{x}text
    SYSTEM (以下のプロンプト)

    「SYSTEM」に入力するプロンプトは以下です。

    # プロンプト
    
    あなたはプロフェッショナルな秘書です。以下に提供する会議の文字起こしデータをもとに、エグゼクティブサマリー形式で会議内容を簡潔にまとめてください。この形式では、会議で議論された重要な要点や決定事項、行動計画を箇条書きで記述します。
    
    ## 議事録作成における指示
    
    以下のテンプレートに従い、箇条書きのみで簡潔に要点をまとめてください:
    
    ```
    # エグゼクティブサマリー
    
    - 要点1: [具体的な内容]
    - 要点2: [具体的な内容]
    - 要点3: [具体的な内容]
    - 要点4: [具体的な内容](必要に応じて追加)
    ```
    
    ## 以下のデータを基に議事録を作成してください
    
    1. 会議の文字起こしデータ
    [コンテキスト]
    
    ## 注意事項
    
    1. 会議の要点を抽出し、最も重要な内容に絞って簡潔に記述してください。
    2. 全体を300字以内に収め、簡潔で分かりやすい要約を作成してください。
    3. 冗長な表現を避け、簡潔で明瞭な内容に仕上げてください。
    image block
  9. 4つの「LLM」ノードに「終了」ノードを追加し、それぞれ出力変数を設定します。
    image block

以上でワークフローが作成できました。

3. ワークフローの動作確認

今回は以下の内容の音声ファイルをサンプルとして使用します。

営業(佐藤):
田中さん、本日はお時間いただきありがとうございます。まず、今回の商談の目的ですが、御社の業務効率化に向けた新システム導入について、要件の確認と今後の進め方を整理することです。

顧客(田中):
佐藤さん、こちらこそありがとうございます。現場からも問い合わせ対応に時間がかかっているという声があり、改善策を探しているところです。

営業(佐藤):
承知しました。先日お伝えしたシステムでは、問い合わせ履歴を自動で分類し、FAQを提示する機能があります。これにより一次対応の時間短縮が期待できます。

顧客(田中):
それはありがたいですね。ただ、現場からは「既存データとの連携が大丈夫か」という懸念も出ています。

営業(佐藤):
その点については、既存の顧客管理システムとAPIで接続可能です。デモ環境でも同様の連携を確認済みです。

顧客(田中):
なるほど。では、導入コストと運用コストを教えていただけますか。

営業(佐藤):
初期導入費用は約150万円、月額利用料はユーザー数に応じて変動しますが、今回の規模ですと30万円程度になります。

顧客(田中):
ありがとうございます。予算感としては想定内ですが、社内稟議を通すためにROIの見込みも示したいです。

営業(佐藤):
はい。導入によって問い合わせ対応の人件費を年間で約20%削減できると見込んでいます。その試算資料を後ほどお送りします。

顧客(田中):
助かります。スケジュール感としては、早ければ来月から検証に入りたいと思っています。

営業(佐藤):
問題ありません。来週中にPoC環境を準備しますので、そちらで実際の業務フローに即した検証を進めていただけます。

顧客(田中):
了解しました。社内で関係部署に説明し、検証体制を整えます。

営業(佐藤):
ありがとうございます。本日の内容を整理して議事録をお送りします。次回は来週金曜、検証環境を踏まえた進捗確認の場を設けましょう。

顧客(田中):
よろしくお願いいたします。今日はありがとうございました。

「公開する」を選択し、「アプリを実行」を選択します。

image block
標準テンプレートを使用した場合
image block
決定事項とTODOテンプレートを使用した場合
image block
エグゼクティブサマリーテンプレートを使用した場合
image block

応用

今回はDifyのUI(画面)を使用して議事録を作成しましたが、Slackと連携することで、チャンネルに議事録を投稿することも可能です。

さらに、会議の音声ファイルをもとに、特定の人物へのアドバイスを生成するワークフローを作成することも可能です。

image block

おわりに

今回は、会議の音声ファイルから、テンプレートを指定して議事録を作成するワークフローを作成しました。今後もDifyを利用したアプリの作成手順を紹介していきます。ぜひ引き続きご覧下さい。

サービス紹介

Dify の構築や、ワークフローの作成は、見た目以上に複雑で思っていたより大変な部分も多いんです。でも、ご安心ください。弊社のサービスで、そんな面倒な作業も丸投げできちゃいます。

「自分たちで全部やるのは時間もないし無理だな」と感じたとき、ぜひお任せください。本当にやりたいことに集中できるよう、しっかりサポートいたします。お気軽にご相談ください!