九九乘法你問我答
過去在學習九九乘法的時候,總要將答案寫在考卷或作業本裡,再由老師檢查有沒有計算錯誤,所以在這個 Webduino Blockly 的範例,會透過「語音聲控」和「語音朗讀」的互相搭配,做出電腦「發出語音」提問,學生「講出答案」,電腦就能判斷答案對不對的應用。
本篇範例會使用:變數、文字、邏輯、列表、顯示文字、數學式、語音聲控 和 語音朗讀,如果尚未熟悉相關用法,請點選參考閱讀。
點擊遙控器按鈕,語音朗讀發問
打開網頁互動區,下拉選單選擇遙控器,因為這個範例的目標,將要做出「點選遙控器的按鈕,遙控器上會顯示問題並透過語音發問,回答後顯示答對與否」。
設定當點擊按鈕 1 的時候,會產生一個九九乘法的問題,因為九九乘法需要兩個數字相乘,所以使用兩個變數 a 和 b,使其分別等於 2 到 9 的隨機數,再新增一個變數 r 作為 a 乘以 b 的答案,接著使用遙控器螢幕顯示的積木,顯示「 a x b = ?」的問題提示。
注意,因為語音辨識程式碼限制,變數名稱不能是 result。
使用語音朗讀的積木 ( 包含結束後執行的動作 ),在點擊按鈕的時候除了顯示問題,也會透過語音朗讀唸出題目,完成後可以先執行程式測試一下,點擊遙控器按鈕 1,就會聽到電腦詢問問題,且在遙控器的螢幕裡也會出現對應的問題內容。
使用語音辨識,唸出答案並進行判斷
在語音朗讀完題目之後,放入語音辨識的積木,設定一個變數 answer 內容為語音辨識的結果,由於這邊沒有地方可以看到辨識的文字,可以使用控制台 console 來查看辨識的文字正確性。
控制台顯示請參考:控制台
因為是接收語音辨識的結果,所以必須要下達「結束」的指令,當辨識到結束的指令,就會開始判斷答案是否正確,這裡將結束的指令設定為「對不對」,透過邏輯積木的判斷,只要語句裡頭出現「對不對」三個字,就會停止辨識。
類似在野外使用對講機,一段話終止之後會加個 over ,表示結束。
當語音辨識停止,放入第二層邏輯積木,如果剛剛辨識的文字裡有出現計算的結果,就認定這一題答對,否則就是答錯。
設計回答錯誤的對應邏輯
如果只進行到這一步,除了真正的回答錯誤 ( 例如 35 回答 32 ),還有一種回答錯誤是語音辨識所造成,例如阿拉伯數字 5,辨識出來可能會變成中文字的五,這時也會發生錯誤答案的狀況。
為了解決這個問題,必須要透過一些較為進階處理方式,首先建立變數 chineseArray,設定為一個「二維列表」,在第一層列表有十個空格,每個空格內是另外一個列表,有兩個空格,分別對應中文的一二三四五和阿拉伯數字的 12345。
新建一個流程 chinese,並設定一個流程內的變數 text ( 待會要把辨識的 answer 放到這個變數裡 ),接著設定一個變數 check 等於 1,作為待會邏輯判斷使用,此處的重點在於建立兩個迴圈,外層迴圈設定 i,取出 text 的每個字,取出每個文字之後,再由另外的迴圈設定 k,進行 chineseArray 的判斷。
在內層的迴圈,放入邏輯判斷,判斷如果 k 的第一個值是中文的一二三四五,就設定一個變數 num 為對應的阿拉伯數字。
判斷後再加入一層邏輯,如果答案是正確就顯示並朗讀「恭喜你答對了」,否則就顯示並朗讀「答錯了,正確答案是...」。
然而如果全部都判斷過一次,還是沒有答案的話,就會執行並朗讀「答錯了,正確答案是...」的結果。
最後回到剛剛的語音聲控的積木,把 chinese 的流程放進去,text 的缺口放入 answer 的變數,就大功告成了。
完成結果
執行程式之後,點擊遙控器的按鈕 1,就會聽見語音問九九乘法的問題,同時遙控器的畫面也會顯示題目,此時可以用講話的方式回答,回答完後唸出「對不對」三個字,就會聽見正確或不正確的答案了。
聯絡我們
如果對於 Webduino 產品有興趣,歡迎透過下列方式購買:
個人線上購買:https://store.webduino.io/ ( 支援信用卡、超商取貨付款 )
企業&學校採購:來信 [email protected] 或來電 07-3388511。
如果對於這篇教學有任何問題或建議,歡迎透過下列方式聯繫我們:
Email:[email protected] ( 如對於產品有使用上的問題,建議透過 Email 附上照片或影片聯繫 )
Facebook 粉絲團:https://www.facebook.com/webduino/
Facebook 技術討論社團:https://www.facebook.com/groups/webduino/