通常我們將可辨識的語句放在一個文字檔案,以唐詩為三百首例,若希望我們的辨識系統能夠辨識使用者以語音輸入的一句唐詩,那我們共可抽出 3221 句,放在 tangPoem.rt 檔案內,如下:
對電腦而言,第一個步驟,就是要知道這些文句如何發音。如果 RT 的數量不大,我們當然可以使用手工來標注音,但是對於大量的 RT 而言,就要靠電腦來自動進行標音工作。首先,電腦必須知道每一個國字的注音,於是我們必須有一個 WPA 檔案,中文範例如下:
... 邶 bei ㄅㄟ 采 cai ㄘㄞ 金 jiN ㄐㄧㄣ 長 JaG ㄓㄤ 長 CaG ㄔㄤ 門 mrN ㄇㄣ 阜 fu ㄈㄨ ... 在上述範例中,第一欄是國字,第二欄是對應於注音的音節代號,第三欄則是國語注音。由於語音辨識系統目前並沒有用到音調資訊,所以上述的表格並沒有包含音調資訊。此外,此表格也列出了破音字,例如「長」的發音有兩個。 英文範例如下:
... eiszner ay z n er eitel ay t ah l either iy dh er#ay dh er eitzen ay t z ah n ejaculate ih jh ae k y uw l ey t ... 在上述範例中,每一個英文詞彙就對應到一個發音(以音標代號表示,例如 ae 就是蝴蝶音),同樣也會發生破音字,例如 either 就有兩種發音,此時我們使用 # 來分隔這兩種發音。
有了WPA檔案後,我們就可以進行「暴力法」的注音,以唐詩的「朝辭白帝彩雲間」來說,根據破音字發音的各種組合就可以標示成四種發音:
而「千里江崚一日還」則可標示成
- 朝(ㄓㄠ )辭白(ㄅㄞˊ)帝彩雲間
- 朝(ㄓㄠ )辭白(ㄅㄛˊ)帝彩雲間
- 朝(ㄔㄠˊ)辭白(ㄅㄞˊ)帝彩雲間
- 朝(ㄔㄠˊ)辭白(ㄅㄛˊ)帝彩雲間
因此我們可以根據此種暴力法,產生 SYL 檔案,此檔案以音節代號列出每一句可能的發音,範例如下:
- 千里江崚一日還(ㄏㄨㄢˊ)
- 千里江崚一日還(ㄏㄞˊ)
- 千里江崚一日還(ㄒㄩㄢˊ)
... Cau-cy-bai-di-cai-YN-jieN 56 Cau-cy-buo-di-cai-YN-jieN 56 Jau-cy-bai-di-cai-YN-jieN 56 Jau-cy-buo-di-cai-YN-jieN 56 cieN-li-jiaG-lG-i-Ry-hai 57 cieN-li-jiaG-lG-i-Ry-huaN 57 cieN-li-jiaG-lG-i-Ry-sYaN 57 ... 在上述範例中,前四句是「朝辭白帝彩雲間」的所有可能發音,而後三句則是「千里江崚一日還」的所有可能發音,56 與 57 則是代表這兩句在 rt 檔案出現的位置(列數),以便反查。此種「暴力注音法」的優缺點如下:另外一種方法,則是「詞庫標音法」,我們必須先見一個破音字的詞庫,把所有破音字可能出現的詞彙列出來,例如:
- 優點:列出所有可能的發音,不會發生標注音出錯的情況。(這種情況特別適用於標示人名的發音,例如我有位大學同學的大名是「陸重和」,在無法確認使用者會如何發音的情況下,只有列舉所有可能的發音。)
- 缺點:語音搜尋範圍變大,計算時間比較久,而且也產生一些不可能的發音,可能會降低辨識率。
... 口吃 0073-1252 吃軟不吃硬 0021-3423-2094-0021-2814 吃喝玩樂 0021-0371-3382-0414 吃飯 0021-1284 吃裡扒外 0021-1903-0232-3184 ... 以「口吃」來說,對應的資料是:有了破音字詞庫後,我們就可以進行「詞庫標音法」,有兩種作法:
- 007(ㄎㄡˇ的音碼)3(第三聲)
- 125(ㄐㄧˊ的音碼)2(第二聲)
「詞庫標音法」的優缺點如下:
- Maximum matching:
- 從頭比對:我喜歡到廟口吃小吃 ===> 我|喜歡|到|廟口|吃|小吃
- 從尾比對:我喜歡到廟口吃小吃 ===> 我|喜歡|到|廟|口吃|小吃
- Dynamic programming:(細節待補充)
在英文方面,則會遇到新的詞彙,這些詞彙可能不出現於 WPA 檔案之中,例如商標名 Benq 或 google,或是人名 Schwarzenegger 或地名 Rocktop 等,此時就需要人工輔助標示,或是由電腦進行發音的預測。
- 優點:不會產生不可能的發音。
- 缺點:還是可能會出錯,例如
- 搶詞:例如「我喜歡到廟口吃小吃」中的「廟口」和「口吃」。
- 無法由詞庫判斷:「我還你10元」、「我還欠你10元」中間的「還」的發音,必須靠詞性或語意分析,才能標示出正確發音。另外,一般人名的發音,也很難從詞庫來判斷。
Audio Signal Processing and Recognition (音訊處理與辨識)