DAY 230 · 2026-08-17

ASR 已經夠用

SLIDES · 6
Day 230 ASR 已經夠用 — 投影片 1Day 230 ASR 已經夠用 — 投影片 2Day 230 ASR 已經夠用 — 投影片 3Day 230 ASR 已經夠用 — 投影片 4Day 230 ASR 已經夠用 — 投影片 5Day 230 ASR 已經夠用 — 投影片 6
1 / 6

今天試了一個很直接的場景:把一場 1 小時 19 分鐘的實體演講錄音,丟給代管的 qwen3-asr-flash 做逐字稿。

結果比我預期好。整場偶爾夾英文單字、現場沒有麥克風、前面還有人聲重疊,原始轉錄已經有九成五以上可以直接看。再過一次 LLM,把「嗯、呃、啊」、口吃、破碎句清掉,就變成一份很能用的講座逐字稿。

這篇分享的是:這次怎麼跑、它跟本機 whisper-large-v3-mlx 比起來差在哪裡,以及我現在會怎麼選。

所以我現在會這樣分:

需求 我會選
快速拿到可讀的逐字稿 qwen3-asr-flash
音檔不能上傳 本機 ASR + diarization
需要語者分離 本機 ASR + diarization;或官方檔案轉寫模型(如 qwen-audio-3.0-asr-flash-filetrans
要大量處理公開素材 代管 ASR + LLM 後處理

先講結果

這次的音檔是:

  • 長度:1:19:22
  • 場景:實體活動錄音
  • 內容:中文為主,穿插少量英文單字
  • 收音:現場沒有麥克風,前段有人聲重疊
  • 目標:產出可以後續整理、摘要、引用的逐字稿

我跑了兩條路:

路線 模型 跑在哪裡 輸出特色
代管 ASR qwen3-asr-flash OpenAI-compatible gateway 原始輸出可讀性高,沒有語者分離
本機 ASR + diarization whisper-large-v3-mlx + senko M1 Pro Mac 有語者分離,可標出不同說話者

如果只看「逐字稿內容準不準」,兩邊沒有顯著差異。至少以這場來說,qwen3-asr-flash 已經準到可以進入下一步,不需要我再為了那一點點差距自己架整套本機流程。

但如果你需要知道「這句是誰講的」,Whisper 那條本機流程比較有優勢。這次 Whisper 輸出有 senko 做 diarization(語者分離,也就是把不同人聲分成不同標籤),雖然標籤還是要人工驗證,但至少有 who-said-what 的起點。

代管那條路怎麼跑

代管 gateway 用的是 OpenAI-compatible 介面,所以我用 Node 寫了一支小腳本。

流程大概是這樣:

  1. 先把整份音檔轉成 16 kHz mono WAV
  2. ffmpeg silencedetect 找出錄音裡的停頓
  3. 把 79 分鐘音檔切成 30 段
  4. 每段送 qwen3-asr-flash
  5. 結果快取起來,中斷後可以續跑
  6. 最後用 OpenCC 轉台灣正體,再跑幾個固定的修正規則

實際跑的指令很短:

cd "逐字稿"
yarn probe
yarn transcribe

probe 是先切 8 秒試打 API,確認金鑰有效,也確認這個 gateway 吃哪一種 audio content block。這次實測它吃的是 input_audio 加 data URI。只傳 base64 會回 400,所以要先確認這個 gateway 吃哪一種 audio content block。

比較麻煩的是切段。qwen3-asr-flash 單次請求上限是 5 分鐘、10 MB,所以長音檔不能整支丟進去。這次 79 分鐘最後切成 30 段,29 個切點有 27 個落在停頓上,只有真的沒停頓的地方才硬切。

這件事滿重要的。ASR 不是只要把檔案切小就好,如果剛好從一句話中間切開,前後文會斷掉,辨識品質會掉。用靜音切段至少能避開大部分這種問題。

價格低到不用太猶豫

如果按阿里雲官方定價,qwen3-asr-flash 北京區換算約每秒新台幣 0.001 元,新加坡區換算約每秒新台幣 0.0011 元。

先用北京區換算一下:

  • 1 分鐘:約新台幣 0.06 元
  • 1 小時:約新台幣 3.5 元
  • 這場 1:19:22:約新台幣 4.6 元

如果用新加坡區,這場 1:19:22 約新台幣 5.5 元。

也就是說,這種一小時左右的演講錄音,轉一次大概台幣幾塊錢。就算你重跑幾次、測不同參數,成本也不太會是主要問題。

所以真正要比的不是「省不省錢」,而是這幾件事:

  • 你想不想把音檔送到代管服務
  • 你需不需要語者分離
  • 你願不願意維護本機環境
  • 你後面整理逐字稿的流程是不是已經接好

如果這是公司機密會議,或不能上傳到外部服務的素材,那就不用討論,走本機。可是如果是公開活動、自己的講座、podcast、社群分享,這個價格跟品質已經很夠用了。

真正有差的是後處理

這次我比較在意的不是 ASR 本身,而是 ASR 後面那一步。

原始逐字稿其實已經能讀,但它會保留很多現場語音的特徵:

  • 嗯、呃、啊
  • 重複的「對對對」
  • 講到一半改口
  • 破碎句
  • 人聲重疊造成的怪句子
  • 專有名詞偶爾聽錯

這些不是 ASR 做錯,而是它忠實把現場講話轉成文字。可是人講話本來就不是文章,人要讀 1 小時演講逐字稿,真正痛苦的是這些口語碎片。

所以我後面又讓 LLM 整理了一次:

  • 修正聽錯的詞和專有名詞
  • 補上標點
  • 清理口吃與贅詞
  • 合併破碎句
  • 不摘要、不改寫語意

這一步做完,差異非常明顯。它不是把演講改成文章,而是把「機器聽到的現場聲音」整理成「人可以連續閱讀的逐字稿」。

我覺得現在比較合理的流程不是只問哪個 ASR 最準,而是把它拆成兩段:

  1. ASR:先把聲音穩定轉成文字
  2. LLM:再把口語雜訊整理掉,但保留原意

前者追求辨識率,後者追求可讀性。兩件事分開看,才不會把問題都丟給 ASR。

跟 Whisper MLX 比起來

我同步也跑了 whisper-large-v3-mlx,後來又補跑一次 whisper-large-v3-turbo

同一份 1:19:22 音檔,實測時間差很多:

模型 耗時 備註
qwen3-asr-flash 約 54 秒 代管,30 段、4 個並行請求
whisper-large-v3-turbo 12 分 26 秒 本機 MLX
whisper-large-v3-mlx 27 分 12 秒 本機 MLX

這裡的 Whisper 時間包含腳本啟動、模型載入、轉錄、輸出檔案。不是嚴格 benchmark,但很接近「我真的丟一支錄音進去,多久後拿到檔案」這件事。

這條路的好處很清楚:它跑在本機,音檔不用上傳,而且可以接語者分離。這次輸出裡有 9 個 speaker 標籤,還能把比較明確的人標成主辦人、講師、幾位與會者。

但代價也很清楚:你要維護本機環境,要等本機跑完,也要處理 diarization 的標籤準不準。語者分離不是魔法,同一個標籤可能混到多個聽眾,最後還是需要人工看過。

另外,這次使用的 qwen3-asr-flash 沒有語者分離。如果要長音檔或語者分離,官方另有 qwen-audio-3.0-asr-flash-filetrans 這類檔案轉寫模型。

這次讓我改觀的是:代管 ASR 已經不是「方便但品質普通」的選項。至少在中文演講逐字稿這個場景,它已經是可以認真放進工作流程的工具。

我會怎麼接進工作流程

如果只是偶爾轉一支音檔,手動跑指令就好。

但如果要真的變成固定流程,我會把它做成這樣:

  1. 錄音檔丟進資料夾
  2. 腳本自動切段、轉錄、快取
  3. LLM 產出整理過的逐字稿
  4. 再產出摘要、重點、可引用片段
  5. 最後人工檢查專有名詞跟人名

重點不是省掉人工,而是把人工留在最值得花時間的地方。

以前整理一場 1 小時演講,最累的是從頭聽、暫停、倒帶、打字。現在那段可以交給 ASR。人要做的是看這份逐字稿有沒有聽錯講者的意思、哪些段落值得拿出來、哪些內容可以變成文章或社群素材。

這個差異很大。

ASR 把聲音變文字,LLM 把文字變得可讀,最後人才決定哪些東西值得留下。

最近開始做免費的一對一諮詢,幫你把 AI 接進自己的工作流程——有需要的話可以約:https://www.dawsonwang.com/

延伸閱讀
看完整 242 篇 →