上課筆記系統重構|拍板卡

2026-09-17|為什麼現在的做法會出錯,該換成什麼,以及需要你決定的六件事

一句話結論
問題不在語音辨識不準,而在我把架構搞反了。課程內容早就有一份完全正確的書面版本——投影片 PDF。 我卻一直拿「聽打出來的逐字稿」當唯一真相,再用眼力去擋錯字。 正確做法是投影片當骨幹、逐字稿當註解。
怎麼看這份
左邊點一節看一節。每節開頭都有一句結論,趕時間只讀那一句就好。
真的很累的話,只看第 5 節(要你拍板的六件事),其他我照推薦做。

這份是怎麼寫出來的

我今天做了四件查證,不是靠印象:

做了什麼結果
統計三份逐字稿的已知錯字11,589 行裡出現 177 次
讀 faster-whisper 原始碼,確認參數真正的行為發現我早上加的功能幾乎無效
拿 10 分鐘音檔跑四組對照實驗找到一個會毀掉逐字稿的設定,也找到一個有效的
實測「投影片頁碼自動對到逐字稿時間」可行,關鍵頁全部對準

1 我實測出來的四個真相

結論:我上一則跟你講的建議,有兩項是錯的。實測把它們推翻了。

真相 1:我今天早上加的「課程詞彙提示」,對三小時的錄音幾乎沒用

我早上幫腳本加了「按課程切換詞彙」功能,看起來很合理。但我去讀了 faster-whisper 的原始碼 (faster_whisper/transcribe.py),發現機制是這樣的:

initial_prompt(我用的那個)只餵給第一個 30 秒視窗。
之後它靠一條「只留最後 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 詞 hotwords281 字(只剩 9%)—❌ 崩了
C55 詞 hotwords + float16328 字2.3x(慢 4.5 倍)❌ 又慢又崩

為什麼會崩:hotwords 和「前文」共用同一個 448 token 的空間,各自最多吃 223 個。 我塞的 766 字元把整個上下文吃光,模型沒地方吐字了。輸出變成斷斷續續的碎片。

這件事救了我一次
如果我照「文件說 hotwords 全程生效」直接改下去,會毀掉你以後所有的逐字稿, 而且症狀是「安靜地漏內容」——不會報錯,你要讀了才會發現。

真相 3:hotwords 壓到很短就有效,但只救一部分

改成只放 9 個真正會被聽錯的專有名詞(105 字元):

測試項A 現況D 短 hotwords
輸出字數(有沒有漏)3,0653,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 新做法長什麼樣

結論:把投影片每一頁當成筆記的一個小節,逐字稿自動對齊過去變成「老師在這頁說了什麼」。

新流程

1. 影片網址 → 下載音訊 → 轉單聲道
2. 跑逐字稿(設定沿用現況,只加短 hotwords)
3. 自動判斷這週用了哪份投影片(拿逐字稿去比對所有 PDF)
4. 自動把投影片頁碼對到逐字稿時間
5. 自動算每頁停留多久 → 決定哪幾頁要放圖
6. 產出「筆記草稿 + 投影片圖 + 待核對清單」
7. 我在草稿上寫人話(白話解釋、老師的比喻、對你的影響)
8. 丟 Notion

第 3~6 步是新的,而且是程式做的,不是我猜的。

第 4 步我已經實測過了

拿 NLP W2 測(正確答案我已經人工核對過)。原理很巧,就是老師這週剛講的 IDF—— 只挑「只在少數頁出現」的詞當定位錨點,再用動態規劃強制「投影片照順序播」。

投影片頁內容自動對到對不對
p9WATCH FOR KIDS0:23:00✅
p39資訊檢索、Yahoo 與 DMOZ1:25:00✅
p41Inverted Index1:30:30✅
p45Stemming1:41:30✅
p48向量空間模型1:50:00✅
p50IDF1:54:30✅
p57one-hot2:37:30✅
p58dense embedding2:41:00✅
p62WordNet2: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 幾組
裝簡繁轉換套件當保險零簡體殘留自動修掉
改 float16慢 4.5 倍已證實不值得

最划算的是第二項,而且它的對照表可以從投影片自動長出來(投影片有 Markov、逐字稿有 Markup、兩者發音接近 → 自動配對)。

4 今天挖到的坑

結論:我派人把兩門課的素材整個翻過一遍,找到七件你會想知道的事。

坑 1:NLP 今年的進度比去年慢一週

repo 裡 2025 和 2024 的 README 有完整的「第幾週上哪份投影片」對照表。對照之後:

週次2025 年上的2026 年(今年)實際上的
W1Syllabus + W1_NLP_briefSyllabus 全部 + W1_NLP_brief 開頭 5 頁
W2W2_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.m4a174 MB已轉成 58 MB 的單聲道版,原檔沒清
第二周1150917\[Fall 2026] …Week 2.info.json52 MB只是 YouTube 的中介資料,52 MB 異常大
2026\Slides\Note from Google DeepMind's…pdf1.4 MB ×2同一份檔案兩個檔名(空白版與底線版)並存

坑 7:整條工具鏈沒有任何簡繁轉換能力

我查過轉錄用的 Python 環境和系統 Python,兩邊都沒有 opencc、zhconv 之類的套件。 所以今天 NLP W1 那份簡體逐字稿,沒有辦法用程式修,只能重跑或人工改。

5 要你拍板的六件事

結論:六題都有我的推薦。你可以只回「照推薦做」,或挑幾題改。

決定 1 筆記裡要放多少張投影片圖?

A:按停留時間自動挑推薦
老師在那頁講超過 90 秒就放圖,翻過去的不放。一週大概 10~20 張。
代價:門檻是我訂的,偶爾會漏掉你想看的那頁(但原始 PDF 在硬碟,隨時能翻)。
B:每一頁都放
等於投影片完整搬進 Notion,一頁不漏。
代價:AI 課一章 30 頁、NLP 一份 95 頁,筆記會長到滑不完,重點被淹掉。

為什麼推薦 A:你的原話是「想花短一點時間學習的時候就到這邊看筆記」。B 沒解決這件事, 它只是把投影片換個地方放。而且 A 的門檻是資料算出來的,不是我憑感覺挑的。

決定 2 筆記要怎麼分節?

A:混合——大主題分節,節內按投影片順序推薦
例如「三、索引:Inverted Index」這一節裡,依序是 p40、p41、p42 的圖與說明。
代價:主題怎麼切要我判斷,但這正是筆記的價值所在。
B:投影片每頁一節,完全機械對應
好處是絕對不會錯位。
代價:一份 95 頁的投影片會變成 95 個小節,讀起來沒有脈絡,跟直接看 PDF 差不多。

決定 3 已經寫好的三份筆記怎麼辦?

A:只補投影片圖,文字不動推薦
三份筆記(NLP W1、NLP W2、AI W1)的文字我都已經對過投影片,品質可以。
代價:它們的分節方式跟以後的新筆記不完全一致。
B:用新流程整個重做
三份格式統一。
代價:花掉的時間拿去做 W3 比較划算,而且重做有機會弄壞現在已經正確的內容。

決定 4 要不要重跑 NLP W1 的逐字稿?

A:重跑推薦
現在那份 99.9% 是簡體字、專有名詞錯比較多。重跑約 15 分鐘,會得到繁體+錯字較少的版本。
代價:15 分鐘機器時間。Notion 上的 W1 筆記不用改,只是把底層證據檔補好。
B:不重跑
省 15 分鐘。
代價:以後要回頭查 W1「老師到底怎麼說的」會很痛苦。

決定 5 要不要統一兩門課的資料夾結構?

A:統一推薦
兩門課都變成:<課名>\W03_1150924\ 放音檔與逐字稿、<課名>\投影片\、 <課名>\投影片圖\、<課名>\作業\、<課名>\_接手卡.md。
NLP 的 git repo 原地不動,只在課程層多一個 投影片\ 指過去。
代價:會搬動現有檔案。我會先列出搬動清單給你看過再動,而且不刪任何東西。
B:不動,維持現狀
零風險。
代價:自動化腳本要為兩種結構各寫一套,以後每週都在付這個代價。

決定 6 要不要清掉那 226 MB 重複檔案?

A:清掉 info.json(52 MB),保留原始音檔推薦
info.json 只是 YouTube 的中介資料,沒有用。原始 .m4a/.webm 先留著當保險。
代價:幾乎沒有。
B:全部清掉(226 MB)
代價:如果以後想用不同設定重轉音檔,要重新下載。
順便提醒兩件缺料的事
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
1-2 的防線一定要做
今天測出來的崩壞是「安靜的」——不報錯,只是輸出變少。 所以腳本要自己檢查:輸出字數 ÷ 音檔分鐘數,低於門檻就停下來報錯,不要默默產出一份爛稿。

階段 2:回補與收拾

#做什麼依賴哪個決定
2-1重跑 NLP W1 逐字稿決定 4
2-2NLP 的 20 份投影片跑同一條流程—
2-3補投影片圖到已寫好的三份 Notion 筆記決定 1、3
2-4統一資料夾結構(先出搬動清單給你看)決定 5
2-5清重複檔案決定 6
2-6更新兩門課的接手卡(AI 那張已過期)—

階段 3:加分項(先不做,等前兩階段穩了再說)

時間怎麼花

階段誰在忙你要做什麼
階段 1我寫程式,中間會跑幾次驗證不用做事
階段 2機器跑逐字稿與截圖決定 5 的搬動清單要看一眼
以後每週機器跑草稿,我寫人話給我影片網址(跟 Slido 如果有)

怎麼驗證這次真的有改善

不能只說「感覺變好了」。驗收標準先講清楚:

要驗什麼怎麼驗通過的標準
逐字稿沒有安靜漏內容比對輸出字數 ÷ 音檔長度不低於現況的 90%
錯字真的變少拿今天那份 40 幾組錯字清單去數已知錯字歸零(對照表保證)
簡體字歸零數簡繁字佔比0%
投影片對齊沒錯位拿 NLP W2 當考題(答案我已人工核對)關鍵錨點頁全對、單調性 100%
筆記真的能快速複習你打開來讀你說可以才算可以

本報告的每一項判斷都來自實際查證(讀 faster-whisper 原始碼/跑四組對照實驗/統計三份逐字稿/ 盤點兩門課全部素材檔案),不是推測。唯一標明為推論的是「朝陽科大是衛星課程學校」—— 逐字稿把「朝陽」聽成「長陽」,我是從你的學校 email 反推的,已在 Notion 筆記裡標註。