少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

在Scratch 3.0中,亞馬遜為Scratch提供了“文字朗讀”擴展積木。使用這些積木,我們可以編寫Scratch程序將一串文字轉化成語音,類似於智能手機上電子書APP的聽書功能,或者新聞APP的聽新聞功能。

亞馬遜的英語文本朗讀已經十分出色,基本上聽不出是機器在朗讀。當前亞馬遜支持14種語言,包括英語、法語、德語、日語等,只要你能提供相應語言的文字,它們就能被自動朗讀出來。

本文我們將從經典的教材書新概念英語取一個例子,模擬一段英文對話,並且將對話內容以語音朗讀出來,形成一個英語教學動畫。

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

視頻中的語音都是電腦自動將文字轉換而成,不是編程時錄入的真人音

下面是新概念英語第一冊的第一課,選取該篇純粹是因為取材便利,你也可以用其他的英語對話替代。

Excuse me!

對不起

Yes?

什麼事?

Is this your handbag?

這是您的手提包嗎?

Pardon?

對不起,請再說一遍

Is this your handbag?

這是您的手提包嗎?

Yes, it is.

是的,是我的。

Thank you very much.

非常感謝!

這是兩個人之間的對話,內容是A撿到一個手提包並返還給失主B的簡單過程。

00 軟件分析

需求說明:

01 引入擴展積木

點擊左下角的【添加擴展】按鈕,在新打開的頁面中找到【文字朗讀】,點擊它。頁面會回到Scratch主頁面,注意觀察左側的代碼積木欄,新增了【Text to Speech】分類,右側增加了3個綠色的積木。

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

02 添加角色

添加2個角色,注意要一個男一個女,這樣做是為了能夠清晰區分對邊的雙方,也是為了試用新積木功能的需要。

刪除默認的小貓角色。

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

角色的朝向

添加Abby和Devin兩個角色後,發生一個問題,我們能夠想到,對話雙方應該是面對面的,可是我們的這兩個角色面向同一個方向。所以,需要優化,這是一個之前沒有講解過的內容,也是Scratch 3.0新增的操作方法,請注意觀看和嘗試操作,並且與以前講解的角色“面向xx方向”積木作比較,理解

角色翻轉與角色面向的區別

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

03 調整角色的大小

將角色調整到合適的大小和位置。

04 更換舞臺背景

按照你自己的喜好,將默認的舞臺背景替換成合適的背景圖。

我選擇的是背景庫“戶外——Metro”。

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

05 文字朗讀積木講解

編碼前,我們先來了解下這些新積木的用法,工欲善其事必先利其器。

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

1、朗讀:朗讀輸入框中的文本

2、設置嗓音:默認的“中音”是個溫柔的女聲,“男高音”聽起來也挺好,剩下3個大家自己感受下吧~

3、設置語言:這裡的語言設置應該和【朗讀__】積木中的文字一致。但是,你也可以填寫英文句子卻把朗讀語言設置成日語,聽聽日式英語也別有一番風味

需要注意的是,文字朗讀功能暫時不支持中文,略有遺憾,希望亞馬遜在後續可以增加朗讀中文。

06 角色編碼

對話是從拾金不昧的那個人開始的,因為他撿到的是手提包,所以,丟東西的是女角色,撿到東西的是男角色。

第一句話是男說的,第二句是女說的……以此類推。

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

代碼有幾點需要注意:

1、設置兩個角色使用不同的嗓音,便於在機器朗讀中區分先後順序

2、對話的雙方一問一答,在A說話時B應該等待,反過來亦然。如上的等待2秒。如果單句話時間長,那麼對方等待的時間也應相應增加

3、對話結束後,外觀積木【說___】的輸入框不要寫任何內容,也可以說成把輸入框置空,這樣可以使得角色上不會一直停留最後一句的內容。你可以刪除這個積木,對比觀察效果

現在就試用一下吧~~

07 第一版程序存在的問題

上面的程序運行完全符合預期,不過,如果你仔細思考會發現它仍然存在一些不夠“美”的地方:

1、對話內容是固定的(軟件行業的術語是“硬編碼”),如果你想讓Scratch幫我們閱讀另一個英語對話,那麼,只能重新編寫一個程序

2、兩個角色的對話過程中,句子和句子需要互相等待,也就是上面多次重複的【等待2秒】積木,如果遇到稍微長一些的句子,還需要多次修改這個時間使得它在上下句中恰好合適。這個方式太粗笨了,感覺不是程序在為我們服務,而是我們在給程序“打工”

基於此,我們優化代碼,發佈第二版程序——version 2.0。

08 優化代碼 程序第二版

首先,改進對話內容的存儲方式。

將對話內容從保存在若干【朗讀__】積木到保存到列表中。(關於“列表”的知識可查閱《【Scratch工具介紹】數據積木》)

再增加一個變量用於保存當前朗讀到了第幾條對話內容。


少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

需要提醒大家的是,初始化“對話列表”有兩種方式:1)點擊舞臺上的列表左下角+號,逐條手工添加對話,2)提前在純文本txt文件中準備好對話內容,然後右鍵點擊舞臺上的對話列表,import導入文件的內容

然後,藉助“廣播消息”,A說完一句後告訴B說

我們以前說過“廣播消息”是非常重要的機制,尤其是在多角色合作時。本程序場景就是一個很好的例子。(關於“廣播消息”的知識可查閱《Scratch編程 | 事件積木》)

不多解釋了,直接上代碼:

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音

經過改造,第二版將兼容大部分二人對話的場景。當需要實現新的英文對話時,只要清空對話列表,然後導入新的對話內容即可,不需要修改任何代碼。這也體現了“列表”給編程帶來的巨大靈活性。

09 完工!運行程序

至此,我們完成了“需求說明”中的全部內容。

點擊舞臺左上角的小旗子運行程序,看看效果吧。

附加練習

  • 對話內容中提到了“手提包”,請增加一個角色,並根據對話內容將手提包從拾到者轉移到丟失者
  • 找一篇你正在學習的英文對話,替換對話內容
  • 增加兩個按鈕【暫停/繼續】和【重說上一句】,實現類似復讀機的功能,讓我們的程序成為輔助英語教學的好工具

tag:#Scratch編程、#少兒編程、#兒童編程、#趣味編程、#青少年編程、#軟件編程

少兒編程|Scratch實例10:AI人工智能讓你的文字自己變成語音


分享到:


相關文章: