目錄(17 節)
粵拼資料庫點揀?5 個免費語料比較+點樣砌成 G2P 詞典
粵拼資料庫唔存在一份可下載嘅官方大表。本文比較 5 個免費語料嘅形態、授權同可否批次處理,講清三種資料模型、正規化 schema、授權三問,同十條落地自查清單。
一句答你:粵拼「資料庫」其實冇一份官方大表可以載落嚟用 —— 現實係五份用途、格式、授權都唔同嘅語料,而且大部分係「查詢式網頁」而唔係「可批次處理嘅檔案」。砌得成唔成,取決於你肯唔肯自己定三件事:每行記咩字段、多音字點存、邊個讀音做預設。
第一次查「粵拼資料庫」嘅人,通常有一個落差:佢哋以為有一個網站或者一個 GitHub repo,載入就有一張完整嘅「字 → 粵拼」對照表。實際查落去,五個常用來源入面只有兩個真係可以程式化處理,其餘三個都係網頁查詢。
呢篇唔教粵拼點讀。聲母韻母同六個聲調嘅基礎睇《粵拼 Jyutping 入門》;字典本身點查睇《廣東話讀音字典點用》。本文只答一條題:點樣由公開語料砌出一份你 team 真係用得著、又用得合法嘅粵語讀音資料。
如果你仲未分清「字庫」「詞庫」「自訂詞彙」三層,先讀同一個 cluster 嘅《廣東話字庫與自訂詞彙實戰》—— 嗰篇講三層模型同 ASR 詞表規則;本文講緊最底嗰層:讀音資料本身。
重點摘要(Key Takeaways)
- 冇一份「官方大表」:最接近嘅係中大審音配詞字庫,但佢係網頁查詢工具,唔係可下載資料集(查閱 2026-10-25)。
- 五個來源分三類:標準方案文件(語言學學會)、單字審音配詞(中大)、口語詞典(粵典)、可程式化工具(兩套開源 G2P)。用途完全唔同,唔好當同一樣嘢。
- 「有網頁查詢」唔等於「有 API」;「開源」亦唔等於「商用授權自動 OK」——授權三問要逐個問。
- 字典化之前一定要做正規化:Unicode NFC、統一聲調表示、拆多音字、決定邊個讀音做預設。
- 拼入合成之前要補情境讀法 —— 同一個字喺人名、地名唔同。
- 我哋冇公開可重複嘅測試集,所以本文唔會貼任何準確率百分比;文末有自查清單你可以自己跑。
呢五個來源,逐個睇佢實際俾咩嘢
| 來源 | 實際形態 | 資料可否程式化 | 授權方向 | 最啱用嚟做咩 |
|---|---|---|---|---|
| 中大審音配詞字庫 | 網頁工具(頁面標 big5,內含字音配對同粵拼欄位,另有讀音檔) | 網頁查詢為主,未見公開 API 或批次下載 | 學術資源,頁面列有聯絡 email | 逐字校對讀音、查異讀 |
| 香港語言學學會粵拼方案 | 1993 年《方案》原件+2012 年答問,講設計理念 | 方案文件,唔係資料表 | 學會公開文件 | 統一拼寫規則、標調規則、隔音字處理 |
| 粵典 Words.hk | 口語詞典網站,詞條附粵拼 | 網站查詢為主 | 內容有版權 | 查口語詞義同用法(唔係讀音表) |
| PyCantonese | Python 套件(MIT),含斷詞、G2P、粵拼轉 IPA、詞頻 | 可以,本地跑 | MIT | 批次處理、做研究原型 |
| canto-hk-g2p | Rust 核心+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),即係話佢一半嘅價值喺「睇字嘅同時聽返個音」,唔喺「畀你一堆原始資料」。
【獨家觀察】呢個落差唔係缺陷,係設計目的:呢啲工具服務嘅係「人查一個字」,唔係「機器攞一批字」。所以如果你嘅需求係批次處理,正路唔係搵一個不存在嘅「官方大表」,而係:
- 用可程式化嘅工具做主幹(PyCantonese 或 canto-hk-g2p);
- 用網頁查詢做抽樣校對(每個唔同聲調、每個多音字抽一兩個核);
- 用方案文件做規則層(點樣標調、隔音字、
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 死機,每一步結果都可以逐條覆核):
- Unicode NFC:網頁抄出嘅「陳」有時係「陳」加 combining 音符,唔正規化就會 dedupe 唔到,重複項慢慢堆。
- 統一聲調表示:粵拼可以用數字(
can4)或者符號(càn)。同一份表入面兩種都出現,之後比對同合併就會出問題。揀一種,全表統一。 - 超長即丟:一個「詞」超過 30 字,通常係句子唔係詞,靜靜丟走,唔好塞入去。
- 唔拋錯:一份可能半壞嘅外部資料,唔應該令你成個 pipeline 停低。
授權三問:商用前一定要逐個問
| 問題 | 點樣答 |
|---|---|
| 1. 可唔可以商用? | 開源套件睇授權條款(MIT/Apache 2.0 通常可以,但 Apache 2.0 要留意 NOTICE 同商標要求);學術資源同網站內容唔等於可以商用。 |
| 2. 可唔可以嵌入自己產品? | 「可以商用」同「可以打包賣俾客戶」係兩件事;Apache 2.0 仲要求保留授權聲明。 |
| 3. 要唔要標來源? | 要嘅話,就喺文件或者介面保留出處連結同版本(例如「讀音依據某字庫某版本,2026-10 查閱」)。 |
【獨家觀察】三個最容易出事嘅位:
- 網頁內容唔等於開放授權。粵典嘅詞條有版權,批量抓落嚟嵌入產品,同「查字典睇答案」係兩回事。
- 學術資源唔等於免費授權。中大字庫頁面列有聯絡 email,正路係問,唔係自己抓。
- Apache 2.0 唔等於零責任。要保留授權聲明同 NOTICE;改動過嘅檔案要標明改動。
六個常見坑
- 抄咗半套拼法:網頁上有人用耶魯式,有人用粵拼數字調。混埋同一份表,之後你分唔出邊個係方案、邊個係手寫。
- 以為拼得出就讀得啱:拼寫規則只保證「合法」,唔保證「自然」。變調、連讀、語氣詞係另一層,唔好將語言學問題當資料問題處理。
- 粵典用字 vs 標準書面語:口語字(嘅/咗/喺)同標準書面語對唔上,兩套資料合併時要有一致嘅用字政策。
- 預設讀音揀咗罕見嗰個:多音字預設值應該用現代標準讀音,唔係詞典第一條。
- 中英夾雜詞冇處理:英文縮寫(KPI、Q3)唔應該轉成中文近音;
canto-hk-g2p呢類工具就係專門處理數字、日期同中英夾雜。 - 過度覆蓋:將所有字都入表,反而令「邊個先」嘅預設值難以維持。要覆蓋嘅應該係你產品真正會出現嘅詞。
落地自查清單(十條,逐條打剔)
- □ 表入面每一行都係「字或詞」,冇句子
- □ 全部行都做咗 Unicode NFC
- □ 聲調表示全表只有一種
- □ 多音字用陣列,而且有預設讀音
- □ 預設讀音係現代標準讀音
- □ 情境讀法(人名/地名/品牌)另開一張覆蓋表
- □ 授權三問逐個有答案,而且有記錄
- □ 出處同版本寫咗落表(唔係得個 source 欄空住)
- □ 有一份 50 條以內嘅人工核對抽樣清單
- □ 表入面冇任何未確認嘅猜測讀音(猜嘅要另外標記,唔好混入正式表)
第 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)。想了解我哋嘅背景,可以睇關於港嘢;授權同資料集嘅使用問題,可以用聯絡表格問我哋。
相關文章
廣東話拼音轉換教學:文字轉拼音、拼音轉字同批次處理
用兩個開源 G2P 工具實際跑過同一批文字,逐項對照正規化、分詞、多音字消歧嘅實際輸出同已知失效模式,附可重現嘅驗證方法。
2026年10月30日
廣東話拼音輸入法教學:三大平台安裝、打字技巧同詞庫設置
廣東話拼音輸入法點裝、點打?Windows、macOS、手機三大平台安裝步驟,打粵拼嘅五個規則、聲調點解唔使打、詞庫同自造詞設定,附可重現嘅流暢度量度方法。
2026年10月30日
廣東話專有名詞讀音規則:人名、品牌、地名、縮寫五類點處理
專名讀音唔係查字典就得。本文拆人名、品牌、地名、縮寫、中英夾雜五類專名嘅讀音規則,俾你一張可以直接抄落去嘅專名讀音登記表。
2026年10月25日