目錄(17 節)

粵拼資料庫點揀?5 個免費語料比較+點樣砌成 G2P 詞典

粵拼資料庫唔存在一份可下載嘅官方大表。本文比較 5 個免費語料嘅形態、授權同可否批次處理,講清三種資料模型、正規化 schema、授權三問,同十條落地自查清單。

— 港嘢內容團隊約 10 分鐘粵拼JyutpingG2P粵語資料語音合成
分享:

一句答你:粵拼「資料庫」其實冇一份官方大表可以載落嚟用 —— 現實係五份用途、格式、授權都唔同嘅語料,而且大部分係「查詢式網頁」而唔係「可批次處理嘅檔案」。砌得成唔成,取決於你肯唔肯自己定三件事:每行記咩字段、多音字點存、邊個讀音做預設。

第一次查「粵拼資料庫」嘅人,通常有一個落差:佢哋以為有一個網站或者一個 GitHub repo,載入就有一張完整嘅「字 → 粵拼」對照表。實際查落去,五個常用來源入面只有兩個真係可以程式化處理,其餘三個都係網頁查詢。

呢篇唔教粵拼點讀。聲母韻母同六個聲調嘅基礎睇《粵拼 Jyutping 入門》;字典本身點查睇《廣東話讀音字典點用》。本文只答一條題:點樣由公開語料砌出一份你 team 真係用得著、又用得合法嘅粵語讀音資料。

如果你仲未分清「字庫」「詞庫」「自訂詞彙」三層,先讀同一個 cluster 嘅《廣東話字庫與自訂詞彙實戰》—— 嗰篇講三層模型同 ASR 詞表規則;本文講緊最底嗰層:讀音資料本身。

重點摘要(Key Takeaways)

  • 冇一份「官方大表」:最接近嘅係中大審音配詞字庫,但佢係網頁查詢工具,唔係可下載資料集(查閱 2026-10-25)。
  • 五個來源分三類:標準方案文件(語言學學會)、單字審音配詞(中大)、口語詞典(粵典)、可程式化工具(兩套開源 G2P)。用途完全唔同,唔好當同一樣嘢。
  • 「有網頁查詢」唔等於「有 API」;「開源」亦唔等於「商用授權自動 OK」——授權三問要逐個問。
  • 字典化之前一定要做正規化:Unicode NFC、統一聲調表示、拆多音字、決定邊個讀音做預設。
  • 拼入合成之前要補情境讀法 —— 同一個字喺人名、地名唔同。
  • 我哋冇公開可重複嘅測試集,所以本文唔會貼任何準確率百分比;文末有自查清單你可以自己跑。

呢五個來源,逐個睇佢實際俾咩嘢

五個粵拼資料來源比較表:審音配詞字庫、粵拼方案、粵典、PyCantonese、canto-hk-g2p 嘅形態、可否批次處理、授權同最啱用途
五個來源唔係同一類嘢:兩個可以程式化處理,三個係查詢式網頁。
來源實際形態資料可否程式化授權方向最啱用嚟做咩
中大審音配詞字庫網頁工具(頁面標 big5,內含字音配對同粵拼欄位,另有讀音檔)網頁查詢為主,未見公開 API 或批次下載學術資源,頁面列有聯絡 email逐字校對讀音、查異讀
香港語言學學會粵拼方案1993 年《方案》原件+2012 年答問,講設計理念方案文件,唔係資料表學會公開文件統一拼寫規則、標調規則、隔音字處理
粵典 Words.hk口語詞典網站,詞條附粵拼網站查詢為主內容有版權查口語詞義同用法(唔係讀音表)
PyCantonesePython 套件(MIT),含斷詞、G2P、粵拼轉 IPA、詞頻可以,本地跑MIT批次處理、做研究原型
canto-hk-g2pRust 核心+Python 綁定,Apache 2.0可以,本地跑Apache 2.0數字、日期、中英夾雜嘅 G2P

(全部來源查閱日期:2026-10-25。)

【實測】我哋逐個試過(2026-10-25):中大個頁面係 PHP 加 frameset、內含讀音檔;語言學學會嘅 /jyutping 會轉到 /jyutping-faq/;粵典係網頁查詢。換句話說,「可唔可以程式化處理」呢一欄,唔係估出嚟,係逐個試出嚟。兩個開源套件都有公開原始碼同安裝入口,但佢哋喺你自己嗰批詞彙上嘅實際效果,我哋未喺本機跑過,要用就自己試一次先。

G2P 係指由文字直接生成讀音(grapheme-to-phoneme),例如由「陳」推出「can4」。上面兩個開源套件做嘅就係呢一步;前三個唔做,佢哋只提供「查得到」嘅入口。

一個殘酷事實:真正可以批量處理嘅粵語語料好少

我哋逐個睇過(查閱日期 2026-10-25)。中大嗰個 Lexis 網站,根目錄之下有 Canton/(黃錫凌《粵音韻彙》電子版,頁面註明建立日期 1996 年 1 月、最近修訂 1997 年 1 月)、chifreq/(漢字使用頻率統計,跨港/內地/台灣),亦有 Lindict/、Wheelock-Latin/ 等目錄 —— 睇落好似一個可以成批攞嘅資料庫,但逐個入去,每個都係 CGI 查詢頁(例如查字用 canton.pl、查聲母關係用 pho-rel.pl),唔係你 wget 落嚟就攞到嘅 CSV。順帶一提,Canton/ 嗰個頁自己都寫住「試行版」,年份亦都係九七年 —— 即係話新字新詞未必覆蓋到,用之前要自己核。審音配詞字庫嗰頁仲要讀音檔(sound.php),即係話佢一半嘅價值喺「睇字嘅同時聽返個音」,唔喺「畀你一堆原始資料」。

【獨家觀察】呢個落差唔係缺陷,係設計目的:呢啲工具服務嘅係「人查一個字」,唔係「機器攞一批字」。所以如果你嘅需求係批次處理,正路唔係搵一個不存在嘅「官方大表」,而係:

  1. 用可程式化嘅工具做主幹(PyCantonese 或 canto-hk-g2p);
  2. 用網頁查詢做抽樣校對(每個唔同聲調、每個多音字抽一兩個核);
  3. 用方案文件做規則層(點樣標調、隔音字、gw 同 g 咁樣嘅取捨)。

譬如你想確認 gw 同 g 到底點分,語言學學會嘅答問頁直接答咗:g 同 gw 係兩個唔同嘅聲母,gw 係雙字母代表單一聲母;同樣 k 同 kw 係送氣與否嘅對立。呢類規則就係砌詞典之前應該先定死嘅嘢 —— 否則同一個「觀塘」,你同你同事會寫出兩個唔同嘅拼法。

資料模型:你要先揀一種,唔可以混住砌

三種常用模型,適用場景唔同:

模型一行長咩樣優點缺點
單一映射 字 → 粵拼"陳": "can4"最簡單,直接入 G2P一字多音就唔準
多讀音 字 → [粵拼…]"陳": ["can4","cang1"]覆蓋異讀冇上下文,引擎要自己揀
情境讀法 詞 → 粵拼"陳嘉詠": "can4 gaai1 weng2"最貼近真實發音要人手逐個詞建

詞典 係指一份「輸入項目 → 對應資料」嘅查表;喺呢度就係「字或詞 → 粵拼讀音」。砌嘅時候最重要係寧缺勿濫:預設讀音揀錯,影響嘅係每一個出現呢個字嘅句子。所以預設值應該用現代標準讀音,唔好用詞典排頭嗰個。

情境讀法 係指同一個字喺唔同語境(人名、地名、詞組、標題)嘅實際讀音。呢一層要靠詞層覆蓋,例如人名嘅讀法點樣處理,可以睇《廣東話人名讀音完全指南》;多音字嘅原理另外有文講,見《廣東話多音字攻略》。

正規化:五步,之後你嘅表先算得上一份資料

一段可以直接落手嘅清洗流程(純資料處理,唔涉任何 API 呼叫):

import unicodedata

MAX_TERM_CHARS = 30

def normalize(text: str) -> str:
    """統一 Unicode 組合形式 + 收窄多餘空白。"""
    s = unicodedata.normalize("NFC", text)
    return " ".join(s.split()).strip()

def normalize_record(rec: dict):
    """一條字庫記錄 → 乾淨記錄。壞資料回 None,唔拋錯。"""
    word = normalize(str(rec.get("word", "")))
    if not word or len(word) > MAX_TERM_CHARS:
        return None
    readings = rec.get("jyutping") or []
    if isinstance(readings, str):
        readings = [readings]
    clean = []
    seen = set()
    for r in readings:
        v = normalize(str(r)).lower()
        if not v or v in seen:
            continue
        seen.add(v)
        clean.append(v)
    if not clean:
        return None
    return {
        "word": word,
        "jyutping": clean,          # 第一個係預設讀音
        "source": rec.get("source", ""),
        "updated": rec.get("updated", ""),
    }

呢五步有四個位值得講(呢個方法唔係最快,但係最穩陣:外部語料半壞唔會令你 pipeline 死機,每一步結果都可以逐條覆核):

  1. Unicode NFC:網頁抄出嘅「陳」有時係「陳」加 combining 音符,唔正規化就會 dedupe 唔到,重複項慢慢堆。
  2. 統一聲調表示:粵拼可以用數字(can4)或者符號(càn)。同一份表入面兩種都出現,之後比對同合併就會出問題。揀一種,全表統一。
  3. 超長即丟:一個「詞」超過 30 字,通常係句子唔係詞,靜靜丟走,唔好塞入去。
  4. 唔拋錯:一份可能半壞嘅外部資料,唔應該令你成個 pipeline 停低。

授權三問:商用前一定要逐個問

問題點樣答
1. 可唔可以商用?開源套件睇授權條款(MIT/Apache 2.0 通常可以,但 Apache 2.0 要留意 NOTICE 同商標要求);學術資源同網站內容唔等於可以商用。
2. 可唔可以嵌入自己產品?「可以商用」同「可以打包賣俾客戶」係兩件事;Apache 2.0 仲要求保留授權聲明。
3. 要唔要標來源?要嘅話,就喺文件或者介面保留出處連結同版本(例如「讀音依據某字庫某版本,2026-10 查閱」)。

【獨家觀察】三個最容易出事嘅位:

  • 網頁內容唔等於開放授權。粵典嘅詞條有版權,批量抓落嚟嵌入產品,同「查字典睇答案」係兩回事。
  • 學術資源唔等於免費授權。中大字庫頁面列有聯絡 email,正路係問,唔係自己抓。
  • Apache 2.0 唔等於零責任。要保留授權聲明同 NOTICE;改動過嘅檔案要標明改動。

六個常見坑

  1. 抄咗半套拼法:網頁上有人用耶魯式,有人用粵拼數字調。混埋同一份表,之後你分唔出邊個係方案、邊個係手寫。
  2. 以為拼得出就讀得啱:拼寫規則只保證「合法」,唔保證「自然」。變調、連讀、語氣詞係另一層,唔好將語言學問題當資料問題處理。
  3. 粵典用字 vs 標準書面語:口語字(嘅/咗/喺)同標準書面語對唔上,兩套資料合併時要有一致嘅用字政策。
  4. 預設讀音揀咗罕見嗰個:多音字預設值應該用現代標準讀音,唔係詞典第一條。
  5. 中英夾雜詞冇處理:英文縮寫(KPI、Q3)唔應該轉成中文近音;canto-hk-g2p 呢類工具就係專門處理數字、日期同中英夾雜。
  6. 過度覆蓋:將所有字都入表,反而令「邊個先」嘅預設值難以維持。要覆蓋嘅應該係你產品真正會出現嘅詞。

落地自查清單(十條,逐條打剔)

  1. □ 表入面每一行都係「字或詞」,冇句子
  2. □ 全部行都做咗 Unicode NFC
  3. □ 聲調表示全表只有一種
  4. □ 多音字用陣列,而且有預設讀音
  5. □ 預設讀音係現代標準讀音
  6. □ 情境讀法(人名/地名/品牌)另開一張覆蓋表
  7. □ 授權三問逐個有答案,而且有記錄
  8. □ 出處同版本寫咗落表(唔係得個 source 欄空住)
  9. □ 有一份 50 條以內嘅人工核對抽樣清單
  10. □ 表入面冇任何未確認嘅猜測讀音(猜嘅要另外標記,唔好混入正式表)

第 10 條最易踩。你無法避免有「未知讀音」嘅詞,但佢哋應該住喺另一張表,等你攞到客戶確認先入正式表 —— 呢個做法同 ASR 詞表嘅驗收邏輯一樣,細節可以睇同一個 cluster 嗰篇字庫實戰文嘅 A/B 流程。

常見問題 FAQ

粵拼資料庫有官方版本嗎?

最接近嘅係中大審音配詞字庫,但佢係網頁查詢工具(查閱 2026-10-25),唔係一份可以批次下載嘅官方資料表。語言學學會嗰邊出嘅係 1993 年《方案》同答問,講嘅係拼寫規則,唔係逐字讀音表。

開源 G2P 套件可唔可以商用?

睇授權。PyCantonese 用 MIT;canto-hk-g2p 用 Apache 2.0(查閱 2026-10-25)。兩者都要按條款保留聲明,而且你仍然要自己驗證佢哋喺你嘅業務詞彙上準唔準 —— 開源唔代表對你啲專有名詞識得。

我淨係想要一個字嘅讀音,用咩最快?

逐字查用中大審音配詞字庫最快(連聲音一齊有);但如果你有一批字要處理,就唔好逐個查,直接用批次工具。

詞典入面要唔要收口語用字?

如果你嘅產品輸出係口語(例如對話式語音),要,而且要明文定死用字政策;如果輸出係書面語(例如文件朗讀),就要另建一套書面語用字表。兩套用字政策混落同一張表,係後期最難清理嘅技術債。

砌好之後點驗?

用你產品真實會出現嘅句子,砌一個 50 條以內嘅抽樣集,人手核對讀音,再逐條試合成、睇實際輸出。因為本文唔會貼任何「準確率 XX%」,原因係我哋冇公開可重複嘅測試集 —— 有測試集嘅話,個數字先有比較價值。

想試下把讀音資料接落去?

最直接嘅入口係《點樣用 API 生成地道粵語語音》—— 佢講點用讀音錨點處理專名同多音字,係讀音資料落地最直接嘅下游場景。想先打好三層模型同詞表基礎,返去睇本 cluster 嘅字庫實戰文;想試下自己嘅錄音,喺語音轉錄頁跑一段。

相關功能

想一次過查聲母、韻母同 6 個聲調嘅對照表,睇廣東話拼音:粵拼聲母韻母全表。

相關文章


本文由港嘢內容團隊編輯審閱(editorial review,2026-10-25)。想了解我哋嘅背景,可以睇關於港嘢;授權同資料集嘅使用問題,可以用聯絡表格問我哋。

相關文章