把現場口述變成工作紀錄:用 AI 做一套可校對的語音整理器
從錄音、逐字稿校對到條列整理,我用四輪 Prompt 完成一套可操作的工作紀錄工具,也把每輪 AI 回傳與人工判讀一併整理出來。

我這次想處理的不是會議室裡的漂亮逐字稿,而是現場工作最常見的情況:手邊正在整理物品、檢查設備或跑服務據點,沒空慢慢打字,只能先把發生的事說進手機。回到辦公室後,再從一整段口語裡找數量、問題與待辦,其實很花時間。
所以我用 Google Apps Script 做了一個可操作的網頁工具。它會先把語音轉成逐字稿,讓人核對名稱、日期和數字,確認後才交給 AI 整理。這個順序很重要:AI 可以幫忙收斂內容,但不該跳過人的確認。
先看完成後的操作
- 用 Chrome 直接錄音,或上傳 WebM、MP3、M4A、WAV 音檔。
- 逐字稿先停在畫面上,讓使用者修正人名、日期、數量與錯字。
- 整理成關鍵資訊、完成事項、異常、後續行動與未確認資訊。
- 結果可一鍵複製,也可下載成 Markdown 留存或再編輯。

先把第一版的功能理清楚
我沒有讓 AI 一收到聲音就直接產生正式紀錄。第一版拆成「錄音、轉寫、人工校對、條列整理、匯出」五步,並且不保存音檔與逐字稿。這樣發現名稱或數字錯誤時,可以在送進整理模型前修正,而不是等錯誤已經變成條列內容才回頭找。
AI 負責
語音轉寫、刪除口語贅詞、依固定欄位整理、把缺少的資訊列為待確認。
人負責
決定哪些資料可以處理、校對逐字稿、確認整理結果,以及把「今天」換成正式日期。
四輪 Prompt,怎麼從需求走到可用成品
上一個點餐系統的教學只放了 Prompt 和我的說明,讀者看不到 AI 實際回了什麼。這次我把每一輪的回傳重點也整理出來。以下不是逐字複製整段回答,而是保留足以判斷下一步的內容。
我想做一個給台灣社福與行政工作者使用的「口述工作紀錄整理器」。 使用流程: - 使用者可直接錄音,也可上傳 WebM、MP3、M4A、WAV。 - 先把語音轉成逐字稿,使用者必須能人工校對。 - 只用校對後的文字整理工作紀錄。 - 輸出要分成:關鍵資訊、完成事項、問題與異常、後續行動、未確認資訊。 - 後續行動要有任務、負責人、期限;原文沒說就標示「未指定」。 - 結果可複製或下載 Markdown。 資料原則: - 不保存音檔與逐字稿。 - 不可自行補人名、日期、數量或結論。 - OpenAI API Key 只能留在伺服器端。 第一輪先不要寫程式。請先整理: 1. 使用者完整操作流程 2. 前端與後端各自負責什麼 3. 固定輸出資料結構 4. 錯誤與例外狀態 5. 完成後的驗收清單 請用台灣中文回答。
- 建議流程為音訊取得、語音轉寫、人工校對、結構化整理、匯出。
- 前端處理錄音、播放、校對與畫面狀態;後端持有 API Key、限制檔案並呼叫模型。
- 固定輸出 title、summary、keyInformation、completed、issues、actions、uncertain。
- 麥克風拒絕、空音檔、格式錯誤、逾時與額度用完都要有可恢復的錯誤狀態。
這輪先確認 AI 有把人工校對放在整理之前,也有獨立列出未確認資訊。我保留這個流程,並把第一版限制在一種工作紀錄格式,沒有急著加入會議、訪視等多套模板。
請依照前面確認的規格,用 Google Apps Script 製作可執行版本。 請完整輸出: 1. Code.gs 2. Index.html 3. appsscript.json 必要條件: - 前端使用 MediaRecorder,最長錄音 90 秒。 - 可上傳 WebM、MP3、M4A、WAV,前後端都限制 8 MB。 - 前端以 google.script.run 呼叫後端,顯示成功、失敗與處理中狀態。 - Code.gs 用 UrlFetchApp 呼叫語音轉寫與文字整理 API。 - API Key 從 Script Properties 讀取,不可出現在 HTML。 - 整理結果使用 JSON Schema 固定格式,不接受自由格式文字。 - 不記錄音檔、逐字稿或 AI 回傳全文到試算表或日誌。 - 桌機與 390px 手機都不可水平溢出。 - 提供不呼叫 API 也能看的示範逐字稿與示範結果。 請不要省略程式碼,並在程式後列出部署步驟。
- Code.gs 提供 getAppConfig、transcribeAudio、organizeTranscript 與每日額度控制。
- Index.html 使用 MediaRecorder、FileReader 與 google.script.run 串起前後端。
- 整理 API 以 JSON Schema 限定欄位,空陣列也必須回傳,避免版面因自由文字失控。
- 另外提供示範逐字稿與示範結果,沒有 API Key 時仍能先檢查操作介面。
我沒有直接相信程式完整。先用本機伺服器跑示範流程,檢查 1440px 桌機和 390px 手機,再逐一測按鈕啟用、逐字稿字數與結果區塊。下一輪才針對實際裝置可能出現的音檔差異修正。
請針對目前版本做最小修改,不要改版面風格。 實測問題: 1. Chrome 錄音通常是 audio/webm;codecs=opus,後端白名單只寫 audio/webm 時可能誤判。 2. iPhone 上傳的錄音可能是 M4A 或 audio/mp4。 3. Base64 字串可能先超過限制,解碼後仍要再檢查一次實際位元組。 4. 麥克風拒絕授權、錄到空檔、檔案太大、API 逾時時,畫面都要恢復按鈕,不能一直停在處理中。 5. 手機版進度列目前只剩數字,仍要保留「取得內容、人工校對、整理匯出」。 請先逐項說明原因,再只提供需要替換的函式或 CSS。最後列出回歸測試項目。
- MIME type 應先去掉 codecs 參數,再對照允許清單。
- Base64 長度只能當第一層篩選,解碼後仍需檢查實際 byte 數。
- 每次 API 呼叫都要用 finally 關閉處理中畫面,避免按鈕永久鎖住。
- 手機版只隱藏進度說明,不應把三個主要步驟名稱一起隱藏。
這一輪只替換檔案驗證、處理中狀態與一條手機 CSS,沒有趁機重做版面。修完後重新跑桌機與手機截圖,確認沒有水平溢出,進度名稱也保留下來。
請以程式碼審查者角度檢查這個公開展示用的語音整理器,不要增加無關功能。 逐項回答「通過/需修改/無法判斷」: 1. OpenAI API Key 是否只在 Apps Script 伺服器端? 2. 使用者能否繞過前端 8 MB 限制直接送大檔? 3. 公開網址是否有每日呼叫上限,避免 API 被濫用? 4. 錯誤訊息是否可能把 API 回傳、Key 或逐字稿寫進前端? 5. 整理模型是否可能自行補人名、日期、負責人與期限? 6. 音檔、逐字稿與整理結果是否有被程式持久保存? 7. 是否有提醒使用者不要處理不適合送往外部 AI 的敏感資料? 8. 同一時間多人使用時,額度計數是否有鎖定? 請指出對應函式,最後只列必要修改與測試方式。
- API Key 只由 PropertiesService 讀取,前端拿不到;這項通過。
- 前後端都有 8 MB 限制,後端還會驗證 MIME 與解碼後位元組;這項通過。
- 公開服務需要全站每日上限並用 LockService 鎖定計數,避免同時請求超用。
- 模型規則要明寫不得補資料,仍須保留人工校對與未確認資訊;不能只靠格式 Schema。
我補上每日轉寫與整理次數上限,錯誤只回傳一般訊息,不把第三方 API 原文送到前端;頁面下方也加上敏感資料提醒。這些限制不漂亮,但公開展示時比多一個動畫更重要。
把程式放進 Google Apps Script
- 建立新的 Apps Script 專案,新增 `Code.gs` 與 `Index.html`,把下載包內的完整程式放入。
- 到「專案設定 → 指令碼屬性」新增 `OPENAI_API_KEY`。金鑰只放在這裡,不要貼進 HTML,也不要放在網址。
- 需要調整模型時,可新增 `TRANSCRIPTION_MODEL` 與 `TEXT_MODEL`;公開展示則可用 `DAILY_REQUEST_LIMIT` 控制每天可呼叫次數。
- 選擇「部署 → 新增部署作業 → 網頁應用程式」,完成授權後取得 `/exec` 網址。
官網公開的是不消耗 Token 的互動展示版,可操作示範逐字稿、整理結果、複製與下載;錄音與上傳內容不會送往外部 AI。下載程式自行部署並設定 API Key 後,才會啟用真實轉寫與整理。
Apps Script 本身與 AI API 是兩件事。AI 語音轉寫與文字整理會依 API 帳號用量計費,部署前要先確認供應商目前價格與帳號額度;公開展示也不應取消每日上限。
手機不是縮小版桌機,要單獨驗收
這類工具最常在手機現場使用,所以我把畫面固定用 390 × 844 再跑一次。按鈕要能單手按、文字區不能超出螢幕、三個步驟名稱要看得到,整理卡片則改成單欄。下面兩張是同一份實際頁面的錄音與整理畫面。


最後用一段真的工作內容驗收
測試時我不會只說「今天天氣很好」。我會刻意放進時間、地點、數量、異常、負責人與缺漏資料,例如:十二盞夜燈中十一盞正常、一盞感應距離太短;王小姐星期五以前聯絡廠商;另有兩戶電話還沒確認。
| 測試 | 預期結果 |
|---|---|
| 逐字稿把數量辨識錯 | 可在整理前直接修改 |
| 原文沒有照片期限 | 期限顯示「未指定」 |
| 原文只說「今天」 | 列進未確認資訊,提醒改成實際日期 |
| 上傳超過 8 MB | 前端先拒絕,繞過前端時後端仍拒絕 |
這套範例適合做到哪裡
它適合把短篇現場紀錄、巡檢內容或行政備忘整理成初稿,不適合直接處理醫療診斷、個案完整隱私資料、法律紀錄或需要逐字證據的內容。正式導入組織前,還要依資料敏感程度決定帳號權限、保存政策與是否改用封閉環境。
這次真正有用的不是「AI 幫我排版」,而是把錄音、人工確認、固定格式與公開防護接成一條可重複使用的流程。Prompt 只是其中一部分,能不能交給人使用,還是要靠實際裝置與異常情境一項一項驗收。