前幾天寫了一個利用AccelerometerSensor計算角度變化的APP,當時想要在APP畫面上加一些說明文字,以免使用者因不正確的操作而量測到錯誤的結果,但後來因為懶惰病發作就什麼說明文字都沒加,呵呵呵!

其實在一些比較高檔的儀器設備上,除了文字說明外通常還會有語音的導引,最近有低年級學生在跟我作有關於居家安全與照護的系統與APP的設計,我想語音提醒應該也是系統中可以發揮的一塊,所以寫了這個簡單的範例來給學生參考。

在這個例子中我用了兩個方式來讓程式可以依所需的文字把它朗讀出聲音來,一種是Google線上語音API,一種是AppInventor中的TextToSpeech元件。首先是使用Google線上語音API的作法,在這個作法中是在程式中安排一個Player元件,在抓取所需朗讀的文字之後,利這個Player元件直接去播放由Google線上語音API產生的語音檔案

接下來是使用AppInventor中的TextToSpeech元件讓程式朗讀文字,不過很奇怪的是我去查詢官方的文件,內容裡都沒有提到支援中文語音(這樣我就沒辦法設定Country及Language這兩個參數),而在網路上查詢的結果也一面倒地說沒有支援,不過實際測試的結果是不用設定Country及Language這兩個參數,直接使用TextToSpeech元件就可說出一口標準的國語

使用TextToSpeech元件跟Google線上語音API一個很大的差別就是TextToSpeech元件可以調整說話的音調(Pitch)與速度(Speed),其中這個速度的調整我覺得很重要,因為對於老人或聽力障礙的人,可以把文字念慢一點讓他們更容易聽清楚

對於音調(Pitch)與速度(Speed)的調整,我使用了兩個Slider元件使用者用拉動的方式來調整說話的音調高低與速度

經測試,使用Google線上語音API朗讀的速度比較偏向一般人說話的速度,而使用TextToSpeech元件(以預設值Speed=1)朗讀的速度似乎偏快,不過因為TextToSpeech元件可以調整速度,所以不會有什麼應用上的問題。

Google線上語音API與TextToSpeech元件應是使用同一組女生數位語音,說了一口標準的國語,原本以為調整Pitch可以讓聲音聽起來像男生,測試的結果卻跟我想像的不一樣,因為聽起來單純像是女生故意壓低音調來說話!