4281| 0
|
[教程] 【AI2+AI】个人语音分类器:语音验证app |
演示视频: 原文地址:https://appinventor.mit.edu/assets/files/voice-authentication-app-tutorial.pdf 编译:szjuliet 继MIT App Inventor发布个人图像分类器扩展之后,近日又发布了个人语音分类器扩展。有了这个扩展,就可以制作语音验证app了,说声“芝麻开门”,你的app就可以正常使用了,甚好甚好。“再也不用担心妈妈偷看我的日记了”。 记得尽量多训练些样本,否则可能你自己也打不开你的app了哈哈。 个人语音分类器难度 :初学者 课程类型:教程 学科:计算机科学 年级:
本学生指南/教程展示了如何使用个人语音分类器网站以1-2秒的录音片段来训练音频模型。然后使用模型和App Inventor中的Personal Image Classifier扩展程序来构建可以区分语音的app。 本案例是日记应用。你的声音用来对应用进行身份验证,并且仅允许你自己的声音打开日记。 个人音频分类器在创建模型时使用音频记录的Spectogram,这个模型你可以在app中使用。不同声音的Spectogram会有所不同,分类器将能够区分不同的声音或根据标签对它们进行分类。 资源语音验证app(学生指南)注意:并非所有的移动设备/操作系统当前都具有运行本机中使用的PAC扩展所需的硬件/软件。我们强烈建议您事先使用我们的测试应用进行测试,以确保其兼容。附录1中包含测试说明。如果你的设备不兼容,你仍然可以在PAC网站上学习如何训练模型,只是无法在App Inventor中尝试。
我们将从头开始训练音频分类器!首先必须教它要分类的内容。这是“训练”阶段。我们需要训练两种声音,再找一个小伴侣来一起参与训练。
本教程的模型有两个分类:Nikhil和Natalie。 你的模型需要学习区分你和小伙伴说“Hello”一词。你们需要录制一些语音片段来供模型训练。
练习时按一下record,然后大声清晰地说“Hello”(你可能需要先开启电脑麦克风访问权限)。 确保仅在红色录音条处于活动状态时才开始讲话。
在麦克风预热(warms up)时,你可能需要按图片右上角蓝色的“x”,删除一些质量较差的录音。
单击“RECORDING FOR”按钮,修改录音的人的名字。
仔细检查录制的样本,它们看起来与上面显示的样本类似(注:你可以删除任何看起来奇怪的样本,然后重新录音)。
按”record“录制语音片段,然后查看模型如何对语音片段进行分类! (不必担心“ RECORDING FOR”按钮设置是哪一个人)。只需看看模型在你和小伙伴的声音测试中表现如何。 将鼠标悬停在每个标签上查看模型对某个分类的置信度。 您可以点击导航栏中的“Train”按钮,返回训练屏幕并录制更多样本(然后按照步骤4重新训练更新后的模型)。
在附件中下载aia文件:Voice_authentication_diary.aia 浏览器中打开http://ai2.appinventor.mit.edu/,点击“我的项目”,导入下载的aia文件。 这将是一个日记app,通过你说“Hello”进行身份验证。只有你自己才能打开日记,其他任何人(包括你的小伙伴)都无法进入你的日记。 请注意,你的日记app有两个屏幕。在Screen1使用你的声音进行身份验证。验证成功后进入Screen2,即你的日记。 打开刚刚导入的“voice_authentication_diary”应用程序。在“组件设计”中,拖动以下组件并重命名,并按如下所示设置其属性。
单击PersonalAudioClassifier1,在属性窗口中的“Model”中单击“无”,然后上传你的model.mdl文件。单击确定。 上传model.mdl文件后,确保其显示在“Model”框中,如下所示。
点击“逻辑设计”按钮切换到“代码编辑器”。 在“模块”面板中单击PersonalAudioClassifier1,然后将其拖出PersonalAudioClassifier1.GotClassification代码块。 将StatusLabel.Text设置为事件代码块的result参数。 从控制抽屉中添加一个“如果-则-否则”代码块,并从逻辑抽屉中添加一个equals(=)代码块。 result参数从模型中返回的是一个包含模型分类的列表。该列表将包含两个子列表。每个子列表包含了分类器认为匹配的分类的标签,后跟置信度。例如: [[Nikhil,0.88527],[Natalie,0.34812]] 分类器对语音匹配Nikhil的置信度为88%,对语音匹配Natalie的置信度仅为34%。你想提取第一个子列表中的第一个元素,本例中为“ Nikhil”,并测试这是否是该日记的主人。 为此,从“列表”抽屉中使用两个选择列表项块。首先从get result(主列表中)中获取第一个元素(索引)。然后,该元素再作为列表,提取它的第一项(索引),在本示例中为“ Nikhil”。 即列表[[Nikhil,0.88527],[Natalie,0.34812]]的第1项为[Nikhil,0.88527],这一项[Nikhil,0.88527]本身也是一个列表,它的第1项为“Nikhil” 如果匹配成功,app使用TextToSpeech1组件说“Success!”,然后打开Screen2。 如果没有匹配成功,假定是你的小伙伴(或其他人)试图打开Diary应用,使用TextToSpeech添加一条消息,告知他们已被拒之门外。 代码块看起来如下图。红色框中是你的名字(你在c1.appinventor.mit.edu中使用的标签)。蓝色框是一句话,如果app认为不是你的声音,它会大声说出来!
测试和调试技巧在Screen1上,StatusLabel显示从分类器返回的结果。如果应用无法正常运行,请检查分类器返回的内容。检查你的名字是否首先出现在返回的结果列表中。如果没有,你可能必须再次训练模型! 另一种可能性是置信度太低。你能否添加代码以检测置信度是否大于80%?请记住,子列表中的第二个值是置信度。 附录1测试硬件为了事先检查Diary应用程序是否可以在你的设备上运行,我们提供了一个项目进行测试。首先将此Test_PAC.apk 下载到电脑上。在手机上安装该应用。运行应用程序。在app屏幕顶部看到“Waiting…”标签。最多一分钟后,标签显示应更改为“Ready and work!”。如果标签未更改,则表明你的设备无法与PAC扩展一起使用。 |
5.57 MB, 下载次数: 2525
手机测试文件
voice_authentication_diary.zip
2.56 MB, 下载次数: 2488
app模板文件.aia
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed