由江明勳老師發想,我們一起開發的「HTML5 Speaking」,是一個可以練習看文(圖)朗讀的自學小工具,它利用網頁瀏覽器內建的語音辨識功能,將使用者麥克風錄到的語音,辨識為文字以後,再跟題目的文字去進行比對。但是不論是中文還英文,都會有同音字的問題,目前中文是先轉為無調號的拼音後比對的,同音字的問題得以解決,英文同音字的部份則得另想辦法了。
當初為了解決部份字詞的語音有不容易辨識的問題,在題庫的設定中,是可以指定「容錯規則」的,也就是可以指定在題目中的部份字,有多種答案,例如:
OK. Have fun, and be careful.
上面這一句中,「OK」辨識的結果常是「Okay」,所以在 HTML5 Speaking 中總是過不了關,針對這一題,我們可以在題庫中,利用「第四欄位」,來告訴 HTML5 Speaking,「OK」或是「Okay」,兩個答案都可以。
按照預設的欄位分隔符號為兩個井字號「##」,因為原題目只使用了第一個欄位放英文,所以再加三組「##」,也就是六個井字號,就可以在「第四欄位」中開始寫「容錯規則」,我們可以在題庫中這樣設定:
OK. Have fun, and be careful.######(OK|Okay)
上面的「容錯規則」是「(OK|Okay)」,「|」這個符號是「或」的意思,所以在進行比對答案時,語音辨識結果是「OK」或是「Okay」都算答對。
可以觀察一下 [圖1] 中,綠色箭頭是語音辨識的結果「Okay」,但紅色箭頭所指的題目是「OK」。這題過關!
[圖1] 題庫使用(OK|Okay)容錯規則提升過關率 |
另一種狀況是人名、地名,可能更難掌握語音會辨識出什麼文字,只好使出殺手鐧,使用「萬用字元」「.*」,例如這一句:
go to Kaohsiung
「Kaohsiung」因為是音譯的,一直過不了關,那就使用「萬用字元」的「容錯規則」,只要有辨識到文字,任何字,不管幾個字,都算過關:
go to Kaohsiung######(Kaohsiung|.*)
上面在題庫的第個欄位中,設定了「容錯規則」「(Kaohsiung|.*)」,「.*」代表無論辨識出什麼字都當作是「Kaohsiung」,哈!也就是,如果我對著麥克風說「go to Taipei」,它也當作是去高雄了。
內建的容錯規則
前面介紹了兩種自訂的「容錯規則」,其實在 HTML5 Speaking 的設定中,已經預設了一百多條有關單位的「容錯規則」了,不然如果題目中有數字加單位的,幾乎都會卡關。
[圖2] 常用的單位有「容錯規則」 |
[圖2] 這題「thirty meters」被辨識為「30 m」,過關了,因為在 HTML5 Speaking 中,會將數字轉換,也為長度單位「meter」、「meters」加上了「容錯規則」。
進階的容錯規則
可以一字對應到多字嗎?例如題目中是用「她」,但是辨識出來可能是「他、它、牠」(哈!其實好像只有出現「他」的經驗),那怎麼讓「她」可以是「她、他、它、牠」?
如果還記得前面說過,「|」是「或」的意思,我們可以定這個的容錯規則:
(她|他|它|牠)
這樣子,題目中的「她」,就可以是「她、他、它、牠」任何一個。
如果一個句子中有兩個地方需要建立規則,怎麼辦呢?
還是一樣的,利用題目設定的「第四欄位」,不同字間,多加一個逗號即可,例如,這句:
this is a dog.
我想讓 this 的位置,可以是 this 或是 that;讓 dog 的位置,可以是 dog 或是 cat,那就將題目設定改為這樣:
this is a dog.######(this|that),(dog|cat)
在兩對括號之間,多加了一個逗號分隔,就變成兩條規則了。
來一點更複雜一點的,在預設的容錯規則中有這一條:
((too|two|to)|too|two|to)
注意上面字體放大的部份,它代表當題目中有 to、two、too 三個的任何一個時,都可以套用這條規則,可以說是下面這三條規則的合體:
(too|two|to)
(two|too|to)
(to|too|two)
沒有留言:
張貼留言