友情提示:380元/半年,儿童学编程,就上码丁实验室。
在Scratch 3.0中,亚马逊为Scratch提供了“文字朗读”扩展积木。使用这些积木,我们可以编写Scratch程序将一串文字转化成语音,类似于智能手机上电子书APP的听书功能,或者新闻APP的听新闻功能。
亚马逊的英语文本朗读已经十分出色,基本上听不出是机器在朗读。当前亚马逊支持14种语言,包括英语、法语、德语、日语等,只要你能提供相应语言的文字,它们就能被自动朗读出来。
本文我们将从经典的教材书新概念英语取一个例子,模拟一段英文对话,并且将对话内容以语音朗读出来,形成一个英语教学动画。
视频中的语音都是电脑自动将文字转换而成,不是编程时录入的真人音
下面是新概念英语第一册的第一课,选取该篇纯粹是因为取材便利,你也可以用其他的英语对话替代。
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个绿色的积木。
02 添加角色
添加2个角色,注意要一个男一个女,这样做是为了能够清晰区分对边的双方,也是为了试用新积木功能的需要。
删除默认的小猫角色。
角色的朝向
添加Abby和Devin两个角色后,发生一个问题,我们能够想到,对话双方应该是面对面的,可是我们的这两个角色面向同一个方向。所以,需要优化,这是一个之前没有讲解过的内容,也是Scratch 3.0新增的操作方法,请注意观看和尝试操作,并且与以前讲解的角色“面向xx方向”积木作比较,理解角色翻转与角色面向的区别。
03 调整角色的大小
将角色调整到合适的大小和位置。
04 更换舞台背景
按照你自己的喜好,将默认的舞台背景替换成合适的背景图。
我选择的是背景库“户外——Metro”。
05 文字朗读积木讲解
编码前,我们先来了解下这些新积木的用法,工欲善其事必先利其器。
1、朗读:朗读输入框中的文本
2、设置嗓音:默认的“中音”是个温柔的女声,“男高音”听起来也挺好,剩下3个大家自己感受下吧~
3、设置语言:这里的语言设置应该和【朗读__】积木中的文字一致。但是,你也可以填写英文句子却把朗读语言设置成日语,听听日式英语也别有一番风味
需要注意的是,文字朗读功能暂时不支持中文,略有遗憾,希望亚马逊在后续可以增加朗读中文。
06 角色编码
对话是从拾金不昧的那个人开始的,因为他捡到的是手提包,所以,丢东西的是女角色,捡到东西的是男角色。
第一句话是男说的,第二句是女说的……以此类推。
代码有几点需要注意:
1、设置两个角色使用不同的嗓音,便于在机器朗读中区分先后顺序
2、对话的双方一问一答,在A说话时B应该等待,反过来亦然。如上的等待2秒。如果单句话时间长,那么对方等待的时间也应相应增加
3、对话结束后,外观积木【说___】的输入框不要写任何内容,也可以说成把输入框置空,这样可以使得角色上不会一直停留最后一句的内容。你可以删除这个积木,对比观察效果
现在就试用一下吧~~
07 第一版程序存在的问题
上面的程序运行完全符合预期,不过,如果你仔细思考会发现它仍然存在一些不够“美”的地方:
1、对话内容是固定的(软件行业的术语是“硬编码”),如果你想让Scratch帮我们阅读另一个英语对话,那么,只能重新编写一个程序
2、两个角色的对话过程中,句子和句子需要互相等待,也就是上面多次重复的【等待2秒】积木,如果遇到稍微长一些的句子,还需要多次修改这个时间使得它在上下句中恰好合适。这个方式太粗笨了,感觉不是程序在为我们服务,而是我们在给程序“打工”
基于此,我们优化代码,发布第二版程序——version 2.0。
08 优化代码 程序第二版
首先,改进对话内容的存储方式。
将对话内容从保存在若干【朗读__】积木到保存到列表中。(关于“列表”的知识可查阅《【Scratch工具介绍】数据积木》)
再增加一个变量用于保存当前朗读到了第几条对话内容。
需要提醒大家的是,初始化“对话列表”有两种方式:1)点击舞台上的列表左下角+号,逐条手工添加对话,2)提前在纯文本txt文件中准备好对话内容,然后右键点击舞台上的对话列表,import导入文件的内容
然后,借助“广播消息”,A说完一句后告诉B说
我们以前说过“广播消息”是非常重要的机制,尤其是在多角色合作时。本程序场景就是一个很好的例子。(关于“广播消息”的知识可查阅《Scratch编程 | 事件积木》)
不多解释了,直接上代码:
经过改造,第二版将兼容大部分二人对话的场景。当需要实现新的英文对话时,只要清空对话列表,然后导入新的对话内容即可,不需要修改任何代码。这也体现了“列表”给编程带来的巨大灵活性。
09 完工!运行程序
至此,我们完成了“需求说明”中的全部内容。
点击舞台左上角的小旗子运行程序,看看效果吧。
附加练习
-
对话内容中提到了“手提包”,请增加一个角色,并根据对话内容将手提包从拾到者转移到丢失者
-
找一篇你正在学习的英文对话,替换对话内容
-
增加两个按钮【暂停/继续】和【重说上一句】,实现类似复读机的功能,让我们的程序成为辅助英语教学的好工具