跳到教程内容
教程首页
App Inventor 2 教程 变声器
准备开始
动手创造 · PROJECT LAB

变声器

准备探索你的新作品
0%
★★ 项目难度每一步,都离作品更近

先了解你将做出什么

挑战:制作自己的变声器

“深度伪造”声音由模型学习真人录音后生成;本教程制作的应用不是真正的深度伪造,而是把语音识别得到的文字用不同音调和语速读出来。请把它用于创作和学习,不要冒充他人或误导别人。

Chromebook 不能作为本教程的测试设备;请使用 Android 或 iOS 手机/平板。

设置电脑和手机

安装 AI2 Companion,并用“连接”菜单把手机接到 App Inventor。首次测试语音识别和文本朗读时,要允许麦克风权限并确认系统已经安装语音服务。

认识 App Inventor 环境

1. 查看设计器和积木编辑器

App Inventor 有两个主要工作区:设计器用来添加组件、排列界面;积木编辑器用来编写程序。右上角的按钮可以在两个页面之间切换。

Designer 页面

Blocks 页面

切换 Designer 和 Blocks

2. 认识设计器面板

组件面板是组件抽屉,预览区显示手机界面,组件列表列出当前工程里的组件,媒体资源管理图片和声音,属性面板用来修改选中组件的属性。先熟悉这些区域,后面的步骤会反复使用它们。

Palette 面板

Viewer 面板

Components 面板

Media 面板

Properties 面板

变声器教程

3. 了解最终效果

最终应用有一个语音识别按钮、文字输入框、朗读按钮和两个滑块。用户说话后,文字会出现在输入框;点击朗读按钮时,手机会按照滑块指定的音调和语速读出文字。

变声器最终界面

4. 查看起始设计

打开起始工程,在设计器中查看已经准备好的非可视组件。保持现有组件名称不变,因为积木会使用 SpeechRecognizer1SpeechTextBoxTextToSpeech1 等名称。

起始设计

5. 添加朗读按钮

拖入一个按钮,把它重命名为 HearTheWordsButton,并将文本改为“朗读文字”。按钮只是界面入口,尚未连接程序时点击不会产生动作。

添加按钮

重命名按钮

修改按钮文字

6. 创建音调滑块

添加一个标签,命名为 PitchLabel,文字设为“调整音调”,并把文字颜色改成白色。再添加一个滑块,命名为 PitchSlider

添加音调标签

设置音调标签

7. 设置音调滑块属性

PitchSlider 的宽度设为“充满父容器”,并根据起始工程设置 MaxValueMinValueThumbPosition。滑块位置最终会传给 TextToSpeech1.音调

设置音调滑块

8. 创建语速滑块

再添加一个标签和滑块。把标签命名为 RateLabel,文字设为“调整语速”;把滑块命名为 RateSlider,并按照起始工程设置它的宽度、最大值、最小值和初始位置。

语速滑块界面

设置语速滑块

9. 查看起始积木

切换到积木编辑器,先观察工程中已有的程序。不要急着删除它们:它们已经处理了“点击开始说话”和“语音识别返回文字”两个基础动作。

切换到 Blocks

起始程序块

10. 逐块理解语音识别

当 SaySomethingButton.被点击时 中调用 SpeechRecognizer1.识别语音,手机会打开语音识别界面。识别完成后,SpeechRecognizer1.识别完成时 事件把 result 写入 SpeechTextBox.文本

起始 Blocks

开始语音识别

显示识别结果

取得 result 变量

11. 测试语音识别

先连接 AI2 Companion,点击“开始说话”按钮并对着手机说一句话。识别结果应该自动显示在文字框中。可以尝试专有名词、奇怪短语或不同语速,观察识别是否准确。

测试 Companion

12. 让应用开始朗读

HearTheWordsButton.被点击时 添加事件,从 TextToSpeech1 抽屉拖出 调用 TextToSpeech1.念读。按钮点击时,程序将执行这个调用。

添加朗读按钮事件

13. 把文字接到 TextToSpeech

SpeechTextBox 抽屉取得 SpeechTextBox.文本,接到 TextToSpeech1.念读 的 message 输入槽。这样文本朗读器才知道应该读什么。

调用 TextToSpeech

连接文字框内容

14. 测试变声效果

重新用 AI2 Companion 测试:先点击“开始说话”生成文字,再点击“朗读文字”。也可以直接把手机上的一段文字复制到输入框,比较朗读结果。

再次测试 App

15. 使用音调和语速滑块

在朗读按钮事件中,把设置放在 Speak 调用之前:

  • 设 TextToSpeech1.音调PitchSlider.滑块位置
  • 设 TextToSpeech1.语速RateSlider.滑块位置

滑块向左或向右会提供不同数值。先设置属性,再调用 Speak,否则本次朗读仍会使用上一次的音调和语速。

设置音调

音调滑块值

朗读按钮最终程序

连接手机反复测试,寻找高音、低音、快速和慢速的组合。完成后可以保存应用,分享给别人体验,但不要用变声器冒充他人。

扩展你的应用

你可以显示音调和语速的数值,添加语言和口音选择,把 TextToSpeech 的 Language 设置为 ES 朗读西班牙语,或把长文本翻译后再朗读。也可以把它改造成旅行翻译器、朗读器或无障碍辅助工具。

项目来源

本教程讨论的“深度伪造”与合成语音只是背景知识;实际应用使用的是手机系统的 SpeechRecognizer 和 TextToSpeech,不会生成真人声音模型。使用相关技术时要尊重他人身份、声音和隐私。