目錄(20 節)

粵語 ASR 自訂詞彙測試協議:點驗證你加嘅詞真係有用

加咗詞表唔代表有用。本文俾一個可重複嘅 ASR 詞表測試協議:固定音檔、逐詞標對錯、計修正同回歸,仲有三個硬上限同一個已知失效模式。

— 港嘢內容團隊約 9 分鐘語音辨識自訂詞彙粵語測試
分享:

一句答你:驗證一版詞表有冇用,唔使靠「感覺準咗」。 你只需要同一段音檔,跑兩次,逐詞對錯,計三個數。

大部分團隊加完詞表就直接落咗去生產。之後如果變差,通常冇人知係邊個詞搞事。

呢篇俾一個可重複嘅測試協議,加埋你可以直接用嘅判定閘。

重點摘要

  • 詞表 係指你交畀引擎嘅一份「可能出現嘅詞」清單,作用係提高呢啲詞被揀中嘅機會。
  • 詞表有三個硬上限:50 個詞、單詞 ≤30 字、提示句總長 ≤200 字。
  • 驗收只有三個數:修正數、回歸數、無變化數。回歸數必須係 0。
  • 固定音檔係成個協議嘅地基。換咗音檔,之前所有對比都唔算數。
  • 已知失效模式:低碼率音檔配短詞表,引擎會傾向照讀詞表,而唔係真正轉寫內容。

點解「加咗詞」唔等於「加咗詞有用」

因為詞表係提示,唔係命令。佢只會令引擎多啲機會揀呢啲詞,唔會保證揀啱。

加完詞表之後,有三種可能:

  1. 目標詞修好了(你想要嘅)。
  2. 其他本來啱嘅字變錯(回歸,危險啲)。
  3. 冇乜變(詞表冇覆蓋到問題)。

第二種最陰險。因為你唔會即刻發現,通常係一個星期後有人投訴先知。

要分得出呢三種,唯一可靠嘅方法係逐詞對錯,而唔係「聽落好似準咗」。

詞表規則:三個硬上限,同兩個分域

港嘢嘅 ASR 詞表目前有幾條硬規則,寫喺產品代碼入面,唔係文件口頭承諾。

規則數值超咗會點
詞數上限50 個詞多過嘅直接唔收
單詞字元上限30 字太長嘅詞靜靜丟棄
提示句總長200 字由尾刪詞至入上限

清洗規則好簡單:去空白 → 統一 Unicode 格式 → 去空 → 丟超過 30 字嘅 → 去重 → 截到 50 個。之後先砌成一句提示。

另外,詞表分域:一個人有兩本詞表,一本係轉錄/即時聽寫用,一本係會議批次轉寫用。同一間公司,會議同客服錄音嘅專名可以完全唔同。

供應狀態講清楚: 詞庫功能現階段係 Beta,按帳號開通,唔係所有帳戶預設見到。如果你登入後喺轉錄頁見唔到詞庫入口,即係你嘅帳號未開通。

測試集點設計:唔好淨係測你最在意嗰幾個詞

如果你只測目標詞,你會睇唔到回歸。

比較穩陣嘅做法係分五層抽樣:

層抽乜目的
目標詞你今次想修嘅專名量修正數
近音干擾詞讀音相近但唔應該出現嘅詞睇引擎有冇過度偏向
常見專名其他客戶同產品名睇詞表有冇互踩
日常詞高頻普通詞睇日常部分有冇變差
英文同數字縮寫、代號、金額睇中英夾雜有冇被詞表污染

每層抽 5 個左右就夠開始。音檔揀 3 至 5 分鐘,要包含大部分目標詞。

詞表入面嘅字,讀音可以先用中大粵語審音配詞字庫同香港語言學學會粵拼方案核對;口語用法同詞義就查粵典。

【實測】 我哋用小樣本測試過:加詞之後目標詞會修正,而且回歸數可以維持喺零。樣本細,具體樣本數同百分比屬未公開嘅測試資料,所以唔可以當成通用基準。但方向上足以確認「詞表有數得嘅效果」呢件事企得穩。

六步 A/B 驗收流程

流程圖如下。核心只有一句:除咗詞表,其他一切保持不變。

ASR 詞表 A/B 驗收流程圖:揀固定音檔、跑 baseline、逐詞標對錯、加詞表再跑、計修正回歸無變化,最後經判定閘決定上線定剔詞
六步 A/B 驗收流程。只有「有修正、零回歸」先上線。

逐步講:

  1. 揀定固定音檔。 3 至 5 分鐘,覆蓋目標詞。之後每次都用同一段,唔好換。
  2. 跑 baseline。 唔加詞表,儲存逐字稿。呢份係對照組。
  3. 逐詞標對錯。 目標詞逐個標「啱/錯」。另外抽查 10 個非目標詞,記低有冇由啱變錯。
  4. 加詞表再跑。 同一段音檔、同一個語言設定、同一個引擎狀態。只改詞表。
  5. 計三個數。 修正數、回歸數、無變化數。
  6. 判定。 有修正、零回歸就上線。有回歸就逐個剔詞再跑。

第 4 步最容易被忽略。如果同時換咗音檔、換咗語言設定、換咗引擎版本,你就永遠唔知邊個改動有效。

三個指標:修正、回歸、無變化

指標點計合格標準點解咁重要
修正數由錯變對嘅目標詞數越多越好呢個就係你加詞表嘅目的
回歸數由啱變錯嘅非目標詞數必須 0唔零就代表用一個錯換另一個錯
無變化加詞後仍然錯檢討係詞表問題定音檔問題唔係詞表嘅錯就唔好繼續加詞

回歸 係指原本啱嘅地方變錯。只要回歸數唔係 0,就唔應該上線。

詞表覆蓋率 係指你目標詞入面,有幾多個真係出現喺音檔入面。冇出現過嘅詞,測試結果對佢冇意義。

判定閘:幾多先算合格

建議用呢個門檻:

情況判定動作
修正數 ≥ 3,回歸數 = 0合格上線,保留同一段音檔做日後對照
修正數 ≥ 1,回歸數 = 0可以上線,但要再測多一段擴大樣本再驗一次
回歸數 ≥ 1唔合格逐個剔詞,搵出邊個詞搞事

搵邊個詞搞事嘅方法好直接:一次過刪走一半詞表再跑。仲有回歸,就係喺嗰一半;冇咗,就係喺另一半。呢個叫二分法,比逐個試快好多。

測試音檔點揀:五個實務原則

音檔揀得啱,驗收結果先有價值。以下五點係我哋做過多輪驗收之後,總結出嚟嘅測試方法。

  1. 用真實錄音,唔好用合成音檔。 合成音檔嘅頻譜太乾淨,唔會觸發低碼率嗰類失效模式。
  2. 揀有真人世界背景聲嗰段。 茶餐廳、街市、辦公室冷氣聲都應該有。
  3. 要有一段專名講得清楚嘅。 唔好淨係靠一段含糊錄音。
  4. 要有連續 3 至 5 分鐘嘅長度。 太短覆蓋唔到場景,太長每次跑都慢。
  5. 一次過備 3 至 5 段唔同長度嘅。 唔同長度可以測到唔同問題,亦係日後回歸對照嘅基礎。

【獨家觀察】 好多團隊第一次驗收會用「最好嗰段」錄音。嗰段通常係你特登揀嘅、比較乾淨嘅。之後客戶真實投訴嘅音檔,條件差好多。驗收音檔要照真實場景去揀,唔係照效果去揀。

逐詞對錯表:直接抄呢個格式

每次驗收留低一份表,日後就唔使靠記憶。

詞類型baseline加詞後結果
鰂魚涌地名沙奇涌鰂魚涌修正
嘉詠人名嘉泳嘉泳無變化
KPI縮寫KPIKPI無變化
發票日常詞發票發票回歸

最後一行最重要。只要出現回歸,就代表呢版詞表唔可以上。

以下呢張表係格式示例,入面嘅數字只係示範用,唔係港嘢嘅測試結果;你自己跑完之後用返同樣嘅格式填。

指標數值判定
修正數6合格
回歸數1唔合格
無變化數9檢討覆蓋率

【獨家觀察】 表中最有價值嘅其實唔係「修正數」,而係「回歸數」。修正數只係話明你贏咗幾多;回歸數先係話明你蝕咗幾多。蝕咗嘅嘢,唔會自己浮返上水面。

已知失效模式:低碼率加短詞表

有一個好具體嘅失效模式,我哋喺測試入面撞到過。

【實測】 當音檔壓得太厲害(例如 32 kbps 以下),而詞表又短,引擎有時會傾向「照讀詞表」,而唔係真正轉寫內容。呢個形態喺同一批音檔上重複出現過,可以當係一個可靠嘅預警訊號。

解法有兩個方向:

  • 提高音檔質素。 傳統電話線嘅低碼率係最常見嘅出問題來源。
  • 加長詞表覆蓋率。 詞表太短,引擎「無嘢可轉寫」嘅時候就會照讀提示。

順帶一提,呢個失效模式亦都解釋咗點解詞表測試要用真實錄音。合成音檔同高碼率檔案,未必會觸發同一個問題。

朗誦殘渣:點解寧願漏剷都唔亂剷

如果引擎照讀咗詞表,輸出會出現「證監會、庫務局、局務局」呢類冇上下文的詞串。

港嘢喺服務端有第二層安全網,專門剷呢啲殘渣。但佢刻意做得保守:

情況處理原因
全部輸出都係詞表詞串成段剷走一定係朗誦
正文尾段係連續詞表詞剷走嗰幾段好大機會係朗誦
句中出現詞表詞唔剷可能係自然講法
正文同朗誦黏埋一齊唔剷分唔開,寧願漏

重點係最後兩行:寧願漏剷,都唔好亂剷。 因為剷錯一次,係直接刪走咗客戶講嘅真實內容。

常見問題

詞表要幾多個詞先有用?

唔係越多越好。上限 50 個,但真正有用嘅通常係 20 個以內。放低頻、無關嘅詞,會令引擎喺唔應該出現嘅位置都傾向揀佢。

加咗詞,其他字會唔會變差?

有可能。所以每次加詞都要跑 A/B,並且明確要求回歸數 = 0。有回歸就逐個剔詞。

點知係咪詞表嘅問題,唔係音檔嘅問題?

同一段音檔加詞之後完全冇變,就係詞表冇覆蓋到。換另一段音檔再測,如果嗰度有反應,就證明問題喺詞表覆蓋率。

淨係聽落好似準咗,唔可以當驗收?

唔得。耳朵有確認偏誤,尤其係你已經期待住改善嘅時候。逐詞標對錯先係驗收。

詞表同字典有咩分別?

字典答「呢個字點讀」。詞表答「呢啲詞可能會出現」。兩個用途唔同,亦都可以同時存在。基礎嘅拼音方案可以參考粵拼入門,大批量斷詞可以用PyCantonese。

上載音檔嘅規格同計費係點?

檔案轉寫同即時聽寫嘅格式上限、計費方式,都寫喺公開 API 文件。同一份文件亦列咗實時轉寫嘅事件語義,做對照測試嗰陣會用到。

想試下你自己嘅詞表?

最直接嘅做法,係先攞一段你哋真實嘅錄音,喺語音轉錄頁跑一次 baseline,等你手上有對照組先加詞。

想知完整嘅詞表工程點做,睇廣東話字庫與自訂詞彙實戰。想睇更廣泛嘅粵語語音辨識測試維度(例如中英夾雜、港式英文、數字),可以睇廣東話語音轉文字實測。字庫資源同 beta 申請喺廣東話字庫資源頁。

如果你係由錄音檔開始,唔知點準備音檔,可以睇會議音檔上載指南。如果係法律、醫療呢類高風險場景,驗收門檻應該再收緊,參考法律錄音粵語轉寫。

相關文章


本文由港嘢內容團隊編輯審閱(editorial review,2026-10-25)。想了解我哋嘅背景,可以睇關於港嘢;有技術問題或想申請功能開通,聯絡我哋。

相關文章