顯示具有 App-Inventor 標籤的文章。 顯示所有文章
顯示具有 App-Inventor 標籤的文章。 顯示所有文章

2021年4月29日 星期四

App Inventor : TTS 文字轉語音講中文

2021年4月29日 星期四

 App Inventor 內建了 TextToSpeech (TTS) 的積木,可以把字串以合成的語音唸出來。線上使用說明文件在這個網址:

看起來很簡單啊~~哈!如果讓它講英是沒什麼問題,最大的問題是在「Country」中找不到台灣,在「Language」中找不到中文;測試的結果,當然是遇到中文就變啞巴。

看一下手機中的到底安裝了什麼 TTS 的相關資料?

TTS 一般是歸在 Android 手機設定的「語言與輸入」裡面,我的紅米手機是放在「文字轉語音輸出」:


這支舊的紅米手機內建的 TTS 引擎是「Pico TTS」


再來看 Pico TTS 支援哪些語言:


難怪不會說中文,根本沒有中文的語音資料。

沒關係!把 TTS 「引擎」換成有支援中文的Google 文字轉語音引擎」,到 Google Play 中找到「Google 文字轉語音引擎」,安裝完,重新回到「語言與輸入」的設定中,應該就可以選取「Google 文字轉語音引擎」了


設定完,再去 App Inventor 的 App 中測試,應該可以講中文了。



App Inventor : 語音辨識與文字轉語言合用的趣味

 早上利用 App Inventor 把語音辨識測試程式中加入了 TTS (文字轉語音)的功能,讓手機將語音辨識完的文字,再透過 TTS 唸出來,結果講了幾個詞以後,手機變成自言自語,輸出變輸入,輸入又變輸出......


Google 小姐就這麼一直不停的講,完全停不下來!要不是手機快沒電了,還真想看看她會不會當掉呢!

當然囉~如果有插上耳麥,麥克風收不到喇叭的聲音,就不會像這樣掉到迴圈中,無限循環了。




2021年4月28日 星期三

App Inventor : SpeechRecognizer 語音辨識

2021年4月28日 星期三

最近要寫一個以語音發出指令,然後利用手機控制馬達的程式,現在 MIT App Inventor 中的 Media 就內建有 SpeechRecognizer 語音辨識的積木可以來構建我需要的功能。

看 SpeechRecognizer 的線上說明,只要將 UseLegacy 的屬性值改為 False,就可以讓語音辨識的功能在背景執行,而且可以連續地使用,直到關閉功能為止。這部份和舊版時,想要不中斷使用語音辨識,得利用 Timer 來自己判斷並維運,有很大的差異。

但是我試了兩天,並不是像說明寫的那麼簡單啊!無論我將 UseLegacy 設為 True 或是 False,它的差別只有會不會出現說話以供辨識的提示而已;只要不說話了,SpeechRecognizer 就罷工休息了。

不過觀察了一下,每次罷工前,畫面總會出現錯誤代碼和訊息,大概就類似底下的:

  • Error 3802: Client Side Error
  • Error 3806: No Match
  • Error 3807: RecognitionService Busy
  • Error 3809: No Speech Input

有留下線索就好辦了!

如果是 Error 3802,SpeechRecognizer 會繼續工作,但如果是 Error 3806,SpeechRecognizer 就會去睡大頭覺了!

因此我試著在發生 Error3806 時,就重新利用 GetText() 叫醒 SpeechRecognizer。

另外當然一個需要再度呼叫  GetText() 的地方就是當語音已經辨識完成時。根據線上說明,當 SpeechRecognizer 進行完語音辨識時,會觸發 AfterGettingText 事件,而在  UseLegacy 設為 False 時,最後一部份完成辨識,在  AfterGettingText 中,還會把 partial 變數設為 False。所以在  AfterGettingText 中,可以利用  partial 是否為 False 來判斷它已辨識完成,我們就重新利用 GetText() 叫醒 SpeechRecognizer。

先來看看利用一個 Button、一個 Label 和一個本篇的主角 SpeechRecognizer 所構成的完整程序:


Error3806  在哪裡處理呢?

因為只有一個 Screen (Screen1) ,所以我們在 Screen1.ErrorOccurred 中放入檢查錯誤代碼,並重新呼叫  GetText()  的程序。

另一個讓語音辨識不中斷的關鍵則在 AfterGettingText 中:


注意上面積木塊中的第二個 if 積木,它用來在 partial 為 Fasle 時,重新呼叫  GetText()  的程序。

如果能處理 Error3806 及 partial 為 False 這兩點,並重新呼叫  GetText() ,就能讓 App Inventor 的語音辨識能夠一直維持上線狀態。






2015年2月4日 星期三

3DP : Arduino : 藍牙遙控履帶車

2015年2月4日 星期三
肖想一臺履帶車很久了,一月初去松山工農參加3D列印機組裝及調校研習,帶回了一臺 Prusa i3 3D列印機,一邊調校,一邊列印,就這麼印完一臺履帶車所需的履帶元件。原本想利用之前拆解2.5吋軟磁機,閒置一旁許久的金屬殼當車身,不過履帶一直「勞鏈」,試過很多方法都沒解決問題,最後還是決定用 PLA 材料印了原設計裡的車身來搭配。整臺車都印完了,這履帶車該順利上路了吧?!哈~哪有那麼輕鬆,還是「勞鏈」連連啦!沒關係,試了幾天,我研究出不「勞鏈」的組合方法了,順便加上藍牙遙控的功能,終於完成了第一臺 3DP 藍牙遙控履帶車。


2014年12月9日 星期二

Arduino : MeArm 藍牙遙控自走車

2014年12月9日 星期二
最近玩的 MeArm 搖桿機械手臂,加上年初玩的「Android 遙控藍芽科學魔法車」,兩者結合起來就可以變成「MeArm 藍牙遙控自走車」。

MeArm 藍牙遙控自走車接線圖



錄了一小段 MeArm 藍牙遙控自走車實際操作的影片:




2014年11月27日 星期四

Android : MeArm 藍芽遙控 App

2014年11月27日 星期四
買了一片 9 元的單面洞洞板製作了 MeArm 搖桿的控制板,便宜的果然是最貴的,技術不好加上用料貪便宜,製作第一個時,著實花了不少的時間,不過,困境倒是訓練解決問題能力的好機會,有了經驗以後,再製作時快很多。

做了許久的勞作,再來就是想花一點時間在改進機電與操控程式的部份。年初曾玩了好一陣子的「藍芽無線遙控科學魔法車」,觀察孩子們以搖桿在操控 MeArm 時,其實有不少人對沒有標示功能說明的搖桿是有障礙的,因此,試著將遙控科學魔法車的經驗遷移到 MeArm 的操控上,在搖桿控制板上焊了四個腳位的 2.54 母座,可以方便的插上 HC-05 藍芽模組,線路依底下的對應關係來連接:

  • HC-05 VCC : Arduino 5V
  • HC-05 GND : Arduino GND
  • HC-05 TXD : Arduino RXD (D0)
  • HC-05 RXD : Arduino TXD (D1)


加完 HC-05 藍芽模組的 MeArm 如下圖:



2014年4月4日 星期五

Android : S4A_Bluetooth 藍芽遙控 App

2014年4月4日 星期五
上回用 Google Play 中找到的 「Bluetooth Serial Controller」來遙控安裝了 S4A firmware 的 Arduino ,可以自訂按鈕要送出什麼資料的功能滿方便的,小缺點是得自己算出 Arduino 腳位的字碼,哈~光那些十六進制的符號可能就會嚇壞一堆人了。有了之前寫 MIT App Inventor 的經驗,加上對如何和裝了 S4A firmware 的 Arduino 通訊有較清楚的了解後,決定用 App Inventor 重新再寫一個 S4A_Bluetooth 的 App 來控制我的「S4A 科學魔法車」。

S4A_Bluetooth 的主要特性如下:

  • 針對 S4A firmware 而設計。
  • 可以自訂每個按鈕要使用哪些 Arduino 的腳位及送出的值,包括 pin 10,11,12,13 (Digital:on/off)及 pin 5,6,9 (PWM: 0~255)。
  • 自訂的值會自動儲存,打開程式時會自動載入。


2014年3月23日 星期日

Arduino : 用 Android 遙控藍芽科學魔法車

2014年3月23日 星期日
上回以「S4A」(Scratch for Arduino)在電腦上透過藍芽無線遙控科學魔法車,也試過別人寫的 Android App 來遙控同一臺車,其實如果有 Scratch 的設計經驗,可以試試具類似界面的「MIT App Inventor」來製作自己的 Android App。之前都沒有 App Inventor 使用經驗的我,算是第一次就上手,在 S4A firmware 傳輸資料的演算法弄清楚後,試著寫出了遙控 S4A 科學魔法車的 Android App 了,簡單、好玩!雖然仍然有 bugs,分享一下製作的心得。


 
雄::gsyan © 2009. Design by Pocket