上課筆記系統重構|拍板卡
2026-09-17|為什麼現在的做法會出錯,該換成什麼,以及需要你決定的六件事
一句話結論
問題不在語音辨識不準,而在我把架構搞反了。課程內容早就有一份完全正確的書面版本——投影片 PDF。 我卻一直拿「聽打出來的逐字稿」當唯一真相,再用眼力去擋錯字。 正確做法是投影片當骨幹、逐字稿當註解。
左邊點一節看一節。每節開頭都有一句結論,趕時間只讀那一句就好。
真的很累的話,只看第 5 節(要你拍板的六件事),其他我照推薦做。
這份是怎麼寫出來的
我今天做了四件查證,不是靠印象:
| 做了什麼 | 結果 |
|---|---|
| 統計三份逐字稿的已知錯字 | 11,589 行裡出現 177 次 |
| 讀 faster-whisper 原始碼,確認參數真正的行為 | 發現我早上加的功能幾乎無效 |
| 拿 10 分鐘音檔跑四組對照實驗 | 找到一個會毀掉逐字稿的設定,也找到一個有效的 |
| 實測「投影片頁碼自動對到逐字稿時間」 | 可行,關鍵頁全部對準 |
1 我實測出來的四個真相
結論:我上一則跟你講的建議,有兩項是錯的。實測把它們推翻了。
真相 1:我今天早上加的「課程詞彙提示」,對三小時的錄音幾乎沒用
我早上幫腳本加了「按課程切換詞彙」功能,看起來很合理。但我去讀了 faster-whisper 的原始碼
(faster_whisper/transcribe.py),發現機制是這樣的:
之後它靠一條「只留最後 223 個 token」的滾動視窗殘存。
中文幾十秒就把它擠出去 → 我那段一百多字的課程詞彙,撐不到第 2、3 個視窗。
但它不是完全沒用。證據在這裡:
| 逐字稿 | 有帶詞彙提示嗎 | 簡體字佔比 | 英文詞拼錯 |
|---|---|---|---|
| NLP W1 | 沒有 | 99.9% | GBT×14、Bird×7、TECA、Fintune |
| NLP W2 | 有 | 0% | 少很多 |
| AI W1 | 有 | 0% | 少很多 |
所以它對「開頭定調」有效(讓整份輸出繁體中文),對「全程詞彙約束」無效。
C:\D槽\TAICA課程\自然語言處理\第一周1150910\videoplayback.逐字稿.txt
這個檔整份是簡體字,而且專有名詞錯比較多。
W1 的 Notion 筆記本身沒問題(我當時有轉繁體、修錯字),但這個原始檔以後拿來查證會很難用。
真相 2:文件上寫「全程生效」的那個參數,加上去會毀掉整份逐字稿
hotwords 這個參數每個 30 秒視窗都會重新注入,看起來正是我要的東西。
我從投影片 PDF 自動抽了 55 個專有名詞當 hotwords(刻意不手寫,因為要能每週自動跑), 拿 AI 課 W1 的 02:06:00–02:16:00 這 10 分鐘實測:
| 組別 | 設定 | 輸出字數 | 速度 | 判定 |
|---|---|---|---|---|
| A | 現況 | 3,065 字 | 10.5x 實時 | 基準 |
| B | 加 55 詞 hotwords | 281 字(只剩 9%) | — | ❌ 崩了 |
| C | 55 詞 hotwords + float16 | 328 字 | 2.3x(慢 4.5 倍) | ❌ 又慢又崩 |
為什麼會崩:hotwords 和「前文」共用同一個 448 token 的空間,各自最多吃 223 個。 我塞的 766 字元把整個上下文吃光,模型沒地方吐字了。輸出變成斷斷續續的碎片。
如果我照「文件說 hotwords 全程生效」直接改下去,會毀掉你以後所有的逐字稿, 而且症狀是「安靜地漏內容」——不會報錯,你要讀了才會發現。
真相 3:hotwords 壓到很短就有效,但只救一部分
改成只放 9 個真正會被聽錯的專有名詞(105 字元):
| 測試項 | A 現況 | D 短 hotwords |
|---|---|---|
| 輸出字數(有沒有漏) | 3,065 | 3,266(107%,沒漏) |
backpropagation | 聽成「被 propagation」 | 修好了 |
ImageNet | 聽成「EVGENET」 | 修好了,出現 4 次 |
Turing Award | — | 正確出現 |
Markov | — | 還是「Markup」×8 |
所以 hotwords 不是萬靈丹。我把 Markov 放進去了,它還是聽成 Markup 八次。
(一個要修正的數字:D 組簡體字 9.6% 看起來變差,但那是我測試時同時也改短了 prompt,兩個變數混在一起,不能算 hotwords 的帳。)
真相 4:「用更高精度換品質」這條路在你的電腦上是死路
你的顯卡是 RTX 3060 Laptop,6 GB 記憶體,模型權重本身就 3 GB。
| 精度設定 | 速度 | 3 小時的課要跑多久 |
|---|---|---|
int8_float16(現在用的) | 8~10.5x 實時 | 約 15~20 分鐘 |
float16(更高精度) | 2.3x 實時 | 約 78 分鐘 |
現在的設定已經是對的。不要再往這個方向調。
2 真正的根因:我把架構搞反了
結論:語音辨識的錯字是症狀。病根是「我拿逐字稿當唯一真相來源」。
現在的流程
在這個設計裡,逐字稿是唯一的資訊來源。所以:
- 每一個辨識錯誤都可能變成筆記錯誤
- 我只能靠「自己眼力好」去擋
- 我抓到的錯我修了,我沒抓到的,你不會知道
我一開始算出「NLP W1 只有 2 個錯字」,覺得它比較準。 一抽查就找到
GBT×14、Bird×7、整份 99.9% 簡體字。
我的統計清單本身就有偏差——它只包含「我剛好注意到的錯」。
被我忽略的事實:正確答案早就印好了
「Lemmatization」「Hidden Markov Model」「stop words」「Actuator」這些詞, 投影片 PDF 裡本來就是印好的正確文字。
我卻一直在跟語音辨識搏鬥,想把老師嘴巴講出來的音,還原成這些詞。這是白費力氣。
那逐字稿的價值在哪?
投影片給不了、只有錄音有的東西——而這些正好是筆記最值錢的部分:
| 只有錄音有 | 實際例子 |
|---|---|
| 他實際講了哪幾頁、跳過哪幾頁 | NLP W2 講到 p64 就下課 |
| 哪一頁講了 8 分鐘、哪一頁 10 秒翻過 | 這直接等於「重點在哪」 |
| 投影片上沒印的話 | 「考試也許會有一題叫你們算 TF-IDF」 |
| 行政資訊 | 10/1 交作業、12/10 考試鎖 IP |
| 他的判斷與吐槽 | 「除非你是川普肚子裡的一隻蛔蟲」 |
| 課堂問答 | Slido 的回答 |
換架構之後,這些問題同時消失
| 現在的問題 | 換架構後 |
|---|---|
| 專業術語辨識錯 | 不再重要,術語從 PDF 拿 |
| 我得自己判斷哪幾頁是「關鍵圖」 | 不用判斷。他講超過 N 分鐘的頁就放圖 |
| 不知道他講到第幾頁 | 算出來的,不是我猜的 |
| 不知道他用哪份投影片 | 自動比對所有 PDF 挑最像的 |
| 你要的「講到這個演算法就有那張圖」 | 架構上天生如此 |
3 新做法長什麼樣
結論:把投影片每一頁當成筆記的一個小節,逐字稿自動對齊過去變成「老師在這頁說了什麼」。
新流程
2. 跑逐字稿(設定沿用現況,只加短 hotwords)
3. 自動判斷這週用了哪份投影片(拿逐字稿去比對所有 PDF)
4. 自動把投影片頁碼對到逐字稿時間
5. 自動算每頁停留多久 → 決定哪幾頁要放圖
6. 產出「筆記草稿 + 投影片圖 + 待核對清單」
7. 我在草稿上寫人話(白話解釋、老師的比喻、對你的影響)
8. 丟 Notion
第 3~6 步是新的,而且是程式做的,不是我猜的。
第 4 步我已經實測過了
拿 NLP W2 測(正確答案我已經人工核對過)。原理很巧,就是老師這週剛講的 IDF—— 只挑「只在少數頁出現」的詞當定位錨點,再用動態規劃強制「投影片照順序播」。
| 投影片頁 | 內容 | 自動對到 | 對不對 |
|---|---|---|---|
| p9 | WATCH FOR KIDS | 0:23:00 | ✅ |
| p39 | 資訊檢索、Yahoo 與 DMOZ | 1:25:00 | ✅ |
| p41 | Inverted Index | 1:30:30 | ✅ |
| p45 | Stemming | 1:41:30 | ✅ |
| p48 | 向量空間模型 | 1:50:00 | ✅ |
| p50 | IDF | 1:54:30 | ✅ |
| p57 | one-hot | 2:37:30 | ✅ |
| p58 | dense embedding | 2:41:00 | ✅ |
| p62 | WordNet | 2:55:00 | ✅ |
單調性 100%(頁碼往前走,時間不會回頭)。
95 頁裡有把握對上的是 40 頁,其餘要靠「夾在兩個有把握的錨點之間」推估。 錯的還有兩處:cosine 那頁被放到 2:25(該在 2:00 左右),最後一頁判到 p73(實際是 p64)。 所以要有「信心標記」:對得準的直接用,推估的標成「約」,讓我複核。
還是只有錄音有、而且會錯的三類東西
換架構後,剩下這三類必須另外設防線。數量很少但很致命:
| 類別 | 例子 | 防線 |
|---|---|---|
| 日期與期限 | 10/1 交作業、12/10 考試 | 必須有第二來源(官網/README/Notion) |
| 人名、機構名 | Chris Manning、朝陽科大 | 標成「推論」,不能寫得像事實 |
| 數字 | 450 條規則、30% 錯誤率 | 投影片上有的就用投影片的 |
這三類會做成自動產生的「待核對清單」,跟筆記一起出。
語音辨識這層還是要修,但降級成配角
| 做法 | 風險 | 效果 |
|---|---|---|
| 短 hotwords(≤10 詞,從投影片自動抽) | 中(太長會崩,要鎖上限) | 修掉一部分英文詞 |
| 跑完之後用對照表自動改錯字 | 零(就是取代文字) | 100% 可靠修掉已知的 40 幾組 |
| 裝簡繁轉換套件當保險 | 零 | 簡體殘留自動修掉 |
| 慢 4.5 倍 | 已證實不值得 |
最划算的是第二項,而且它的對照表可以從投影片自動長出來(投影片有 Markov、逐字稿有 Markup、兩者發音接近 → 自動配對)。
4 今天挖到的坑
結論:我派人把兩門課的素材整個翻過一遍,找到七件你會想知道的事。
坑 1:NLP 今年的進度比去年慢一週
repo 裡 2025 和 2024 的 README 有完整的「第幾週上哪份投影片」對照表。對照之後:
| 週次 | 2025 年上的 | 2026 年(今年)實際上的 |
|---|---|---|
| W1 | Syllabus + W1_NLP_brief | Syllabus 全部 + W1_NLP_brief 開頭 5 頁 |
| W2 | W2_Word embeddings | 還在上 W1_NLP_brief(到 p64) |
所以對你的影響是:可以拿 2025 的表當今年的路線圖,但要往後推一週看。
W3(9/24)預計是講完 W1_NLP_brief 剩下的 p64–p90,然後才進 W2_Word embeddings。
坑 2:NLP 今年的作業區是空的,但去年的完整可用
2026/Assignments/ 底下只有一個空的 README 表格,沒有任何檔案。
但 2025/Assignments/ 有四份作業的完整素材:main.ipynb、資料檔(csv/txt)、
Word 報告範本、作業說明 PDF,README 還附助教教學影片連結。
老師 W2 課堂上也說「GitHub 上點回 2025 或 2024,作業不太改變,但難度會稍微調高」。 所以去年的素材就是今年的預習材料。
坑 3:AI 課的 Word 範本跟老師的要求互相矛盾
作業範本\Template.docx 其實是CVPR 官方 Word 範本原檔(CVPR 2024 世代,作者欄寫 Wu Jianxin),
不是老師客製的。裡面明寫論文長度「excluding references, no longer than eight pages」, 但老師的 HW1 要求是1~2 頁。
照老師的,不要照範本裡的字。範本只拿它的排版樣式(雙欄、10pt Times、章節樣式)。
另外同資料夾的 author-kit-CVPR2026.zip 是LaTeX 版(比 Word 版新,CVPR 2026),
章節切成 sec/0_abstract.tex、1_intro.tex 這樣獨立的檔。
坑 4:兩門課的資料夾長得完全不一樣
| 面向 | 自然語言處理 | 人工智慧導論 |
|---|---|---|
| 投影片放哪 | 在 git repo 裡(英文路徑) | 獨立的 投影片\(中文路徑) |
| 投影片命名 | W1_、W3_Transformers(週次前綴,但跟實際週次錯開) | Chapter 1 Introduction(章節,無週次) |
| 有沒有年份層 | 有 2024/2025/2026 三代可比對 | 沒有,只有本學期 |
| 錄音檔命名 | W1 完全沒改名(videoplayback.m4a)、W2 才照規範 | 照規範 |
| 週次進度表 | repo README(權威,但今年只填到 W2) | 沒有任何檔案,散在接手卡與逐字稿裡 |
| 課堂問答紀錄 | 有 SLIDO.txt | 沒有 |
| 有沒有 git | 有 | 沒有 |
坑 5:AI 課的接手卡已經過期
人工智慧導論\_接手卡.md 上還寫著「投影片不知道放哪」「範本尚未取得」「逐字稿排隊中」,
但這三件事今天都做完了。接手卡沒跟上,下次開機會誤導。
坑 6:硬碟有 226 MB 的重複檔案
| 檔案 | 大小 | 狀況 |
|---|---|---|
第二周1150917\[Fall 2026] …Week 2.m4a | 174 MB | 已轉成 58 MB 的單聲道版,原檔沒清 |
第二周1150917\[Fall 2026] …Week 2.info.json | 52 MB | 只是 YouTube 的中介資料,52 MB 異常大 |
2026\Slides\Note from Google DeepMind's…pdf | 1.4 MB ×2 | 同一份檔案兩個檔名(空白版與底線版)並存 |
坑 7:整條工具鏈沒有任何簡繁轉換能力
我查過轉錄用的 Python 環境和系統 Python,兩邊都沒有 opencc、zhconv 之類的套件。
所以今天 NLP W1 那份簡體逐字稿,沒有辦法用程式修,只能重跑或人工改。
5 要你拍板的六件事
結論:六題都有我的推薦。你可以只回「照推薦做」,或挑幾題改。
決定 1 筆記裡要放多少張投影片圖?
老師在那頁講超過 90 秒就放圖,翻過去的不放。一週大概 10~20 張。
代價:門檻是我訂的,偶爾會漏掉你想看的那頁(但原始 PDF 在硬碟,隨時能翻)。
等於投影片完整搬進 Notion,一頁不漏。
代價:AI 課一章 30 頁、NLP 一份 95 頁,筆記會長到滑不完,重點被淹掉。
為什麼推薦 A:你的原話是「想花短一點時間學習的時候就到這邊看筆記」。B 沒解決這件事, 它只是把投影片換個地方放。而且 A 的門檻是資料算出來的,不是我憑感覺挑的。
決定 2 筆記要怎麼分節?
例如「三、索引:Inverted Index」這一節裡,依序是 p40、p41、p42 的圖與說明。
代價:主題怎麼切要我判斷,但這正是筆記的價值所在。
好處是絕對不會錯位。
代價:一份 95 頁的投影片會變成 95 個小節,讀起來沒有脈絡,跟直接看 PDF 差不多。
決定 3 已經寫好的三份筆記怎麼辦?
三份筆記(NLP W1、NLP W2、AI W1)的文字我都已經對過投影片,品質可以。
代價:它們的分節方式跟以後的新筆記不完全一致。
三份格式統一。
代價:花掉的時間拿去做 W3 比較划算,而且重做有機會弄壞現在已經正確的內容。
決定 4 要不要重跑 NLP W1 的逐字稿?
現在那份 99.9% 是簡體字、專有名詞錯比較多。重跑約 15 分鐘,會得到繁體+錯字較少的版本。
代價:15 分鐘機器時間。Notion 上的 W1 筆記不用改,只是把底層證據檔補好。
省 15 分鐘。
代價:以後要回頭查 W1「老師到底怎麼說的」會很痛苦。
決定 5 要不要統一兩門課的資料夾結構?
兩門課都變成:
<課名>\W03_1150924\ 放音檔與逐字稿、<課名>\投影片\、
<課名>\投影片圖\、<課名>\作業\、<課名>\_接手卡.md。NLP 的 git repo 原地不動,只在課程層多一個
投影片\ 指過去。代價:會搬動現有檔案。我會先列出搬動清單給你看過再動,而且不刪任何東西。
零風險。
代價:自動化腳本要為兩種結構各寫一套,以後每週都在付這個代價。
決定 6 要不要清掉那 226 MB 重複檔案?
info.json(52 MB),保留原始音檔推薦info.json 只是 YouTube 的中介資料,沒有用。原始 .m4a/.webm 先留著當保險。代價:幾乎沒有。
代價:如果以後想用不同設定重轉音檔,要重新下載。
1. 今天(9/17)AI 課 W2 的影片連結——課是 13:10–16:00,錄影上架後給我網址。
2. AI 課的 Slido 問答——活動編號是
#1686863,你能匯出就丟給我,筆記會完整很多。
6 執行計畫
結論:分三階段。第一階段把「每週一鍵」做出來,第二階段回補舊筆記,第三階段才做加分項。
階段 1:把每週流程變成一個指令
| # | 做什麼 | 產出 |
|---|---|---|
| 1-1 | 裝簡繁轉換套件(opencc) | 簡體殘留能自動修 |
| 1-2 | 改 transcribe_class.py:短 hotwords(鎖上限 ≤120 字元,防止今天那種崩壞)+跑完自動套錯字對照表+簡繁轉換 | 逐字稿品質提升,且不會安靜壞掉 |
| 1-3 | 新寫 align_slides.py:自動判斷用了哪份投影片、把頁碼對到時間、算每頁停留秒數、標信心高低 | 一份 對齊表.json |
| 1-4 | 新寫 make_week_draft.py:吃對齊表 → 截需要的投影片圖 → 產出筆記草稿(含「待核對清單」) | 草稿 md + 一批 PNG |
| 1-5 | 新寫 run_week.py:把上面全部串起來,一個指令跑完 | run_week.py --course ai --week 2 --url ... |
| 1-6 | 建立錯字對照表檔(兩門課各一份,可累積) | ~/.claude/scripts/asr_fixes_{nlp,ai}.txt |
今天測出來的崩壞是「安靜的」——不報錯,只是輸出變少。 所以腳本要自己檢查:輸出字數 ÷ 音檔分鐘數,低於門檻就停下來報錯,不要默默產出一份爛稿。
階段 2:回補與收拾
| # | 做什麼 | 依賴哪個決定 |
|---|---|---|
| 2-1 | 重跑 NLP W1 逐字稿 | 決定 4 |
| 2-2 | NLP 的 20 份投影片跑同一條流程 | — |
| 2-3 | 補投影片圖到已寫好的三份 Notion 筆記 | 決定 1、3 |
| 2-4 | 統一資料夾結構(先出搬動清單給你看) | 決定 5 |
| 2-5 | 清重複檔案 | 決定 6 |
| 2-6 | 更新兩門課的接手卡(AI 那張已過期) | — |
階段 3:加分項(先不做,等前兩階段穩了再說)
- 拿 2025 的週次↔投影片對照表,往後推一週做成今年的預測路線圖,讓我提前把下週投影片備好
- 把 2025 的四份作業素材整理成「今年作業的預習包」
- Slido 問答自動併進筆記
時間怎麼花
| 階段 | 誰在忙 | 你要做什麼 |
|---|---|---|
| 階段 1 | 我寫程式,中間會跑幾次驗證 | 不用做事 |
| 階段 2 | 機器跑逐字稿與截圖 | 決定 5 的搬動清單要看一眼 |
| 以後每週 | 機器跑草稿,我寫人話 | 給我影片網址(跟 Slido 如果有) |
怎麼驗證這次真的有改善
不能只說「感覺變好了」。驗收標準先講清楚:
| 要驗什麼 | 怎麼驗 | 通過的標準 |
|---|---|---|
| 逐字稿沒有安靜漏內容 | 比對輸出字數 ÷ 音檔長度 | 不低於現況的 90% |
| 錯字真的變少 | 拿今天那份 40 幾組錯字清單去數 | 已知錯字歸零(對照表保證) |
| 簡體字歸零 | 數簡繁字佔比 | 0% |
| 投影片對齊沒錯位 | 拿 NLP W2 當考題(答案我已人工核對) | 關鍵錨點頁全對、單調性 100% |
| 筆記真的能快速複習 | 你打開來讀 | 你說可以才算可以 |
本報告的每一項判斷都來自實際查證(讀 faster-whisper 原始碼/跑四組對照實驗/統計三份逐字稿/ 盤點兩門課全部素材檔案),不是推測。唯一標明為推論的是「朝陽科大是衛星課程學校」—— 逐字稿把「朝陽」聽成「長陽」,我是從你的學校 email 反推的,已在 Notion 筆記裡標註。