SoundSifter- Mitigating Overhearing of Continuous Listening Devices

ABSTRACT

在本文中,我们研究了持续声学感知设备(例如Amazon Echo,Google Home或此类基于语音控制的智能家居设备)的“持续偷听”问题,并开发了一个名为SoundSifter的系统,该系统可减轻由于设备的声学环境中存在不必要的干扰音源而导致的个人的或环境信息的泄漏。我们并没有打算修改现有的智能家居设备,相反我们建立了一个独立的嵌入式系统,并通过音频输入接口连接到智能家居设备。同时,考虑到设备的的美观性,我们将SoundSifter的外形设计为智能家居设备的“外套”或“封盖”。SoundSifter可通过硬件和软件来捕获音频信号,将来自不同声源的信号进行分离,过滤掉来自不必要音源的信号,并在信号进入不可靠系统(如Amazon Echo或Google Home)之前对信号进行处理以使得系统支持诸如个性化定制之类的策略。我们进行了实验,证明了SoundSifter实时的运行具有抗干扰能力,并且支持商用智能家居设备所不支持的个性化语音命令。

1. INTRODUCTION

当机器到达了理解人类语言的里程碑后,持续监听设备逐渐变得无处不在。今天,嵌入式设备具备了实时连续捕获,处理和解释声音信号的可能。像苹果,微软,谷歌和亚马逊这样的巨头都有了自己的持续音频监听和解译系统。苹果公司的Siri和微软的Cortana能够理解我们所说的话,并帮我们我们连接到网页,安排会议,在城市里找到最好吃的寿司,或者给我们讲个玩笑。谷歌和亚马逊则更进一步。Android的'OK Google'功能,亚马逊的Echo和Google Home设备甚至不需要用户交互就能完成工作,例如触摸或按下按钮。尽管这些设备是通过监听关键词的音频信号来进行系统激活的,但其实在这个过程中,它们一直在监听所有音频信号。不难想象,迟早有人会攻击这些通过云端连接的系统,并以此监听我们在理应最具个人隐私的家中进行的每一次对话。

此外,物联网领域最近出现了一种新的趋势,即许多第三方商用物联网设备现在正在通过基于语音控制的智能家居设备(如Echo或Google Home)所提供的API来启用语音功能。今后,我们也将逐渐把这些设备称之为为智能家居设备。例如,Google Nest温控器,飞利浦Hue灯,Belkin WeMo开关,TP-Link智能插头,Uber和亚马逊订购等许多家用电器和网络服务现在都是'Alexa-Enabled' - 这意味着,我们可以将语音命令发送到Amazon Echo设备以启动电子设备和家用电器。正因为它能够驱动和控制真实世界的实体,所以有一个潜在的危险是,它们可以被错误的命令(例如,来自电视的声音)或未授权的命令激活(例如,一个陌生人通过语音来命令某人的智能家居设备以此控制他的家电器,或在他的亚马逊账户上进行大笔购买,或叫一台uber打车)。因此,一个严谨的语音命令环境是确保安全和个人隐私的必要条件。

不幸的是,现有的基于语音的智能家居设备在处理音频时基本都没有考虑到这些漏洞中的任何一个。他们只是简单的应用了标准的降噪处理来抑制非语音的背景声音,以提高信噪比。然而,单独这一过程并不能消除那些来自环境中且刚好与用户的语音信号在时间或频率上重叠的不需要的声源信号。而且,这些设备也不支持语音命令的个性化定制。

在本文中,我们研究了声学感应设备中的“偷听”问题,并开发了一个系统,可以有效减少由于声学环境中存在的不需要的声源而导致个人或情境信息的泄漏。我们没有开发用于语音命令的针对特殊目的和特殊应用的专用嵌入式系统,而是在通用环境中解决问题,其中用户可以将特定类型的声音定义为主类型声音(即,真正用于日常使用的音源)或次类型声音(即非必要的和可能泄露隐私的音源)。例如,家庭中的用户所发出命令的声音应当是智能家居系统的的主类型声音,而任何可识别的背景噪声,例如来自电器的声音,或其他杂音都是次类型声音。此外,我们并没有修改现有的智能家居设备,相反我们建立了一个独立的嵌入式系统,通过音频输入接口连接到智能家居设备。考虑到智能家居设备的美观性,我们将所建立的系统外形设计为“外套”或“封盖”。所提出的系统具有必要的硬件和软件来捕获音频,对来自不同声源的信号进行分离,过滤掉来自不需要的信号源的信号,并处理信号以此在信号进入诸如Amazon Echo和Google Home之类的不可靠系统之前执行诸如个性化定制之类的策略。该设备是可编程的,即最终用户能够针对不同的使用场景对其进行不同的配置。

开发这样的嵌入式系统带来了几个挑战。首先,为了分离声源,我们需要使用一组麦克风。始终以高速率连续采样多个麦克风,然后实时处理这些麦克风所采集的音频数据,这对于资源有限的系统来说是非常耗费CPU内存和时间的。其次,为了训练系统以区分主类型和次类型,我们需要从终端用户采集音频样本,以创建特定用户或特定情境的声学模型。如果我们要求用户为家中的每种类型的声音录制大量的音频样本,这对于用户而言是非常麻烦且不现实的。第三,由于没有任何声源分离是完美的,所以在源分离完成之后总会有次类型的声源残留。这些残留包含了足够的信息来推断个人用户或情景信息,因此必须予以消除以防止信息泄露。

在本文中,我们解决了所有的这些挑战,并开发了一个称为SoundSifter的系统。SoundSifter的硬件包括了一个低成本的,开源的嵌入式平台,可以以不同的速率驱动麦克风阵列。五个软件模块执行五个主要的声学处理任务:协调麦克风的采样率,信号对齐,分离声源,识别主类型声源,以及后处理该流以去除残留并执行用户识别。在处理结束时,音频数据流入智能家居设备。我们在多个家庭环境中的进行了真实的部署方案,并全面评估系统各个组件,算法和整个系统。

本文的贡献如下:

·我们设计了SoundSifter,这是第一个解决诸如亚马逊Echo等基于语音功能的智能家居设备的“持续偷听”问题的系统,并为信息泄露等问题提供了一种高效实用的解决方案,以及由于使用环境中存在不需要的次类型声源而导致的未经授权或错误的命令。

·我们设计了一种算法,用于预测输入音频的频谱属性以此控制麦克风阵列的采样率,从而实现有效的声源分离。

·我们设计了一种算法,该算法可以直接从次类型声源来估计噪声,并消除来自主类型声源的次类型声源的残留。

·我们进行实验,并证明SoundSifter实时运行时,是具有抗噪能力的,并支持选择性和个性化的语音命令,而商用的智能家居系统并不具备这种能力。

2. BACKGROUND

这里我们提供了背景知识,一种特定的源分离算法以及一些本文稍后使用的术语。

2.1 Source Separation

术语"盲源分离"是指一个一般问题:仅从已知的观测到的混合源P,提取出未观测到的源N。这个问题最初是对于人类大脑的神经处理建模的,后来在许多其他环境中得到扩展和研究,如生物医学应用,通信,金融,安全和声学。对于声学处理界来说,这个问题通常被称为“鸡尾酒会问题”,其中声源代表人类的声音。


在本文中,所有信号源都是声学的,每个麦克风观察N个声源的加权组合。假设s(t) = (s1(t), …,sN(t))T ∈RN 表示源信号,x(t) = (x1(t), ...,xP(t))T ∈RP 表示观察到的混合信号,(.)T 表示矩阵转置运算,A表示从RN 到RP 的未知映射,我们可以写成:∀t ∈Z x(t) = As(t) 。

上面的公式是一个线性瞬时模型,它是最常用的源分离模型。这并没有明确的对噪声建模,因为它们可以被的隐式建模为其他来源。在图1中,A是一个混合矩阵,其混合了N个声源以产生P个输出流。提取源信号的操作相当于找到B,即一个逆矩阵或分离器矩阵。分离的输出表示为:∀t ∈Z y(t) = Bx(t) 。当N ≤ P 时,A是可逆的。但是对于N > P ,可能需要额外的假设。

2.2 Fast ICA

针对源分离问题的解决方案,独立分量分析(ICA)是最受欢迎的解决方案之一。这种方法假定声源在数据统计的角度上看是彼此独立的,而这对我们的应用场景来说通常是正确的。例如,对亚马逊Echo设备的语音命令和我们所不需要的背景声音之间,在它们之间一般不可能具有任何统计相关性。

Fast ICA是一种流行的,高效的,基于独立分量分析的源分离算法。它以源之间的相互独立性作为指标,通过迭代来最大化各个源之间的相互独立性来分离这些源。在快速ICA中,源的非高斯性被用作度量。

使用矩阵来表示时,x(t) 表示为X ∈RP×T 。Fast ICA通过在循环中使用以下两个步骤,以此迭代的更新一个权重向量W ∈RP ,来最大化投影WTX 的非高斯性:


这里φ(x) = tanh(x) ,φ′(x) 是它的导数,E{} 是矩阵列上的平均值。W被初始化为一个随机向量,当它没有明显变化时,该循环停止。请注意,为简单起见,我们只显示如何通过公式1分离其中一个源; 对于多个源,这需要对每个源进行重复操作。我们也省略了预处理步骤,涉及白化矩阵X。

2.3 Measure of Residual Signals

由于没有任何源分离是完美的,所以那些理应仅仅包含主类型声源的音频流中,总是存在一些次类型声源的残留。我们使用以下公式作为度量标准来量化这种残留:


这里,ξi 表示源分离后第i个源的残留量,其表示为源分离之前和之后的主信号之间的差的l2-范数。我们在之后的评估中使用这个度量标准来量化源分离的质量。

3. OVERVIEW OF SOUNDSIFTER

建立SoundSifter的初衷是人们需要一个智能的声学滤波器来检测音频信号,并采取适当的措施,比如过滤来自不想要的次类型声源,并在主类型声源进入基于语音的智能家居设备或任何此类持续监听设备前进行检查。

SoundSifter通过音频插孔连接到智能家居设备或移动设备,其可被认为是板载音频I/O子系统的扩展。它捕获并处理所有传入的音频流,分离不同源的音频信号,识别并阻止所有未被标记为“主类型”的声源,并且只允许经过处理的音频进入设备以供进一步的应用或其他具体操作。


3.1 Basic Workflow

图2(a)显示了SoundSifter如何被设置于音频源和智能家居设备之间。图2(b)显示了其内部处理模块的更多细节。该系统有一个音频I / O控制器,用于控制一个麦克风阵列(用于进行信号源分离),扬声器以及支持外部音频I / O的蓝牙和音频插孔。源分离器通过音频I / O控制器控制麦克风并使用预先计算好的声学模型来执行源分离算法。后处理模块进一步过滤和模糊已分离的主类型流数据,以消除残留的次类型声源,并执行从配置文件读取的一些策略,如个性化命令等。最后,处理后的音频输出信号通过音频插孔进入智能家居设备。

3.2 Initial Setup and Programming

SoundSifter需要为每个特殊用例编程一次(如下一节所述)。此处对设备编程在本质上的意思是为场景中涉及的每种主类型声源创建声学模型。因为这些声源通常是针对特定用户或特定家庭的,所以这个过程需要用户的积极参与。为了简化过程,为用户提供了与使用媒体播放器一样简单的移动应用程序。该移动应用程序通过蓝牙连接到SoundSifter,并通过发送编程命令和接收响应与其交互。此处并没有音频数据在设备之间进行传输。

该应用程序指导用户向SoundSifter发送命令,为每种主类型声源录制10s - 30s的音频,标记它们,并指出它们分别将在哪些场景下使用。该系统还需要一些适用该应用场景的一些常见的次类型声源的例子。但是,它不需要用户记录和标记所有可能的次类型声源。我们凭经验确定,只要SoundSifter在每个使用案例中有2-3种次类型声源,它就能够以较高精度检测主类型声源和次类型声源。

一旦录制和标记阶段结束,SoundSifter使用一种算法创建声学模型,删除所有原始音频数据,并且只剩下存在在设备配置文件中的被标记的声学模型。

3.3 Usage Scenarios

我们描述了SoundSifter的两种唤醒方案,这些方案是针对基于语音控制的智能家居设备的。

纯语音模式:现在的持续监听设备会监听周围声音环境中的所有内容。纯语音模式的目标是确保只有语音信号才能进入这些设备,而家庭环境中的所有其他声源,如来自电视,家用电器的声音,非人声声音,如笑声,哭泣,咳嗽,诸如烹饪,清洁等活动完全被过滤掉。SoundSifter通过使用源分离技术,识别技术和抑制技术的组合来实现这一点。

个性化:个性化命令可能有多种类型。首先,语音命令可包含一个确切的单词或话语序列。其次,语音命令可包含一个特定的关键字或一组关键字。第三,某个特定的用户的声音命令。这些个性化命令都是可以实现的,首先通过应用纯语音模式,然后执行附加的声学处理,诸如语音到文本和用户识别等来实现。虽然本节只提到SoundSifter的智能家居设备的相关使用场景,但主类型声源和次类型声源作为一般的概念,允许我们将系统配置为用于过滤/输出不同的主/次声源的其他应用程序。此外,由于时间限制,我们没有在我们的系统中实施语音到文本转换器,我们将其作为未来的工作

4. STUDYING THE PROBLEM

在开发SoundSifter之前,我们进行了严格的研究和实验以了解我们将要面对的问题的本质。

4.1 Need for Source Separation

作为源分离的替代方案,我们研究了更简单的解决方案,如滤波和噪声消除。但是,这些尝试失败了,因为环境中可能存在的声音,在频域中彼此重叠。


在图3中,我们绘制了一组选定的声音的频率特性。例如,语音(<4 KHz)涵盖了打鼾的全部频率范围(<1.5 KHz)和哮喘声的全部频率范围(<1.3 KHz)。婴儿哭闹声和门铃的声音频率范围分别为500Hz到1.6KHz和4.2KHz。音乐的频率范围与所有声音重叠。除此之外,我们还分析了家用电器,如搅拌机声,洗衣机声,摔门声,马桶冲水声,不同性别和年龄组的语音,以及哮喘声,并最终得出结论认为,空间信息在识别和分离出,包含来自其他类型不需要的声音的主类型音源,是最有效的。

4.2 Number of Microphones

为了实现有效的信号源分离,我们需要使用一组麦克风阵列。理论上讲,麦克风的数量应该等于同时活动的声源的数量。但是,对于音频这样的稀疏源来说,我们可以用较少的麦克风来执行源分离。


为了确定用于信号源分离的麦克风的合适数量,我们进行了一个实验,在该实验中,我们使用一组包含五个麦克风的阵列来捕获来自2-5个同时活动的信号源的音频信号,分别是:语音(主类型),电话铃声,钢琴声,歌声和电视声。图4显示,随着我们改变麦克风的数量以及活动声源的数量,源分离后的残留也各不相同(越少越好)。我们观察到,阵列中包含更多的麦克风能带来更少的残留量。但是同时,对于包含四个以上的麦克风阵列来说,残留量的降低变的不那么显眼了。因此,我们决定在我们的系统中使用包含四个麦克风的阵列,并使用额外的噪音消除步骤来清除剩余的残留。

4.3 Benefit of Rate Adaptation

根据尼奎斯特定理,每个麦克风的采样率必须至少是任何信号源最大频率的两倍。但是,以非常高的速率对麦克风阵列进行采样会消耗大量CPU,内存和功耗。


为了验证这一点,我们使用基于ARM Cortex A8的微控制器进行实验。在图5中,我们观察到随着采样率的增加,CPU使用率急剧增加。随着采样率的改变,内存的消耗也从22 KB增加到704 KB。根据这一观察结果,我们决定不长期以最高速率对麦克风进行采样;相反,我们采用基于预测的方案,根据系统刚刚采集到的声源和信号,我们通过概率来选择出一个合适的麦克风阵列采样率。

4.4 Modeling Sounds

声源分离之后,为了使SoundSifter确定允许哪些声音进入系统,它必须具备识别出代表主类型声源的能力。由于在不同使用场景下的主类型声源具有很高的主观性,SoundSifter需要直接从最终用户那里获得足够多的音频样本,以便创建鲁棒的,准确的声音分类器。现在,一方面,我们需要来自用户的大量训练音频来进行鲁棒的分类;另一方面,要求用户收集如此大量的数据可能容易出错并且给用户带来不便。因此,遵照管理我们必须采用这样一种分类起,该分类器基于有限的训练数据生成准确和鲁棒的模型。

4.5 Need for Residue Removal

在我们的研究中,一个非常关键的观察结果是,即使在信号源分离之后,当我们查看主类型信号流时,我们依旧会发现非主类型信号源的痕迹。这让我们意识到,即使残留信号太弱而人们无法听到,但当使用机器学习,这些残留信号依旧可以被辨认和识别。


为了说明信号残留所导致的系统脆弱性,我们进行了小规模的研究。我们对两种情况进行源分离,即当人们对话的同时分别伴随着:1)音乐声,2)背景中的电话响铃声。在这两种情况下,同一组的20个对话话语在两个背景声音中分别进行混合(以保持主类型相同)。在源分离后,我们对分离的语音流,计算出MFCC特征,并在2D特征空间中绘制这些话语(总数为40),如图6所示。有趣的是,观察到即使音乐和铃声的残留是听不到的,但这两种情况还是能轻易的被区分开来,这也表示它们在语音流中的依旧确切存在且具有统计意义。

4.6 Analog Data Acquisition

我们在多频道音频数据采集时遇到的实际工程挑战是,商用的嵌入式硬件平台无法以非常高的速率采样模拟信号。例如,考虑最糟糕的情况时,我们需要驱动4个麦克风以44.1 KHz的频率进行采样,我们需要总计达到176.4 KHz的采样率。使用诸如Arduinos,Raspberry Pis或Beaglebones等现成的基于Linux的嵌入式平台来实现如此高速率的模拟数据采样并非易事。我们在本文中解决了这个实际应用中的特殊挑战,我们认为这对其他任何想要采集如此高速率模拟输入的人来说都是有帮助的。

5. ALGORITHM DESIGN

SoundSifter内部的音频处理流程分为五个主要阶段。图7显示了各个阶段及其相互关系。前两个阶段是为接下来的源分离阶段准备来自麦克风阵列的音频流。这两个阶段共同实现了我们所提出的采样速率自适应的方案,此方案降低了SoundSifter的CPU和内存消耗。接下来,我们使用FastICA来执行实际的源分离过程。最后两个阶段,我们对音频流执行进一步处理,以识别主类型声源,并使其中的次类型声源残留消失。

在本节中,我们将介绍SoundSifter音频处理过程中的前两个和后两个阶段,即预处理和后处理阶段,以演示这些阶段如何协调工作,以提高SoundSifter中减少不必要声音信息泄漏的效率和有效性。


5.1 Frequency Adaptation

SoundSifter采用基于预测的方案来确定麦克风阵列合适的采样率。SoundSifter中的采样速率自适应会周期性地进行,预测速率是根据系统已经采集到的音频部分来估计的。SoundSifter保留了一个不断发展的马尔可夫模型,其转换概率有助于根据最近几ms内测量到的音频样本的最大频率,来确定即将接收到的音频样本的最大频率。

在一般情况下,预测输入的音频信号的最大频率的确定值实际上是不可能的。但是,如果我们将全部的可听频率的范围划分为分离的级别,则有可能以较高的置信度预测从一个级别到另一个级别的转换。为此,SoundSifter通过将最大采样率划分为六个互不相交的集合(44.1 / 2h KHz)作为六个频率范围,其中0 ≤ h ≤ 5 。我们用集合{fi} 来表示,其中0 ≤ i ≤ 5 。

此外,由于我们的目标是通过过去数据预测未来数据,因此首要的问题是—“为了准确预测所需的采样率级别,需要回溯多少数据?”。为了确定这一点,我们进行了一个实验来量化回溯时间。我们试验两种不同的马尔可夫模型:

•1步回溯:使用了一个6状态的马尔可夫模型,其中每个状态对应于{fi}中的一个频率级别,得出一个6×6的转换矩阵,其具有fi →fj 形式的转换。

•2步回溯:使用了一个36状态的马尔可夫模型,其中每个状态对应于一对频率级别(fi,fj),得出一个36×36的转换矩阵,其具有(fi,fj) →(fj,fk) 形式的转换。

图8显示了这两种频率预测方法对于长达8分钟的嘈杂音乐的比较。采样频率每500 ms调整一次,与真实情况相比,每25s报告一次预测精度。我们观察到,对于这种非常具有挑战性的情况,两步回溯即36状态的马尔可夫模型,相对于1步回溯来说具有显著的进步,并且有88.23%的平均预测准确度。高于2步的回溯可能会显示出稍高的准确度,但这样的模型会导致状态的过多。因此,我们决定在SoundSifter中使用2步回溯模型。


所提出的马尔可夫模型随着时间而演变。最初,模型中的所有转换概率都是固定的,这样使麦克风以最高速率采样。随着模型开始进行预测,概率会通过简单的奖励和惩罚来更新,每个正确/不正确的预测都会分别通过增加/减少概率来得到奖励/惩罚。预测和更新概率的过程都是O(1)操作。

虽然理想情况下人们会期望SoundSifter将其所有麦克风调整到当前所需的最低频率,但有一点需要注意。由于频率预测不是100%准确的,所以偶尔我们会有误判的可能性。当预测频率低于预期频率时,我们将无法在下一步中纠正它。为了解决这个问题,我们决定将一个麦克风的采样频率固定在44.1KHz,而所有其他麦克风的采样率如上所述进行调整。如果出现预测失误,该麦克风可作为保底,帮助确定正确的频率。

5.2 Signal Prediction and Filling

在运行时调整采样率有其好处,但它也会在源分离期间引入对齐问题。默认情况下,标准源分离算法(如FastICA)假定所有麦克风都以已知的固定速率进行采样。在SoundSifter中,这种假设不再成立,即不同的麦克风可能以不同的速率采样。因此,我们需要重新对齐所有麦克风采集的样本,并对每个低速率麦克风的间隙(缺少样本)进行填充。由于我们一次只处理少量信号,尽管我们扩展了低速率的样本,但该过程不会显着增加总内存消耗。

我们使用两个麦克风来说明这一点:xi(t) 和xj(t) 。假设它们分别以44.1KHz和11.025KHz进行采样。在特定时间段内(例如,在两个连续的频率适配事件之间),第一个麦克风将具有比第二个麦克风多采样到四倍的样本。如果我们按照时间顺序来对它们进行对齐,每个样本的第二个流中将会有三个缺失值。一个样本矩阵,每行对应一个麦克风,则对齐后得到的矩阵将如下所示:


为了填补矩阵中的缺失值,我们将其表述为一个插值问题,并尝试以两种方式预测缺失值:

•线性插值:使用线段连接连续的点,并将任何点之间的缺失值预测为线段上的一个点。

•三次样条插值:使用分段三阶多项式来构造一条平滑曲线,用于插入缺失样本。

线性插值的好处在于它比其他高阶方法更快(例如,应用于同一段1s的音频,比三次样条插值快58倍),但是如果给定点之间的间隙很大,则在预测音频样本方面表现的很差。三次样条插值能产生更平滑的曲线,面对缺失值中的大间隙表现更好,但其运行速度较慢。考虑到所有这些因素,我们决定选择线性插值和一个合适的插值长度,以便使其运行速度快且更准确。


图9比较了信号插值的线性方法和三次样条插值方法。我们观察到,对于10 ms长的采样窗口,线性插值比三次样条插值运行速度更快,得到的结果更好。

5.3 Modeling and Recognizing Sounds

声源分离后,SoundSifter会将每个已分离的声源分类为主类型声源或次类型声源。现在,如果我们对用户的每种声音都有足够的训练样本,那么问题就能像创建标准机器学习分类器一样简单。然而,为了减少用户收集数据的负担,并提高创建的分类器的鲁棒性,我们在创建分类器模型之前,执行额外的数据增强步骤。这是SoundSifter在特定使用场景下的安装和编译过程中的一个一次性的步骤。

5.3.1 Data Augmentation

数据增强的基本原理是通过扰动一个或多个声学特性从现有的训练样例中产生新的训练样例。在SoundSifter中,我们使用两种特定类型的数据增强技术将数据集大小增加了大约13倍。这些技术在表1中列出。


为了应用频率翘曲,每个样本经历一个映射阶段共10次,每次使用随机均匀选择的不同的α。模拟随机噪声应用在三分之一的这些例子上,以进一步增加数据集。总的来说,我们获得了13.33倍的训练样本数量,这些样本包含原始样本以及它们的扰动版本,这些版本可以抵御噪音和环境影响引起的频率变化。

5.3.2 Feature Extraction and Classification

对于每个音频帧,计算含有13个元素MFCC特征向量。按照惯例,使用多个连续的特征向量来计算13个deltas和13个double deltas,以获得每帧39个元素特征向量。最后,这些向量的平均值,标准偏差和取值范围被用来获得一个39元素特征向量。随机森林分类器将被用于创建最终的分类器。

对于语音用户的识别,我们扩展了上一步的特征向量以将音高包含为额外的特征。之后,我们使用时域中的音频过零率(ZCR)估计音高:


这里,si 表示音频采样,n 是帧的长度,并且sign(x) 当(x > 0) 时+1,( x < 0 ) 时-1。

5.4 Eliminating Secondary Residues

经过源分离和源识别后,我们获得一个主类型声源和一些次类型声源。如图4所示,即使在最好的情况下,残留也不会是零,而在图6中,我们观察到这些残留影响不小,以致于我们能识别出嵌入在已分离的主类型源中的次类型源。

为了消除这些残留,我们采用定制的自适应噪声消除技术。标准的噪声消除算法,要么假设把噪声假设为简单的高斯噪声,要么使用复杂的硬件来捕获噪声源,以便能够从主音频流中“减去”噪声音频。在SoundSifter中,我们很幸运能够轻松的获得被分离的次类型流(其作为源分离的副产品)。这些次类型流将被以负反馈的形式用作从主类型流中去除它们所带来的的残留物。


图10示出了噪声消除过程,其中次类型源被迭代地用于估计那些由它们中的每一个所带来的残留噪声信号,然后将其从主类型源中减去,以获得无残留的信号。举例来说,我们认为p和ni分别是源分离步骤后的主类型和次类型源。噪声消除器的输入是(p + nir) ,其中nir表示残留。次类型源ni是消除器的另一个输入,它通过一个自适应滤波器产生一个输出^nir ,它与nir 的相近。自适应滤波器的输出,将从主输入中被减去,以产生系统的最终输出z = p + nir - ^n

猜你喜欢

转载自blog.csdn.net/sinat_27763257/article/details/80550368
今日推荐