排練助手 (The Rehearsal) 是做什麼的?
預測會議內容,讓使用者在會議開始前就能聽到、看到並翻閱整個過程。
| 輸出 | 檔案 | 說明 |
|---|---|---|
| 預測腳本 | script.md | 可能的對話,每回合一行,附有投影片標記 |
| 語音音軌 | out/rehearsal.mp3 | 雙人語音,代表談話雙方 |
| 影片 | out/rehearsal.mp4 | 每段談話對應一張投影片,與音訊同步,並內嵌字幕 |
| 字幕 | out/rehearsal.srt | 逐句字幕,包含發言者名稱 |
| 簡報 | out/deck.html | 可離線翻閱的簡報;每張投影片顯示該段落的確切台詞 |
以下路徑均以此技能資料夾為基準。請在自己的專案資料夾中工作(包含 script.md、slides/、out/)。
1. 蒐集會議資訊
在開始撰寫任何內容之前,先蒐集以下資訊:對方是誰(職位、背景、負責範疇)、會議目標、會議長度與形式、使用者自身的事實(履歷、數據、計畫、已核准的答覆),以及對方可能會追問的重點。閱讀使用者已有的資料:通話記錄表、計畫、研究資料、電子郵件、職位描述。
只詢問那些會改變腳本的事實。如果某個問題使用者必須根據自身經驗回答,就將其標記為準備 (Prepare) 項目;切勿自行虛構答案。只有當使用者的台詞基於真實事實時,排練才有價值:在排練中虛構的自信數字,最終會在真實會議中變成謊言。
2. 預測對話
按照 references/script-format.md 中的格式撰寫 script.md。
- 按照真實會議的順序排列:開場、對方的框架、使用者的背景、追問、使用者的計畫或提案、尖銳問題、後續事項、使用者的提問、結尾。
- 對方的台詞是預測。請在腳本標頭中明確說明。當需要虛構對方公司的資訊時,請保持台詞的概括性(例如「我無法透露條款」)。
- 使用者的台詞只能使用其提供的資訊或擁有的文件,以及已核准的逐字措辭(若有的話)。
- 先回答,再給一個範例,然後停止。針對大多數會議,每個回答以一至三個句子為佳。
- 以人們說話的方式書寫數字(例如「500 萬」、「百分之一百六十一」),讓語音能自然朗讀。
- 在每個談話段落開始的回合前,加上
<!-- slide: id -->標記:通常每個問題對應一個段落。 - 在檔案末尾加上準備 (Prepare) 清單:列出你無法根據事實回答的問題。
媒體生成前的壓力測試(可選):請一兩位審查者扮演對方及其主管(如果可啟動子代理人的話),並批評使用者的回答或計畫。根據事實所支持的內容套用修改;其餘的則列出供使用者參考。
3. 生成語音
pip install -r requirements.txt # edge-tts, pydub;需預先安裝 ffmpeg
python scripts/make_audio.py script.md out --voice "Dana=en-US-AvaNeural" --voice "Sam=en-US-AndrewNeural"
為談話雙方指定明顯不同的語音(可使用 edge-tts --list-voices 列出所有語音)。此腳本會輸出 out/rehearsal.mp3 以及包含字幕時間戳記的 out/timeline.json。Edge 服務偶爾會隨機拒絕請求;腳本會自動重試。
4. 為每個談話段落繪製一張投影片
按照 references/slide-format.md 中的格式,為每個投影片標記撰寫 slides/<id>.html。每張投影片應將其對應的段落轉化為圖像:以問題作為標題,然後用時間軸、編號步驟、比較表、實際數據的長條圖、決策路徑或詞彙表等方式呈現答案。將雙方的對談(逐字)放入投影片的 <aside> 講者備註中。在使用者需要特別注意的地方加入提示(例如「準備:從同意到下訂的時程」),因為這份簡報也兼具學習輔助工具的功能。
5. 渲染影片與簡報
python scripts/render_video.py slides out --fonts "https://fonts.googleapis.com/css2?family=..."
python scripts/build_deck.py slides out --fonts "https://fonts.googleapis.com/css2?family=..." --title "排練:<會議名稱>"
render_video.py 需要 Google Chrome 或 Chromium(若找不到,請設定 CHROME= 環境變數),以及已編譯 libass 的 ffmpeg。--fonts 參數是投影片使用的單一 Google Fonts URL;若投影片使用系統字型,則可省略此參數。在可以使用 Slides 成品類型的地方,相同的投影片檔案可以發布成可分享的簡報。
6. 檢查,然後交付
- 從每張投影片擷取一幀畫面(
ffmpeg -ss <秒數> -i out/rehearsal.mp4 -frames:v 1 frame.png)並檢查:文字是否在框內、是否沒有超出字幕區域、字型是否已載入。 - 確認影片長度與音訊長度相符。
- 交付檔案時附上三個簡單的注意事項:對方的台詞是預測;準備清單需要使用者提供自身的事實;腳本文字已傳送至 Microsoft 的語音服務。
隱私
edge-tts 會將腳本文字傳送至 Microsoft 的語音服務。在生成音訊之前,請告知使用者腳本中是否包含任何敏感資訊(例如薪資、健康狀況、未公布的交易或姓名),並提議將其排除在語音版本之外。此流程無需使用 API 金鑰或付費服務。
檔案
scripts/make_audio.py- 用於生成含時間戳記的雙人語音 MP3 及timeline.json的腳本scripts/render_video.py- 將投影片與音訊合成為含字幕的 MP4 及 SRT 的腳本scripts/build_deck.py- 將投影片轉換為可離線翻閱的deck.html簡報的腳本references/script-format.md- 如何撰寫script.md的說明references/slide-format.md- 如何撰寫投影片的說明