Home

Awesome

BigCiDian

1. Goal

This project is an attempt to create a pronunciation lexicon covering both English and Chinese words in a unified phoneset for ASR applications.

P.S. "CiDian" means "lexicon" in Chinese.

typical use cases in Chinese ASR applications:

你手机上都装了什么 APP ?
APPLE 的新 MACBOOK PRO 真漂亮
上个月 PRADA 出了款新包包
手机开了 GPRS 导航
世界杯 H 组小组赛

2. Phoneset

The unified phoneset should be a simple and precise phoneset that covers both languages. Note that the mapping listed below are heavily based on IPA.

2.1 English Phoneset Mapping

English entries are derived from CMUDict 0.7b, hence we need a mapping from ARPA phoneset to target phoneset.

ARPAIPACMUDict example entries
AA0aicon:AY1 K AA0 N
AA1aheart: HH AA1 R T
AA2akmart: K EY1 M AA2 R T
AE0æromance: R OW1 M AE0 N S
AE1ælambda: L AE1 M D AH0
AE2æsetback: S EH1 T B AE2 K
AH0əstation: S T EY1 SH AH0 N
AH1ʌbug: B AH1 G
AH2ʌhaircut: HH EH1 R K AH2 T
AO0ɔhongkong: HH AO1 NG K AO0 NG
AO1ɔlaw: L AO1
AO2ɔlayoff: L EY1 AO2 F
AW0aufoundation: F AW0 N D EY1 SH AH0 N
AW1aufounder: F AW1 N D ER0
AW2auhometown: HH OW1 M T AW2 N
AY0aihypothese: HH AY0 P AA1 TH AH0 S IY2 Z
AY1aiice: AY1 S
AY2aiiceland: AY1 S L AH0 N D
Bbbike: B AY1 K
CHchchase: CH EY1 S
Dddesk: D EH1 S K
DHðthose: DH OW1 Z
EH0eprincess: P R IH1 N S EH0 S
EH1eprofessor: P R AH0 F EH1 S ER0
EH2eprogress: P R AA1 G R EH2 S
ER0ə rprogrammer: P R OW1 G R AE2 M ER0
ER1ə rpurge: P ER1 JH
ER2ə rshowgirl: SH OW1 G ER2 L
EY0eieighteen: EY0 T IY1 N
EY1eiemail: IY0 M EY1 L
EY2eithursday: TH ER1 Z D EY2
Ffface: F EY1 S
Gggive: G IH1 V
HHhhey: HH EY1
IH0ifacing: F EY1 S IH0 NG
IH1ifear: F IH1 R
IH2ifellowship: F EH1 L OW0 SH IH2 P
IY0iiemail: IY0 M EY1 L
IY1iiprefix: P R IY1 F IH0 K S
IY2iiincrease: IH1 N K R IY2 S
JHzhgesture: JH EH1 S CH ER0
Kkcat: K AE1 T
Lllack: L AE1 K
Mmmay: M EY1
Nnno: N OW1
NGŋthing: TH IH1 NG
OW0əucrypto: K R IH1 P T OW0
OW1əutoken: T OW1 K AH0 N
OW2əuearphone: IH1 R F OW2 N
OY0ɔiinvoice: IH1 N V OY0 S
OY1ɔifloyd: F L OY1 D
OY2ɔiepisode: EH1 P IH0 S OW2 D
Pppat: P AE1 T
Rrrisk: R IH1 S K
Sssing: S IH1 NG
SHshshake: SH EY1 K
Tttest: T EH1 S T
THθthink: TH IH1 NG K
UH0ufulfill: F UH0 L F IH1 L
UH1ufull: F UH1 L
UH2ugoodbye: G UH2 D B AY1
UW0uurescue: R EH1 S K Y UW0
UW1uufool: F UW1 L
UW2uurestroom: R EH1 S T R UW2 M
Vvvery: V EH1 R IY0
Wwwest: W EH1 S T
Yyyes: Y EH1 S
Zzzero: Z IY1 R OW0
ZHʒillusion: IH2 L UW1 ZH AH0 N

notes: If you find anything that doesn't make sense in the mapping table, please let me know, thanks

2.2 Chinese PinYin Mapping

Chinese entries are extracted from DaCiDian project

Here is a PinYin to IPA mapping from educational prospective: https://resources.allsetlearning.com/chinese/pronunciation/Pinyin_chart

With a few mapping modifications and symbolic adaptations, here is the final PinYin to target phoneset mapping

2.3 tone

There are normally 5 tones in Chinese PinYin system ranging from 0 ~ 4. However there is no tone definition in English. In BigCiDian, Chinese tonal information is retained and merged with untoned English, so the resulting phoneset may contain 6 tonal variation(1 from English and 5 from Chinese):

e.g. for phoneme *ai*

1. HI -> h ai
2. 哎 -> ai_0
3. 掰 -> b ai_1
4. 还 -> h ai_2
5. 凯 -> k ai_3
6. 外 -> w ai_4

2.4 the unified phoneset

The final unified bi-lingual phoneset details are listed below:

phonemeCN exampleEN example
a把 b a_3AACHEN a k ə n
æCAT k æ t
ai爱 ai_4KITE k ai t
an安 an_1
羊 y aŋ_2
au老 l au_3LOUD l au d
b白 b ai_2BUT b ʌ t
ch陈 ch ən_2CHEST ch e s t
d大 d a_4DAY d ei
ðTHIS ð i s
eBED b e d
ei累 l ei_4LAKE l ei k
ə鹅 ə_2COCA-COLA k əu k ə k əu l a
ən陈 ch ən_2
əŋ横 h əŋ_2
ər二 ər_4
əu欧 əu_1BOAT b əu t
f房 f aŋ_2FACE f ei s
g刚 g aŋ_1GIVE g i v
h海 h ai_3HUG h ʌ g
i天 t i an_1HIT h i t
ie别 b ie_2
ii比 b ii_3BEAT b ii t
iii吃 ch iii_1
in音 y in_1
听 t iŋ_1
j九 j i əu_3
k看 k an_4CAKE k ei k
l来 l ai_2LAKE l ei k
m马 m a_3MAKE m ei k
n那 n a_1NIKE n ai k ii
ŋINTERESTING i n t ə r e s t i ŋ
ɔOFF ɔ f
ɔiJOY zh ɔi
p胖 p aŋ_4PACE p ei s
q钱 q i an_2
r让 ʒ aŋ_4RISK r i s k
s丝 s iii_1SING s i ŋ
sh上 sh aŋ_4SHAKE sh ei k
t团 t u an_2TIME t ai m
ts才 ts ai_2
uBOOK b u k
从 ts uŋ_2
桌 zh uɔ_1
uu不 b uu_4TWO t uu
vVICTORY v i k t ə r ii
ʌCUT k ʌ t
w王 w aŋ_2WEST w e s t
x西 x ii_1
y言 y an_2YES y e s
yu去 q yu_4
yue缺 q yue_1
z赞 z an_4ZOO z uu
zh中 zh uŋ_1GESTURE zh e s ch ə r
ʒ让 ʒ aŋ_4LEISURE l e ʒ ə r
θTHINK θ i ŋ k

So overall there are 56 phonemes in the unified phoneset(regardless of tones).

Theoretically some phonemes can be split with smaller granularity(eg. au->a u, ɔi->ɔ i, an->a n ...), hence making the phoneset even more compact. But it is a common practice that larger acoustic modeling units are beneficial for Chinese ASR accuracy, and the existence of decision-tree based state-tying, makes base phoneset size less irrelevant to ASR problem.

I may or may not change the unified phoneset in the future, currently it seems to be sufficient for my purpose.

3. Usage

sh run.sh should give you a ready-to-use bi-lingual ASR lexicon (lexicon.txt), and a phoneset list(phones.list) in project root directory.

4. Extend entries

To extend the final lexicon with entries of your own interest(say "IPHONE", "华为P30"), you can either:

or:

5. Experiment result

In AISHELL-2 Mandarin ASR task, replacing Chinese lexicon(DaCiDian) with multilingual CN-EN lexicon(BigCiDian), details are showed below:

For DaCiDian, system performance:

----- test -----:
%WER 44.39 [ 21986 / 49532, 338 ins, 2085 del, 19563 sub ] exp/mono/decode_test/cer_9_0.0
%WER 24.25 [ 12011 / 49532, 393 ins, 792 del, 10826 sub ] exp/tri1/decode_test/cer_12_0.0
%WER 22.13 [ 10963 / 49532, 396 ins, 644 del, 9923 sub ] exp/tri2/decode_test/cer_12_0.0
%WER 19.29 [ 9555 / 49532, 263 ins, 640 del, 8652 sub ] exp/tri3/decode_test/cer_13_0.5
%WER 8.33 [ 4125 / 49532, 84 ins, 192 del, 3849 sub ] exp/chain/tdnn_1a/decode_test/cer_8_0.5

For BigCiDian, system performance:

%WER 43.92 [ 21754 / 49532, 405 ins, 1574 del, 19775 sub ] exp/mono/decode_test/cer_7_0.0
%WER 22.54 [ 11163 / 49532, 406 ins, 652 del, 10105 sub ] exp/tri1/decode_test/cer_11_0.0
%WER 21.09 [ 10445 / 49532, 377 ins, 609 del, 9459 sub ] exp/tri2/decode_test/cer_12_0.0
%WER 18.47 [ 9148 / 49532, 265 ins, 621 del, 8262 sub ] exp/tri3/decode_test/cer_13_0.5
%WER 8.22 [ 4072 / 49532, 68 ins, 260 del, 3744 sub ] exp/chain/tdnn_1a/decode_test/cer_9_0.5

Conclusion

THE END