逐字稿文字預覽
一億兩千五百萬參數、不連網,手機上就能秒接你彈的旋律—— 這算你的創作,還是作弊? MIT授權開源模型直接嗆Claude Opus 4. 8! 可是自我改進根本是行銷話術? ? ? 今天第一則。 一億兩千五百萬參數、每秒一百零八個音符—— 而且完全在一支 iPhone 上跑完,不連網。 這是獨立開發者 simedw 在二零二六年八月二十號發的文章 ,他訓練了一個 transformer 模型, 幫你的鋼琴演奏做自動補全。 你可能會問「等等等等—— 自動補全鋼琴? ? 是我彈幾個音,它就接著幫我彈下去的意思嗎? 」 ——對。 就是這個意思。 概念跟寫程式那個 GitHub Copilot 一模一樣, 差別在輸入不是程式碼、是你按下去的音符。 你可能會問「完全在手機上? ? 所以我在飛機上關機模式也能用? 他一個人做到這個⋯⋯是天才嗎? 」 —— 他提到這是經過十四次實驗才走到目前這個階段。 成果做成一個免費 App 叫 RollTab。 十四次⋯⋯聽起來前面十三次都很慘。 那他到底怎麼教模型看懂音樂? 樂譜又不是文字。 這就是最有料的部分。 他用 MIDI 檔——記錄音高、時間、 力度的樂譜格式,不是錄音檔。 裝 miditok 跟 symusic 這兩個套件, 然後從 miditok 匯入 REMI 跟 Tokenize rConfig、從 symusic 匯入 Score, 設 config 等於 TokenizerConfig, 裡面把 num_velocities 設成十六、 use_chords 跟 use_programs 都打開, tokenizer 等於 REMI 包住 config, 再讓 midi 等於 Score 讀進你的 MIDI 檔路徑 、tokens 等於 tokenizer 處理 midi, 還能把 tokens 丟回 tokenizer 轉回 MIDI 驗證。 I 驗證。 所以具體來說就是——我把一堆鋼琴曲的 MIDI 丟進去, 那句 num_velocities 十六就是把「按多用力」 切 成十六格,和絃跟樂器也各自標記, 最後整首曲子被切成一串像單字一樣的東西,模型才讀得懂? 對,方向完全正確。 而且他還訓練自己的詞彙表: 建好 config 跟 tokenizer 之後, 拿你自己收集的 MIDI 路徑清單呼叫 tokenizer. train(vocab_size=30000, files_paths=files_paths), 再 tokenizer. save 存檔, 也可以 tokenizer. push_to_hub 丟到 Hugging Face 分享。 ugging Face 分享。 那後面那個 DPO 呢? 我只知道它是讓模型「往好的方向調」 , 但好是誰說了算? 拿兩段接續給人聽,人指出哪一段比較順耳, 訓練就把模型往順耳那段的寫法推、另一段的機率壓下去。 實作很短:裝 trl 套件, 從 trl 匯入 DPOTrainer、 從 datasets 匯入 load_dataset, 接著呼叫 DPOTrainer, model 指定 Qwen 二點五 的零點五 B 指令版這個 模型, train_dataset 用 load_dataset 載 入 trl-lib 那份 ultrafeedback binarized 的訓練集, arized 的訓練集, 然後 trainer 點 train。 懶得寫程式就終端機一行:先打 trl dpo, model_name_or_path 指定 Qwen 二點五 的零點五 B 指令版這個模型, dataset_name 指定 trl-lib 那份 ultrafeedback binarized 資料集。 rafeedback binarized 資料集。 一行就能跑? 那我家那張破顯卡會不會直接爆掉⋯⋯ 會,不過這類情況常見的做法就是縮小每次餵進去的批次、 改用梯度累積,等於一次只餵少少幾筆進去、 累積幾次再更新一次權重,記憶體撐得住、 效果跟一次餵一大批差不多。 喔——所以是把一大口拆成八小口慢慢吞,胃小的人也吃得完。 那社群反應好嗎? 兩極。 Hacker News 上有人覺得效果不錯、 稱讚這點子;pil0u 說他接觸 AI 這麼多年, 還是被這個 App 驚艷到;noman-land 更狠, 說這是第一個真正有潛力產出優美旋律的 AI 音樂作品; tom_vidal 則說自動補全這概念, 其實跟古典作曲家的訓練方式有相通之處。 那罵的呢? 我猜一定有人氣炸。 bubblegumcrisis 強烈反感, 說這助長人們不願意真正學樂器; ghm2199 覺得讓機器生成音符是剝奪即興演奏的樂趣; rajivayyangar 質疑效果沒比簡單的馬可夫模型好多 少;tescreal 說這只是新奇小把戲, 而且很多人對 AI 進藝術本來就特別反感。 我的立場很明確: 我覺得這篇的價值不在音樂,在於它把「一個人、十四次實驗、 端上手機」 這條路整套公開,這是今年少見誠實的技術文。 那我直球問——AI 幫你把旋律接完,這還算你的創作嗎? 還是根本就是作弊? 要我說,這跟 IDE 幫你補完函式名沒兩樣。 你決定要往哪走、 它幫你打字。 真的作弊是你按兩個音就掛名作曲家—— 那不是工具的問題,是你的問題。 那 rajivayyangar 說「沒比馬可夫模型好多少」 , 是不是打臉整篇? 花這麼大力氣搞 transformer 有意義嗎? 我認為那句話有一半對、一半不重要。 短接續確實聽起來像, 但真正差別在能在 iPhone 上即時跑到每秒一百零八個音符 還不失控——工程難度在那裡,不在炫技。 那這則跟我這種不彈琴的普通上班族,有關嗎? 我要做什麼? 對你的一句話結論是——一個人、一支手機、十四次實驗, 就能把一個能即時創作的 AI 塞進口袋、還免費送出來, 這代表「AI 一定要連雲端」 這件事正在鬆動, 你以後很多 app 會在斷網時照樣聰明。 行動上: 一般人知道這個風向就好、什麼都不用做, 這則純粹是給你一個很酷的談資, 下次有人說 AI 一定要燒大機房,你可以講這個例子; 要更積極的兩種人——會彈琴或做音樂的,去玩玩看, App 叫 RollTab、免費,彈四個音聽它接; 想學微調的工程師, 回去查一下 miditok 跟 trl 這兩個套件, 照他那段 DPOTrainer 的程式碼跑一次, 你就懂偏好訓練到底在幹嘛。 第二則。 換個方向。 有個 Hacker News 使用者 simonw 講了一句 很嗆的話——「自我改進的說法具誤導性,那只是訓練流程、 不是推理時的自我迭代。 」 他在酸的, 就是今天要講的 Ornith-1. 5 開源模型家族。 等等——先講一下這家族到底是什麼? 我完全沒聽過欸! 三種規模:九十億參數的密集模型, 還有三百五十億跟三千九百七十億參數的 MoE 混合專家架構( 就像一間公司裡養了很多不同科的師傅,每次來一張單子, 只叫其中兩三個相關的師傅出來做,其他人在旁邊休息, 所以人很多但每次真正動工的很少,跑起來就省電又快)。 官方宣稱推理、agentic(意思是它不只回你一段話, 而是能自己一步一步動手,像助理自己去翻資料、自己打開工具、 做完一件事再接著做下一件)、寫程式的表現, 媲美 Claude Opus 4. 8。 而且—— 全部 MIT 授權,商業用途不受限。 你可能會問「MIT 授權? ? 所以就是⋯⋯ 我開公司拿去賣錢也沒人管? 」 ——對。 就是這個意思。 而且 FP8、GGUF、MLX、 NVFP4 量化格式(把原本又大又精細的模型檔案壓成比較粗略 的版本,就像把無損音樂壓成小一點的檔, 聽起來差不多但容量小很多,普通電腦才塞得下)全給,vLLM、 Ollama 這些推理框架(可以想成播放器, 模型檔案本身只是一堆資料,要有這種程式把它讀起來、 讓你能打字問問題)也火速接上了。 你可能會問「那它主打的「端到端自我改進」 (意思是從頭到尾整 套流程都不用人插手,出題、練習、批改、進步全部自己來, 像一個學生自己買參考書、自己出考卷、自己訂正, 家長完全不用管)呢? 聽起來很科幻⋯⋯ 是說 AI 自己教自己? 」 ——流程是:模型自己提出新任務, 自己產生對應的任務鷹架(就是先幫這題搭好一個解題架子, 寫清楚第一步要做什麼、第二步要做什麼、答案長什麼樣才算對, 像蓋房子前先搭的那層鷹架,蓋好就拆掉), 再用強化學習(做對了就給糖、做錯了就沒糖, 反覆練幾百萬次之後它自己摸出哪種做法會拿到糖, 像訓練狗學動作那樣)跑出解答、從解答裡學。 等於不斷幫自己造新的訓練經驗, 把前代 Ornith-1. 0 的自我鷹架策略擴成完整迴圈。 喔——所以具體像是,它自己出一份考卷、自己搭好答題的步驟表, 然後自己寫十遍、挑寫得最好的那遍當教材餵回去? 方向對。 更精準說,強化學習(做對就給糖、做錯就沒糖, 一直反覆練到它自己抓到訣竅)是靠獎勵訊號(就是每寫完一次會被 打一個分數,分數高的做法以後就多做,分數低的就少做, 像遊戲裡每過一關跳出來的得分)評分, 不是「挑最好那遍」 這麼直覺,但精神就是自己造題自己練。 那我這種普通工程師,實際怎麼跑起來? 很難嗎? 最懶的一行:在終端機打 ollama run, 後面接 ornith 一點五 的九十億參數版本。 想用 llama. cpp 就執行 llama-server, 指定 Hugging Face 上 ornith ai 帳號 底下、Ornith 一點五 九十億參數的 GGUF 版本, 連接埠設八千。 Python 端用 Transformers 的 AutoProcessor 跟 AutoModelForMultimodalLM, rocessor 跟 AutoModelForMultimodalLM, from_pretrained 指到 ornith ai 帳 號底下的 Ornith 一點五 九十億參數版本, device_map 設 auto。 那如果我要架成服務給整個團隊用呢? 用 vllm serve 起 ornith ai 帳號底下的 Ornith 一點五 九十億參數模型, 參數加上 max-model-len 設二十六萬兩千一百四十 四、 gpu-memory-utilization 設零點九零、 enable-prefix-caching(把每次對話開頭那 段一模一樣的內容算過一次就先存起來, 下次再遇到同樣開頭就直接拿來用,不用重算, 像便利商店先把常賣的關東煮煮好放著)、 enable-auto-tool-choice、 tool-call-parser 選 qwen3_xml、 reasoning-parser 選 qwen3, 再加 trust-remote-code。 或者用 SGLang 啟動 launch_server, model-path 指到 ornith ai 帳號底下的 Ornith 一點五 九十億參數版本, context-length 設二十六萬兩千一百四十四, mem-fraction-static 設零點八五。 架好之後用 OpenAI 的 SDK 打本機位址、 連接埠八千的 v1 路徑, api_key 填 EMPTY 就好, 取樣參數 temperature 設零點六、 top_p 設零點九五。 這麼順⋯⋯前代 397B 那隻也一樣跑法嗎? 前代範例是用 vllm serve 起 deepreinfo rce ai 帳號底下的 Ornith 一點零 三千九百七十 億參數版本, 再加 tensor-parallel-size 設八(意思是 這個模型太大一張顯示卡裝不下,就把它切成八份分給八張卡, 八張卡同時算再把結果拼回來,像一份大工程分給八個人一起做), 取樣建議 temperature 設零點六、 top_p 設零點九五、top_k 設二十。 我的立場: 這種一行指令就能本機跑、又 MIT 授權的, 我覺得比任何 benchmark 數字都值錢。 但社群真的買單嗎? 我不太信官方自己講的話欸⋯⋯ 正反都有。 但反面很兇—— kennywinker 質疑團隊在強化學習(讓模型自己一直練 、做對給糖做錯不給, 慢慢練出本事的那套訓練方式)訓練過程的透明度。 那我直接問尖銳的—— 他們是不是根本只是拿 Qwen 或 Gemma 基底去針對 benchmark 優化,然後包裝成「自我改進」 ? 社群先前對 Ornith 一點零 就有這個質疑, 到了 一點五 也還沒散掉。 要我說, 我站 simonw 那邊——「自我改進」 這詞行銷成分太重, 它是訓練流程,不是模型上線後還會自己變聰明。 但我也認為, 包裝歸包裝,權重真的丟出來給你 MIT 隨便用, 這誠意勝過九成只發論文的團隊。 那第二個問題—— 開源都追到宣稱媲美 Claude Opus 4. 8 了, 那些一年繳幾萬塊訂閱費的公司,是不是被當盤子? 我認為還不到。 宣稱歸宣稱, v3ss0n 那個長對話工具呼叫幻覺就是致命傷—— 真正的 agentic工作流最吃的就是穩定度。 我的判斷是: 開源負責把價格天花板打下來,閉源負責可靠度,短期內兩邊都活。 那這則跟我這種不寫 code 的普通上班族,有關嗎? 我要做什麼? 對你的一句話結論是—— 以後公司內部那種要吃機密資料的 AI 助理, 可以完全跑在自家電腦裡、不用把資料傳出去, 這代表「怕外洩所以不能用 AI」 這個藉口正在消失, 你們公司導入 AI 的速度會變快。 行動上:一般上班族, 知道這個風向就好、什麼都不用做,順便幫你擋一件事—— 別看到開源就衝去買高階顯卡跑本機模型, 社群實測長對話還會出包,省下你一筆硬體錢。 要更積極的有兩種——如果你是工程師,去玩玩看, 在終端機打 ollama run, 後面接 ornith 一點五 的九十億參數版本, 十分鐘就知道值不值;如果你在法務、醫療、 金融這種資料不能外流的產業當 PM,回去查一下, 問你們技術部門有沒有評估過本機開源模型這條路。 第三則。 想像一下這個畫面——你打開 ChatGPT, 貼上那套你已經用到滾瓜爛熟的剪片指令, 結果出來的東西又有點怪,你又要手動修。 在 2026 年八月十九號, The Rundown 這個專門教人用 AI 工具的教學網站 ,就丟出一篇教學,叫 Loop
本次執行流程與問題處理
下達指令
預期流程
- 採用來源字幕(略過語音辨識)
- 來源選擇與品質檢查
- 文字校正與句子單元
- 筆記與發布
- 公開網頁發布
1. 下載與語音辨識
工具:videonote-transcribe-url(主辨識管線:下載、Whisper 辨識與選稿)
處理:下載音訊、以 Whisper 辨識並選出最佳逐字稿
產出:yt_dlp_meta.json(影片元資料)、audio_16k_mono.wav(16kHz 單聲道音訊)、transcript.whisper.json(Whisper 辨識結果)、transcript.json(正式逐字稿)、transcript_selection_report.json(來源選擇報告)
耗時:5.5 秒
關係:依序執行
結果:完成
2. 全文快速校讀
工具:videonote_rapid_transcript_review.py
處理:先速讀完整逐字稿,再修正高可信突兀詞句並列出待確認項目
產出:rapid_transcript_review_report.json(產出檔案)
耗時:45.2 秒
關係:依序執行
結果:完成
3. 建立句子單元
工具:videonote-build-sentence-units
處理:將逐字稿切成帶時間軸的句子單元
產出:sentence_units.json(句子單元)
耗時:0.3 秒
關係:依序執行
結果:完成
4. 時間軸稽核
工具:videonote_timeline_audit.py
處理:檢查時間軸與音訊對齊
產出:timeline_audit_report.json(時間軸稽核)
耗時:0.3 秒
關係:依序執行
結果:完成
5. 品質檢查
工具:videonote_controlled_quality.py(檢查時間軸與品質)
處理:檢查語言、時間軸與可讀性品質
產出:controlled_quality_report.json(品質報告)、language_sanity_report.json(語言檢查)
耗時:0.3 秒
關係:依序執行
結果:完成
6. 播放時間軸回填
工具:videonote_rebase_display_timeline.py
處理:將網頁播放時間軸回填為校正字幕時間
產出:display_timeline_rebase_report.json(時間軸回填報告)
耗時:0.4 秒
關係:依序執行
結果:完成
7. 來源句整理
工具:videonote_prepare_source_entries.py
處理:整理來源句子供時間軸與頁面使用
產出:sentence_units.json(句子單元)
耗時:0.4 秒
關係:依序執行
結果:完成
8. 生成筆記摘要
工具:videonote-generate-note(生成筆記摘要)
處理:生成筆記摘要與重點
產出:note.md(筆記 Markdown)、note.html(筆記 HTML)
耗時:205.5 秒
關係:依序執行
結果:完成
9. 建立筆記頁面
工具:videonote-render-html(產生筆記 HTML)
處理:產生可閱讀的筆記 HTML 頁面
產出:note.html(筆記 HTML)
耗時:0.6 秒
關係:依序執行
結果:完成
10. 發布公開頁面
工具:videonote-publish(發布公開頁面)
處理:發布到公開網站與每日列表
產出:公開筆記網址、result.json(管線結果)
耗時:0.7 秒
關係:依序執行
結果:完成
手動來源字幕
自動來源字幕
Whisper 字幕
- 尚未產生
Qwen 字幕
- 尚未產生
Parakeet 字幕
- 尚未產生
MOSS 字幕
- 尚未產生
聲學時間證據(PyAnnote / WhisperX)
- 尚未產生
校正前後逐字稿
目前待解決問題與初步改善方向
- ⚠️ 全文快速校讀:已套用暫定修正,請確認
segment=30 已先套用暫定修正:還能把 tokens 丟回 tokenizer 轉回 MID → 還能把 tokens 丟回 tokenizer 轉回 MIDI 驗證。;segment=42 已先套用暫定修正:也可以 tokenizer.push_to_hub 丟到 H → 也可以 tokenizer.push_to_hub 丟到 Hugging Face 分享。;segment=55 已先套用暫定修正:入 trl-lib 那份 ultrafeedback bin → 入 trl-lib 那份 ultrafeedback binarized 的訓練集,;segment=61 已先套用暫定修正:dataset_name 指定 trl-lib 那份 ult → dataset_name 指定 trl-lib 那份 ultrafeedback binarized 資料集。
- 逐字稿可先使用,但有待校正清單
segment=7 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=11 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=19 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=21 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=23 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=24 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=25 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=26 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=27 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=29 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=32 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=34 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語
- Qwen3-ASR 未完成,需確認 qwen_asr_lab 環境與音訊後重試精進模式。
- 音訊下載不穩定,需更新 cookies / PO token 後重試精進模式。