CLLT 2026 · WEEK 9 LAB
AI 聽懂的是聲音,還是它預期的文字?
今天用聯發科技研究(MediaTek Research)的兩個語音辨識模型,和一個語音合成模型,做一個小型語言學實驗。請先提出一個查得到的問題,把模型實際印出來的字留著,再分辨差異是來自聲音、用詞、意思,還是寫法。
00開始前:三個模型今天各做什麼
| 模型 | 今天做什麼 | 聽的時候注意 |
|---|---|---|
| Breeze-ASR-25 | 把臺灣華語、中英夾雜的聲音轉成文字 | 英文還在嗎?有沒有被換成一句說得通、但其實沒人說過的華語? |
| Breeze-ASR-26 | 辨識台語 | 模型卡寫明:輸出是用華語漢字寫意思,不能把它當成台語正字的逐字稿 |
| BreezyVoice | 把臺灣華語文字說成聲音,並可用注音指定讀音 | 多音字念得合不合句意?加上注音之後,聲音有沒有真的跟著變? |
ASR-26 是陽明交大與聯發科技研究一起做的。這三個都不是平常那種用文字聊天的模型,這裡的 BreezyVoice 也不是台語語音合成。模型和程式標的授權是 Apache 2.0。自己錄的聲音,以及別人做好的素材,還是要另外確認能不能用。出處在這頁最下面。
01建議流程
| 時間 | 做什麼 | 這段要留下什麼 |
|---|---|---|
| 0–10 分 | 分工、預測、開啟 Colab GPU、開始安裝 | 一個研究問題與預測 |
| 10–25 分 | 準備錄音、先寫參考文字 | 4 段短錄音與參考文字 |
| 25–45 分 | ASR-25:華語與中英夾雜 | 原始辨識輸出、至少一個錯誤或成功案例 |
| 45–65 分 | ASR-26:台語,與 ASR-25 比較 | 同一台語錄音在兩模型的輸出 |
| 65–85 分 | BreezyVoice:多音字,以及加上注音 | 一組 A/B 音檔,和聽辨紀錄 |
| 85–100 分 | 計算 CER、討論、繳交 | 一頁實驗紀錄與資料輸出 |
課堂大約 60–90 分鐘。上表是三個實驗都做完的一種排法;時間不夠就先做完一對句子,沒做的標成「未執行」。
分工可以是:一人操作、一人錄音並寫參考文字、一人記錄和聽辨。兩人一組就把後面兩項併在一起。模型還在下載時,先把研究問題和錄音準備好。
02實驗一:中英夾雜,模型會替你「翻譯」嗎?
先選一個問題。例如:同一句話換成幾個英文術語之後,辨識結果會不會比較容易被改寫?下面是例句,可以改成自己平常會說的話。
- M1:「老師說,先把資料放進訓練流程,再檢查輸出。」
- M2:「老師說,先把資料放進 training pipeline,再檢查 output。」
- T1、T2:由會說台語的組員各說一句自然台語,主題可用下課吃飯、明天上課。每段約 5–15 秒。
M1 和 M2 請同一個人錄,設備、距離和語速也盡量一樣。兩句骨架很像:一句全是華語,一句夾了英文。長短不必完全相同,所以這還不是嚴格的最小對立。時間夠的話,每種加到 3 句;只有一對時,就當成個案來寫,不要說成普遍結論。
先聽錄音,再寫參考文字。口誤、重複,以及實際說出來的英文,都留在答案裡。不要拿原本打算念的稿子當標準答案。英文怎麼拼,先在組內講定。模型跑完之後,不要為了讓分數好看,再回去改參考答案。
操作:把 Week9_Breeze_Colab.ipynb 上傳到 Colab,選「執行階段 → 變更執行階段類型 → GPU」。先用筆記本裡附的備用資料走一遍。要改成自己的錄音時,取消第一格的 USE_BUNDLED_BACKUP,再上傳四個 WAV,並修改 SAMPLES。請用一般的 PCM WAV,不要只把手機的 m4a 改個副檔名。
聽完之後,用手標這幾類:聽起來很像而換錯字、英文被翻成華語、人名或專名認錯、「的、了、在」這類字被漏掉、標點或字形不同。這是看完輸出之後的分類,不能因此斷定模型內部就是這個原因。
03實驗二:台語辨識,誰來決定「正確文字」?
用同一段 T1 或 T2,比較 ASR-25 和 ASR-26。ASR-26 要交出來的是華語,所以先請聽得懂這段台語的人寫一份華語意思,當作對答案。寫得出台語逐字稿或台羅的話,也留在紀錄裡,不確定的地方標出來。
不會說台語的人,可以和會說的同學一組,或用老師提供、而且已經確認可以在課堂上用的音檔。參考文字要由聽得懂錄音的人校對。不要靠猜來寫台羅。台語說得熟不熟,不列入成績。
回答三題:
- 台語意思相同、華語表達不同時,CER 會如何變化?
- 寫成華語以後,哪些語氣詞、用詞或詞序不見了?
- 如果任務是台語教學、文化典藏或會議摘要,各應採什麼輸出與評量方式?
這裡的台語 CER 裡,還包含「要寫成哪一種華語」的選擇,不能把它看成單純聽錯了多少。華語和台語的分數請分開看,不要加在一起宣布誰贏。
04實驗三:加上注音之後,多音字的讀音會不會變?
先聽下面四段老師事先生成的音,做完聽辨。時間還夠,再打開這次實際跑成功的 BreezyVoice hybrid 展示頁 試著生成。那是社群用官方模型和官方程式做的操作頁。參考音請用老師確認過的,或同學自願提供的自己的聲音,並先核對那段聲音對應的文字。上傳到雲端之前,要先得到說話的人同意。聲音不是必繳資料,也不必公開。
TTS_A1 · 原文
TTS_B1 · 加注音
TTS_A2 · 原文
TTS_B2 · 加注音
官方說明另外連到的那個展示頁,這次測了四次,都只生出大約 0.197 秒的異常聲音,今天不要從那一頁進。hybrid 一個短句大約要三分鐘,請把排隊、以及改聽備用音檔的時間算進去。
參考音、參考文字,以及 seed(頁面有的話)都固定住,只改目標文字有沒有注音:
| 條件 | 輸入 |
|---|---|
| A:原文 | 銀行的行長。 |
| B:加入注音 | 銀行[:ㄏㄤ2]的行[:ㄏㄤ2]長[:ㄓㄤ3]。 |
請另一位同學先不要看條件,聽 A 和 B。兩個「行」和「長」各念成什麼、合不合句意,再記下停頓、自然不自然、有沒有漏字。原文已經念對,也是有效的結果,不必刻意做出錯誤。時間還夠,可以加長成「銀行的行長說,這個方法可行。」並在最後那個「行」加上 [:ㄒㄧㄥ2]。
還有時間的話,試一句:「今天的 lab 要比較 ASR 和 TTS。」看它怎麼念縮寫。不要只因為整體聽起來像真人,就認為內容念對了。
展示頁和自己電腦上的命令列,處理文字的方式可能不一樣。請記下用的是哪個介面、有沒有打開自動注音。畫面上的「原文」,不要寫成「確定完全沒有經過注音處理」。如果沒辦法固定 seed,同一句至少生成兩次,並寫下「每次結果可能不一樣」。
排隊超過 5 分鐘,就改聽老師事先生成的 A/B,把聽辨做完。沒有這些音檔時,只交句子怎麼設計、以及你的預測,並標成「未執行」。沒有跑過的,不能寫成已經驗證的結果。
05評量:CER 算的是什麼?
字錯誤率 CER=(換掉的字 S + 漏掉的字 D + 多出來的字 I)÷ 參考答案的字數 N。
這次同時留兩種分數。原始 CER 照模型印出的字來算。正規化 CER 會先做成 Unicode NFC、去掉標點和空白、英文改成小寫。不會把繁體改成簡體,也不會把「台」和「臺」併成同一個字,更不會把英文翻譯掉。英文是一個字母算一格,不是一個單字算一格。所以全華語和中英夾雜的分母本來就不一樣,要搭配人工記下「有幾個英文詞被完整留下來」一起看。不要只拿兩個 CER,就說中英夾雜造成了什麼。
同一種語言、同一種參考答案裡,總分用全部的(S+D+I)除以全部的 N。CER 可以超過 100%。不要把「1 減 CER」當成正確率。台語如果同時有「華語意思」和「逐字」兩種參考,分開報告。筆記本裡用來示範計分的句子是人工打的,不是模型跑出來的結果。
06繳交:一頁紀錄,加上筆記本產出的檔案
一頁裡可以照這些欄位寫:
- 組別、研究問題、預測、怎麼分工。
- 4 筆材料:編號、語言、實際採用的參考文字、說話者的匿名代號、怎麼錄的、聲音從哪裡來、對方同不同意使用。
- 每個模型印出的原始文字、CER,以及至少兩處逐字對照。台語另外說明意思還在不在。
- 語音合成的 A/B:輸入的文字、參考音的代號、seed、逐字聽起來的結果、用的是哪個介面。
- 大約 150–250 字的結論:看到了什麼、還有哪種別的解釋說得通、下次要怎麼改設計。
- 附上
asr_results.json、asr_summary.json、run_metadata.json。不想交出聲音的人,交匿名的文字和分析就可以。課堂評分不要求把聲音公開。
建議的配分是:設計和參考文字 30%、留下的證據與紀錄 30%、語言學分析 30%、有沒有說清楚限制、別人能不能照著重做 10%。模型答錯、預測沒有發生,或兩組聽起來差不多,都不扣分。要分清楚的是:哪些是實際跑出來的,哪些是你的推測,哪些根本沒有執行。
07資料從哪裡來
下面的連結是 2026 年 11 月 3 日核對的;實際試跑做到 11 月 4 日。BreezyVoice 的備用音,是這次真的呼叫公開服務生出來的。兩個語音辨識模型也已在 Colab 的 Tesla T4 上完整跑過。版本和限制寫在同一資料夾的試跑紀錄。音檔播得出來,不代表多音字念對了,還是要自己聽。