使用IoT设备识别语音 本课概述的草图笔记 草图笔记由Nitya Narasimhan绘制。点击图片查看大图。 这段视频将概述Azure语音服务,这是本课将要涵盖的主题: 如何从Microsoft Azure YouTube频道使用你的认知服务语音资源开始的教程 点击上面的图片观看视频 课前测验 课前测验 引言 “Alexa,设置一个12分钟的计时器” “Alexa,计时器状态” “Alexa,设置一个8分钟的计时器,称为蒸西兰花” 智能设备正变得越来越普及。不仅仅是像HomePod、Echo和Google Home这样的智能扬声器,它们还嵌入在我们的手机、手表,甚至灯具和恒温器中。 我家里至少有19台带有语音助手的设备,这只是我知道的那些!

草图笔记由Nitya Narasimhan绘制。点击图片查看大图。
这段视频将概述Azure语音服务,这是本课将要涵盖的主题:
点击上面的图片观看视频
“Alexa,设置一个12分钟的计时器”
“Alexa,计时器状态”
“Alexa,设置一个8分钟的计时器,称为蒸西兰花”
智能设备正变得越来越普及。不仅仅是像HomePod、Echo和Google Home这样的智能扬声器,它们还嵌入在我们的手机、手表,甚至灯具和恒温器中。
我家里至少有19台带有语音助手的设备,这只是我知道的那些!
语音控制通过允许肢体活动受限的人与设备互动来提高可访问性。无论是永久性的残疾,如天生没有手臂,还是暂时性的残疾,如手臂受伤,或者手提购物或小孩,能够用声音而不是双手控制我们的房屋,可以极大地改善生活质量。例如,在处理婴儿换尿布和淘气的小孩时,对着Siri喊“嘿,关上车库门”是一种生活上的小而有效的改善。
语音助手最常用的功能之一是设置计时器,尤其是在厨房中使用的厨房计时器。只需用声音就可以设置多个计时器,这对厨房的帮助很大——无需停止揉面团、搅拌汤或清洁饺子馅的手,就可以使用物理计时器。
在这节课中,你将学习如何在IoT设备中加入语音识别功能。你将了解麦克风作为传感器的工作原理,如何从连接到IoT设备的麦克风捕获音频,以及如何使用AI将听到的内容转换为文本。在本项目的其余部分中,你将构建一个智能厨房计时器,能够使用多种语言通过语音设置计时器。
在这节课中我们将涵盖以下内容:
麦克风是一种模拟传感器,将声波转换为电信号。空气中的振动使麦克风内的组件移动微小的距离,从而引起微小的电信号变化。这些变化然后被放大以生成电信号输出。
麦克风有多种类型:
动态 - 动态麦克风有一个磁铁附着在一个可移动的振膜上,振膜在电线圈中移动产生电流。这与大多数扬声器相反,扬声器使用电流在电线圈中移动磁铁,使振膜移动产生声音。这意味着扬声器可以用作动态麦克风,动态麦克风也可以用作扬声器。在对讲机等设备中,用户要么听要么说,但不同时进行,因此一个设备可以同时充当扬声器和麦克风。
动态麦克风不需要电源就能工作,所有的电信号都是完全由麦克风产生的。

带状 - 带状麦克风类似于动态麦克风,除了它们有一个金属带而不是振膜。这个带子在磁场中移动产生电流。像动态麦克风一样,带状麦克风也不需要电源。

电容 - 电容麦克风有一个薄金属振膜和一个固定的金属背板。电力应用于两者,并且随着振膜的振动,两块板之间的静电量发生变化,从而产生信号。电容麦克风需要电源才能工作——称为幻象电源。

MEMS - 微机电系统麦克风,或MEMS,是在芯片上的麦克风。它们有一个压敏振膜蚀刻在硅芯片上,并且工作方式类似于电容麦克风。这些麦克风可以非常小,并集成到电路中。

在上面的图像中,标记为左侧的芯片是一个MEMS麦克风,其振膜宽度不到一毫米。
✅ 做一些研究:你周围有哪些麦克风——在你的电脑、手机、耳机或其他设备中?它们是什么类型的麦克风?
音频是一种携带非常精细信息的模拟信号。将其转换为数字信号,需要每秒对音频进行数千次采样。
采样是指将音频信号转换为表示该时间点信号的数字值。

数字音频采用脉冲编码调制(PCM)进行采样。PCM涉及读取信号的电压,并使用定义的大小选择最接近该电压的离散值。
你可以将PCM视为传感器版本的脉冲宽度调制(PWM)。PWM涉及将数字信号转换为模拟信号,而PCM则将模拟信号转换为数字信号。(PWM在项目入门课程第3课中介绍过)。PCM涉及将模拟信号转换为数字,PWM涉及将数字信号转换为模拟。
例如,大多数流媒体音乐服务提供16位或24位音频。这意味着它们将电压转换为适合16位整数或24位整数的值。16位音频的值范围为-32,768到32,767,24位音频的值范围为-8,388,608到8,388,607。位数越多,样本就越接近我们耳朵实际听到的声音。
你可能听说过8位音频,通常被称为LoFi。这是使用只有8位采样的音频,因此范围为-128到127。第一代计算机音频由于硬件限制而限于8位,因此在复古游戏中经常看到。
这些样本每秒采集数千次,使用定义的采样率测量,单位为KHz(每秒读取次数)。流媒体音乐服务通常使用48KHz的音频,但某些“无损”音频使用高达96KHz甚至192KHz的采样率。更高的采样率会使音频更接近原始音频,但也有争论认为人类能否分辨出超过48KHz的差异。
✅ 做一些研究:如果你使用流媒体音乐服务,它使用什么采样率和大小?如果你使用CD,CD音频的采样率和大小是多少?
音频数据有许多不同的格式。你可能听说过mp3文件——一种压缩音频数据以减小体积而不损失质量的格式。未压缩的音频通常存储为WAV文件——这是一种包含44字节头部信息,后跟原始音频数据的文件。头部包含诸如采样率(例如16000代表16KHz)和采样大小(16代表16位),以及通道数的信息。头部之后,WAV文件包含原始音频数据。
通道指的是组成音频的多个不同音频流的数量。例如,对于立体声音频,左右声道有2个通道。对于家庭影院系统的7.1环绕声,这将是8个通道。
音频数据相对较大。例如,捕获未压缩的16位音频,采样率为16KHz(足够用于语音到文本模型),每秒需要32KB的数据:
这听起来像是很小的数据量,但如果使用内存有限的微控制器,这可能会很多。例如,Wio Terminal有192KB的内存,这需要存储程序代码和变量。即使你的程序代码很小,你也无法捕获超过5秒的音频。
微控制器可以访问额外的存储空间,例如SD卡或闪存。在构建一个捕获音频的IoT设备时,你需要确保不仅有额外的存储空间,而且你的代码将从麦克风捕获的音频直接写入该存储空间,当发送到云端时,从存储空间到网络请求进行流式传输。这样,你就可以避免尝试一次性将整个音频数据块保留在内存中而导致内存不足的问题。
你的IoT设备可以连接麦克风来捕获音频,以便转换为文本。它还可以连接扬声器来输出音频。在以后的课程中,这将用于提供音频反馈,但现在配置扬声器以测试麦克风很有用。
按照相关指南配置你的IoT设备的麦克风和扬声器:
按照相关指南在你的IoT设备上捕获音频:
语音转文本,或语音识别,涉及使用AI将音频信号中的单词转换为文本。
为了将语音转换为文本,将音频信号的样本分组并输入基于循环神经网络(RNN)的机器学习模型。这是一种可以使用先前数据来决定新数据的机器学习模型。例如,RNN可以检测一个音频样本块为“Hel”,当接收到另一个它认为是“lo”的样本时,它可以将这两个声音结合起来,发现“Hello”是一个有效的单词并选择它作为结果。
ML模型总是接受相同大小的数据。你在之前的课程中构建的图像分类器将图像调整为固定大小并进行处理。同样的,语音模型也必须处理固定大小的音频片段。语音模型需要能够结合多个预测的输出以得到答案,以便区分“Hi”和“Highway”,或“flock”和“floccinaucinihilipilification”。
语音模型也非常先进,能够理解上下文,并在处理更多声音时纠正所检测到的单词。例如,如果你说“我去商店买两个香蕉和一个苹果”,你会使用三个听起来相同的词,但拼写不同——to、two和too。语音模型能够理解上下文并使用正确的拼写。
一些语音服务允许定制以使其更好地适应嘈杂环境,如工厂,或特定行业的词汇,如化学名称。这些定制是通过提供样本音频和转录来训练的,工作方式与你在早期课程中使用少量图像训练图像分类器的方式相同。
在消费级IoT设备中使用语音转文本时,隐私至关重要。这些设备会持续监听音频,所以作为消费者,你不希望你说的所有话都被发送到云端并转换为文本。这不仅会消耗大量互联网带宽,还会带来巨大的隐私问题,特别是当一些智能设备制造商随机选择音频供人类验证以帮助改进他们的模型时。
你只希望你的智能设备在使用时向云端发送音频,而不是在听到你家中的音频时发送,这些音频可能包括私人会议或亲密互动。大多数智能设备的工作方式是使用一个“唤醒词”——一个关键短语,如“Aleksa”、“Hey Siri”或“OK Google”,这会导致设备“唤醒”并听取你说的话,直到检测到你说话的暂停,表明你已经结束与设备的对话。
唤醒词检测也称为关键词识别或关键词检测。
这些唤醒词是在设备上检测的,而不是在云端。这些智能设备上有小型AI模型,运行在设备上,监听唤醒词,当检测到唤醒词时,开始将音频流式传输到云端进行识别。这些模型非常专业化,仅用于监听唤醒词。
一些科技公司正在为其设备添加更多隐私功能,并在设备上进行部分语音到文本转换。Apple宣布,作为其2021年iOS和macOS更新的一部分,他们将支持设备上的语音到文本转换,并能够处理许多请求而无需使用云端。这得益于他们在设备中拥有强大的处理器,可以运行ML模型。
✅ 你认为将发送到云端的音频存储会有哪些隐私和伦理影响?这些音频应该存储吗?如果应该存储,应该如何存储?你认为使用录音来协助执法是否是对隐私损失的一个好的权衡?
唤醒词检测通常使用一种称为TinyML的技术,即将ML模型转换为可以在微控制器上运行。这些模型很小,消耗的功率也很少。
为了避免训练和使用唤醒词模型的复杂性,本课中构建的智能计时器将使用按钮来启动语音识别。
如果你想尝试在Wio Terminal或Raspberry Pi上创建一个唤醒词检测模型,可以查阅Edge Impulse的响应你的声音教程。如果你想使用你的电脑来做这件事,可以试试微软文档上的自定义关键词快速入门。

就像之前项目中的图像分类一样,有一些现成的AI服务可以从音频文件中提取语音并将其转换为文本。其中一个服务是语音服务,它是认知服务的一部分,即你可以用于应用程序的预构建AI服务。
为此项目创建一个名为smart-timer的资源组。
使用以下命令创建免费的语音资源:
az cognitiveservices account create --name smart-timer \ --resource-group smart-timer \ --kind SpeechServices \ --sku F0 \ --yes \ --location <location>
将<location>替换为你创建资源组时使用的地点。
你需要一个API密钥来从你的代码访问语音资源。运行以下命令以获取密钥:
az cognitiveservices account keys list --name smart-timer \ --resource-group smart-timer \ --output table
复制其中一个密钥。
按照相关指南在你的IoT设备上将语音转换为文本:
语音识别已经存在很长时间了,并且一直在不断改进。研究当前的能力,并比较它们随时间的发展,包括机器转录的准确性与人工转录的比较。
你认为语音识别的未来会怎样?
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。