台語語音辨識
這一頁講語音這一段:為什麼現場需要一個聽得懂台語的模型、聯發科已經做完了哪一步、我們補的是哪一步,還有我們試過但還沒做好的那一個。我們放在 Hugging Face 上的四個檔案,有三個來自這一段。
為什麼需要它
社區據點的照服員坐在長輩旁邊,手上一台平板。他問:昨天晚上睡得好嗎?會不會半夜起來?長輩回答了。他得一邊聽,一邊在腦袋裡把話翻成表單上該打的字,一邊低頭打字。長輩看著他的頭頂講話。
而長輩講的是台語。有時候國語台語混在同一句裡:「我那個腳啊,會 sng(痠)。」照服員自己聽得懂,可是他得先翻成國語才打得出來。
我們想要的東西很簡單:讓他把頭抬起來,好好跟人講話,紀錄自己長出來。這需要一個聽得懂台語的語音模型——而市面上的語音辨識,國語都很行,台語就不行了。長輩不會為了配合系統改講國語。
台灣已經有人做出聽得懂台語的模型了。我們補的是「它裝不進現場那台電腦」這一段。
我們做的是哪一步
Breeze-ASR-26 是聯發科研究院訓練並開源的(Apache-2.0,源自 OpenAI Whisper large-v2),它聽得懂台語和台灣口音。訓練不是我們做的,這件事要先講清楚。
但它有 3.1 GB,跑得順要 GPU。據點那台用了六年的電腦裝不下,照服員手上的手機更不用說。所以我們接著做剩下的:把它壓小、實際量速度和記憶體、做成三種不同機器跑得動的版本,然後放回網路上。
三個版本
差別只在跑在哪一種硬體上。全部 Apache-2.0,可以商用、可以改,不用問我們。
有伺服器的話,用這個最快
只有一台舊筆電也能用,拖進去就好
手機和瀏覽器裡的台語辨識
五秒以上的語音,壓縮前後幾乎聽不出差別(相對原始模型的字元誤差約 3.6%)。家訪時工作人員身上常常只有一支手機,所以最慢的那個版本也得做。
沒發布的那個
我們也試過把它縮到 237 MB,好讓它直接跑在手機裡。過程是有進展的:在真實的長段語音上,它跟原始模型的落差從 63% 一路壓到 38.7%。但原始模型自己是 14%。差得還太多,所以我們沒有發布它。
中間也吃過一個很值得寫下來的失敗。第一次做的時候,我們讓小模型太用力去模仿大模型的「語氣」,結果它變得更差。後來把重心改回正確答案本身、模仿只當輔助,才開始進步。這種紀錄我們也一起公開,因為它比一個漂亮的數字更能幫到別人。
卡住的地方不是訓練技巧,是台語的錄音太少。公開來源全部加起來只有幾十小時,而且大多是照著稿子念的短句,跟長輩真的在講話差很遠。
另外還有一件更根本的事。台語真正的樣子是台羅拼音,寫成華語漢字會把台語的讀音丟掉——「斷腦筋」寫成漢字,讀的人不會知道它其實是在講中風。所以我們現在在做能輸出台羅的版本。還沒好。好了就會出現在這一頁。
它在產品裡做什麼
語音轉出來的字,仍然是現場的講法。「皮蛇」還是「皮蛇」,要再對回「帶狀皰疹」才存得進紀錄——那是另一顆模型的工作。兩段接起來,一句話才會變成一筆能用的紀錄。
台灣已經有人做出聽得懂台語的模型了。我們補的是它裝不進現場那台電腦。
三個版本都在 Hugging Face 上,Apache-2.0。每個 model card 裡有量測方法、限制與適用場景。上游模型是聯發科研究院的 Breeze-ASR-26,訓練是他們做的,我們做的是量化、量測與格式轉換。