会議議事録作成
会議を欠席した人が信頼できる議事録を作成します。すべての発言は録音にトレース可能で、話者ラベルはその確信度について正直に記載されます。
録音が唯一の情報源です。文字起こしは証拠であり、議事録はその証拠を読んだものです。会議ボットや参加者が書いたメモは二次的なものであり、クロスチェックにのみ使用してください。
動作モード
このスキルをロードしても、すぐにフル実行が開始されるわけではありません。リクエストに最も適した最小のモードを選択してください。
- ガイダンスモード: 文字起こしの方法、特定のマシンに適したモデル、話者ラベルが間違っている理由、既存の文字起こしの読み方などに関する質問に答えます。関連ファイルから回答してください。何もインストールしたりファイルを作成したりしないでください。
- 文字起こしモード: ユーザーがテキストのみを必要としています。セットアップ、文字起こし、および(拒否されない限り)話者分離を実行します。話者ラベル付きの文字起こしが出力された時点で停止します。
- 議事録モード: ユーザーが議事録を必要としています。すべてのフェーズを実行し、「出力」にリストされているファイルを作成します。
リクエストが複数のモードに該当する可能性がある場合は、何かをインストールする前に短い質問を1つだけ行ってください。
プラットフォーム用語
このスキルはエージェント非依存です。
- シェル とは、プラットフォームがユーザーのコンピュータ上でコマンドを実行するために使用するものを指します。
- バックグラウンド実行 とは、長時間のコマンドを開始し、終了時に通知を受けるプラットフォームの方法です。それがない場合は、コマンドをフォアグラウンドで実行し、ユーザーにおおよその待機時間を伝えてください。
- 環境 とは、このスキルが一度作成して再利用するPython環境です。
<python>はそのインタプリタを指します。 - リファレンススクリプト とは、これらのファイル内のコードブロックです。
<out>/work/の下に保存し、<python>で実行してください。これはテスト済みの出発点であり、固定された契約ではありません。マシン、ライブラリのバージョン、またはリクエストに応じて適応し、変更した点を説明してください。
原則
- 音声はローカルに留まります。 録音やその一部をリモートサービスにアップロードしないでください。文字起こしと話者分離はこのコンピュータ上で実行されます。
- テキストの行き先についてオープンにしてください。 文字起こしはテキストであり、議事録を作成するエージェントがそれを読みます。そのエージェントがクラウドモデルである場合、テキストはそのプロバイダに送信されます。会議が機密性の高いものである可能性がある場合は、最初の実行前に一度その旨を伝えてください。
- 言われたことだけを。 議事録には、文字起こしが裏付ける内容のみが含まれます。捏造された所有者、日付、数字、決定事項は含めません。
- 正直な話者ラベル。 数字は証拠がある場合にのみ名前になります。推測は推測としてマークされます。
- 一度に一つの負荷の高いジョブを、低優先度で。 音声モデルはマシン全体を使用します。文字起こしと話者分離を同時に実行しないでください。遅くても問題ありません。ユーザーはこのコンピュータで作業を続ける必要があります。
- インストール前に確認し、機密情報を扱わないでください。 プログラムをインストールする前にコマンドを表示してください。ユーザーがサインインし、モデルの利用規約に同意し、トークンを保存します。会話の中でパスワードやトークンを要求しないでください。
- 認識エラーは想定内です。 名前、数字、専門用語が弱点です。ごまかさずに、重要な部分を確認してください。
セットアップ値
最初のフェーズの前にこれらを解決してください。自分で確認できないことだけをユーザーに尋ねてください。
- スキルディレクトリ: この
SKILL.mdを含む絶対ディレクトリ。 - 録音: 音声または動画ファイルの絶対パス。
- 出力ディレクトリ
<out>: デフォルトは録音の隣の新しいフォルダで、録音ファイル名に-minutesを追加したもの。ユーザーが別の場所を指定した場合、または録音が同期フォルダや共有フォルダにあるために作業ファイルがそこにあってはならない場合は、別の場所を使用します。 - 言語: ユーザーに尋ねるか、モデルに検出させます。
- 参加者: 名前、および可能であればチームや役割。話者に名前を割り当て、議事録のヘッダーに必要です。ユーザーがわからない場合は、番号付きの話者で続行します。
- タイトル、日時、目的: ヘッダー用。ユーザーまたはファイル名とメタデータから取得します。推測からは決して取得しません。
出力
すべてのパスは <out> 内にあります。
| ファイル | 作成フェーズ | 内容 |
|---|---|---|
transcript.json | フェーズ2 | 単語レベルのタイムスタンプ付きセグメント。以後編集しない |
transcript.txt | フェーズ2 | 同じテキストを、セグメントごとにタイムスタンプ付きの1行で。未補正の記録 |
diarization.json | フェーズ3 | 誰がいつ話したか。話者は1から番号付け |
speakers.json | フェーズ4 | 話者番号から名前へのマッピング。不確実性マーク付き |
corrections.tsv | フェーズ4 | 繰り返し発生する認識エラーとその修正 |
transcript-speakers.txt | フェーズ4 | 話者ラベル付き、補正済みの文字起こし。議事録の基礎 |
minutes.md | フェーズ5 | 議事録。話者ラベル付きの文字起こしを付録として含む |
work/ | すべて | 実行されたリファレンススクリプトとログ |
ワークフロー
| フェーズ | 参照ファイル | 成果物 |
|---|---|---|
| 1. セットアップ | SETUP.md | 動作する環境、GPU/CPUと話者分離に関する決定 |
| 2. 文字起こし | TRANSCRIPTION.md | transcript.json, transcript.txt |
| 3. 話者分離 | DIARIZATION.md | diarization.json |
| 4. 話者と補正 | SPEAKERS.md | speakers.json, corrections.tsv, transcript-speakers.txt |
| 5. 議事録 | MINUTES.md | minutes.md |
フェーズ1はコンピュータごとに1回実行され、以降の実行では確認のみ行います。フェーズ2と3は長時間かかります。バックグラウンド実行を使用し、終了時に続行してください。フェーズ3は、ユーザーが1回限りのモデルアクセスを拒否した場合にスキップされます。その場合でも、残りの処理は名前なしで動作します。
各フェーズの結果を確認してから次のフェーズを開始してください。各ファイルの末尾には「チェック」セクションがあります。
ユーザーへの報告
実行が終了したら、ユーザーに次のことを伝えてください。
minutes.mdの場所- 確定した話者名と推測の話者名
- デフォルトからスキップまたは変更した内容とその理由
- この実行における既知の弱点(不明瞭な名前や数字、重複した発言、音質の悪い部分など)
アンチパターン
- 録音が利用可能な場合に、会議ボットが書いたメモを要約すること。そのようなメモは会議の一部を省略し、すべての声を1つにまとめます。
- 「時間を節約するため」に文字起こしと話者分離を同時に実行すること。両方が遅くなり、GPUメモリを枯渇させる可能性があります。
- 音声モデルに参加者名のリストをヒントとして与えること。モデルは無音部分にそれらの名前を書き込み、実際の発話を落とします。
- 名前が「合う」という理由で話者に名前を付けること。共有された議事録における誤った帰属は、「話者3」というラベル10個よりも大きな損害をもたらします。
- 文を書き換えて文字起こしを修正すること。繰り返し発生する聞き間違いは
corrections.tsvを通じて修正し、文言はそのままにしてください。 - 誰も述べていない所有者と日付の付いた行動項目を書くこと。
- 結果を確認せずに成功を報告すること。文字起こしの最初と最後の分を読み、話者数と参加者数を比較してください。