最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Scratch实例10|AI人工智能让你的文字自己变成语音

Scratch 少儿编程 7634浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

在Scratch 3.0中,亚马逊为Scratch提供了“文字朗读”扩展积木。使用这些积木,我们可以编写Scratch程序将一串文字转化成语音,类似于智能手机上电子书APP的听书功能,或者新闻APP的听新闻功能。

亚马逊的英语文本朗读已经十分出色,基本上听不出是机器在朗读。当前亚马逊支持14种语言,包括英语、法语、德语、日语等,只要你能提供相应语言的文字,它们就能被自动朗读出来。

 

本文我们将从经典的教材书新概念英语取一个例子,模拟一段英文对话,并且将对话内容以语音朗读出来,形成一个英语教学动画。

视频中的语音都是电脑自动将文字转换而成,不是编程时录入的真人音

下面是新概念英语第一册的第一课,选取该篇纯粹是因为取材便利,你也可以用其他的英语对话替代。

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 完工!运行程序

至此,我们完成了“需求说明”中的全部内容。

点击舞台左上角的小旗子运行程序,看看效果吧。

附加练习

  • 对话内容中提到了“手提包”,请增加一个角色,并根据对话内容将手提包从拾到者转移到丢失者

  • 找一篇你正在学习的英文对话,替换对话内容

  • 增加两个按钮【暂停/继续】和【重说上一句】,实现类似复读机的功能,让我们的程序成为辅助英语教学的好工具

您必须 登录 才能发表评论!