波达方向估计方法、服务器以及计算机可读存储介质
技术领域
本发明实施例涉及语音信号处理技术领域,特别涉及一种波达方向估计方法、服务器以及计算机可读存储介质。
背景技术
波达方向(DOA)的计算作为音频信号处理的重要环节,对波束成形和声源定位、声源跟踪有着极其重要的意义。传统的波达方向(DOA)估计方法是基于麦克风阵列各个麦克风直接的接收到音频信号的时间差异对声源角度进行统计学估计。
发明人发现现有技术中至少存在如下问题:基于麦克风阵列各个麦克风直接的接收到音频信号的时间差异对声源角度进行统计学估计的方法,虽然能够满足波达方向估计的准确性要求,但响应速度较慢。
发明内容
本发明实施方式的目的在于提供一种波达方向估计方法、服务器以及计算机可读存储介质,能够在保证波达方向估计准确性的前提下,提高响应速度。
为解决上述技术问题,本发明的实施方式提供了一种波达方向估计方法,包括:获取麦克风阵列采集第一声源的声音得到的多路音频、以及所述第一声源的声源角度;将所述多路音频作为输入,所述声源角度作为输出,训练神经网络模型;将待识别音频输入已训练的所述神经网络模型中,得到与所述待识别音频对应的待识别声源角度作为波达方向。
本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上述的波达方向估计方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的波达方向估计方法。
本发明实施方式相对于现有技术而言,通过获取麦克风阵列采集第一声源的声音得到的多路音频、以及所述第一声源的声源角度,将所述多路音频作为输入,所述声源角度作为输出,训练神经网络模型,将待识别音频输入已训练的所述神经网络模型中,得到与所述待识别音频对应的待识别声源角度作为波达方向,从而实现了端到端的波达方向的计算,在保证了波达方向估计准确性的前提下,提高了响应速度。
另外,所述获取麦克风阵列采集到的多路音频、以及与所述多路音频对应的声源角度,具体包括:获取所述麦克风阵列N次采集到的N个所述多路音频、以及分别与N个所述多路音频一一对应的N个声源角度;其中,每个所述多路音频对应的声源角度均不相等。
另外,获取的所述麦克风阵列相邻两次采集到的、两个所述多路音频对应的声源角度的差值相等。
另外,所述获取麦克风阵列采集到的多路音频、以及与所述多路音频对应的声源角度之后,还包括:识别所述多路音频中的语音段以及静音段;对所述语音段的所述多路音频进行标注;所述将所述多路音频作为输入,所述声源角度作为输出,训练神经网络模型,具体包括:将所述多路音频中被标注的部分作为输入,所述声源角度作为输出,训练所述神经网络模型。通过仅将所述语音段的所述多路音频作为输入来训练所述神经网络模型,避免了将静音段的所述多路音频也作为输入、而导致神经网络模型中的对应关系不准确的问题,从而提高了波达方向估计的准确性。
另外,所述对所述语音段的所述多路音频进行标注,具体为:以与所述多路音频对应的声源角度作为音频标注,对所述语音段的所述多路音频进行标注。
另外,所述对所述语音段的所述多路音频进行标注之后,还包括:对所述多路音频中每一路音频数据在时域上进行相同噪声的幅值叠加;所述将所述多路音频中被标注的部分作为输入,所述声源角度作为输出,训练所述神经网络模型,具体包括:将叠加后的所述多路音频中被标注的部分作为输入,所述声源角度作为输出,训练所述神经网络模型。通过对所述多路音频中每一路音频数据在时域上进行相同噪声的幅值叠加,保证音频不失真的前提下,还保持了标注同步,从而能够更好的适用于有噪音的环境,提高了波达方向估计的准确性。
另外,所述神经网络模型包括:输入层、隐含层以及输出层,所述隐含层为循环神经网络。由于循环神经网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出,从而有助于解决由于音频本身的稀疏性造成的计算失效问题。
另外,所述循环神经网络为门控循环神经网络。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明第一实施方式提供的波达方向估计方法的流程图;
图2是本发明第一实施方式中的麦克风阵列音频采集实现示意图;
图3是本发明第一实施方式中的神经网络模型的结构图;
图4是本发明第一实施方式中的DOA计算的具体流程图;
图5是本发明第二实施方式提供的波达方向估计方法的流程图;
图6是本发明第三实施方式提供的波达方向估计方法的流程图;
图7是本发明第四实施方式提供的服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种波达方向估计方法,具体流程如图1所示,包括以下步骤:
S11:获取麦克风阵列采集第一声源的声音得到的多路音频、以及第一声源的声源角度。
本步骤中,服务器获取所述麦克风阵列N次采集到的N个所述多路音频、以及分别与N个所述多路音频一一对应的N个声源角度,其中,N为正整数,每个所述多路音频对应的声源角度均不相等,优选的,获取的所述麦克风阵列相邻两次采集到的、两个所述多路音频对应的声源角度的差值相等。
具体的,移动第一声源,麦克风阵列采集第一声源在不同位置的的声音得到N个多路音频,并记录采集每个多路音频时第一声源对应的位置,即此时对应的第一声源的声源角度,将麦克风阵列采集的一个声源角度与对应的一个多路音频作为一组数据,发送至服务器。
为了保证波达方向估计的准确性,麦克风阵列需要在一定的条件下进行信号采集,条件包括:安静的低混响的消音室环境;高保真的音频播放器播放高质量的语音音频;明确的语音声源方向标注;大量的语音信号(训练的数据量较大)等。
在实际应用中,麦克风阵列音频采集实现示意图如图2所示,采用先录制清晰的语音语料再使用在麦克风阵列不同方向进行播录并标注录制角度的方式,进行语料信号的采集和标注,本实施方式的采集音频参数为4路麦克风,16bit、16000Hz采样。其中,清晰的语音语料可以使用开源数据库,使用高保真音箱或者人工嘴分别选择在麦克风阵列的0到180度的各个区间以10度为跨度进行面向麦克风阵列的语料播放,人工嘴到阵列的距离最好固定,同时麦克风阵列对语料进行录制多路音频(本实施方式实现采用4路麦克风阵列,因而录制数据为4路音频),并记录录制的语料对应的声源角度作为音频标注(label)。
其中,人工嘴是一种特殊的人工声源,亦称仿真嘴或人造嘴。它是用一只小型扬声器安装在特殊形状的障板上构成的,障板形状的设计是使其模拟人嘴的平均指向性和辐射图案,且仿真嘴必须要有恒定的声压输出。
麦克风阵列采集到多路音频后,将多路音频上传至服务器,服务器接收麦克风阵列传输的多路音频并进行音频的特征提取。本实施方式中,采集音频参数为4路麦克风,16bit、16000Hz采样,基于前述采集的音频和对应的标注进行特征提取。具体方法为,对音频按照10ms进行分帧,以便于弄清楚语音中各个频率成分的分布,并且,分别计算每一路的MFCC特征,其中,MFCC特征为将语音物理信息(包括:频谱包络和细节)进行编码运算得到的一组特征向量,选用前22个MFCC特征作为音频特征,同步的4路麦克风数据每帧共提取88个特征点,加一个标注(label),共89个值用作后续神经网络模型的训练。
S12:将多路音频作为输入,声源角度作为输出,训练神经网络模型。
本步骤中,所述神经网络模型包括:输入层、隐含层以及输出层,所述隐含层为循环神经网络。由于循环神经网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出,从而有助于解决由于音频本身的稀疏性造成的计算失效问题。
在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。而循环神经网络RNN(Recurrent Neuron Network)是一种对序列数据建模的神经网络,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
优选的,所述循环神经网络为门控循环神经网络GRU。常见的的循环神经网络包括:双向循环神经网络(Bidirectional RNN,Bi-RNN)和长短期记忆网络(Long Short-TermMemorynetworks,LSTM),而GRU是LSTM的一个变体,GRU保持了LSTM的效果同时又使结构更加简单。
本实施方式中,神经网络模型的结构图如图3所示,门控循环神经网络GRU使用sigmoid作为循环激活函数,输出激活函数使用tanh;输入层使用全连接层Dense,对输入特征做一次融合,并使用tanh作为输出激活函数,从而使得第二次循环网络的输入相对稳定,特效相对明显;输出层使用一层全连接层Dense,输出值个数为1,使用relu作为激活函数。在训练过程中,输出值即为label方向。
其中,输入层的神经元个数为88个,使得输入层的神经元的个数与输入的特征点的个数匹配,GRU的神经元个数为200个,输出层的神经元个数为1个,即为波达方向。
S13:将待识别音频输入已训练的神经网络模型中,得到与待识别音频对应的待识别声源角度作为波达方向。
本步骤中,DOA计算的具体流程图如图4所示,首先,对待识别音频进行分帧(可以为10ms),再进行MFCC特征提取后输入已训练的所述神经网络模型,已训练的所述神经网络模型会直接输出该帧的DOA估计值,即波达方向估计值,其中,待识别音频与前述用于训练神经网络模型的多路音频均为M路音频,M为正整数。
本发明实施方式相对于现有技术而言,通过获取麦克风阵列采集第一声源的声音得到的多路音频、以及所述第一声源的声源角度,将所述多路音频作为输入,所述声源角度作为输出,训练神经网络模型,将待识别音频输入已训练的所述神经网络模型中,得到与所述待识别音频对应的待识别声源角度作为波达方向,从而实现了端到端的波达方向的计算,在保证了波达方向估计准确性的前提下,提高了响应速度。
本发明的第二实施方式涉及一种波达方向估计方法。第二实施方式与第一实施方式大致相同,主要区别之处在于:在本发明第二实施方式中,所述获取麦克风阵列采集到的多路音频、以及与所述多路音频对应的声源角度之后,还包括:识别所述多路音频中的语音段以及静音段;对所述语音段的所述多路音频进行标注;所述将所述多路音频作为输入,所述声源角度作为输出,训练神经网络模型,具体包括:将所述多路音频中被标注的部分作为输入,所述声源角度作为输出,训练所述神经网络模型。通过仅将所述语音段的所述多路音频作为输入来训练所述神经网络模型,避免了将静音段的所述多路音频也作为输入、而导致神经网络模型中的对应关系不准确的问题,从而提高了波达方向估计的准确性。
本实施方式中的波达方向估计方法,如图5所示,具体包括以下步骤:
S21:获取麦克风阵列采集第一声源的声音得到的多路音频、以及第一声源的声源角度。
S22:识别多路音频中的语音段以及静音段,对语音段的多路音频进行标注。
本步骤中,对多路音频进行VAD判断,区分语音段(本步骤中为人声段)以及静音段,以与所述多路音频对应的声源角度作为音频标注,对所述语音段的所述多路音频进行标注,从而实现只针对人声进行有效标注,没有人声时角度标注为非法值或其他固定值,如-1。其中,VAD即语音活动检测(Voice Activity Detection),又称语音端点检测、语音边界检测,本实施方式中应用了基于神经网络的VAD算法,VAD算法可使用有效的开源算法,由于只对原始安静环境录制的纯语音进行判断,因此,对于VAD性能要求不特别高,具体不做限定。
S23:将多路音频中被标注的部分作为输入,声源角度作为输出,训练神经网络模型。
本步骤中,将所述语音段的所述多路音频作为输入,静音段的所述多路音频舍弃不使用,声源角度作为输出,训练神经网络模型,其中,神经网络模型的具体结构与第一实施方式类似,此处不再赘述。
S24:将待识别音频输入已训练的神经网络模型中,得到与待识别音频对应的待识别声源角度作为波达方向。
本实施方式中的步骤S21、S24与第一实施方式中的步骤S11、S13类似,为了避免重复,此处不再赘述。
本发明实施方式相对于现有技术而言,通过获取麦克风阵列采集第一声源的声音得到的多路音频、以及所述第一声源的声源角度,将所述多路音频作为输入,所述声源角度作为输出,训练神经网络模型,将待识别音频输入已训练的所述神经网络模型中,得到与所述待识别音频对应的待识别声源角度作为波达方向,从而实现了端到端的波达方向的计算,在保证了波达方向估计准确性的前提下,提高了响应速度。
本发明的第三实施方式涉及一种波达方向估计方法。第三实施方式与第二实施方式大致相同,主要区别之处在于:在本发明第三实施方式中,所述对所述语音段的所述多路音频进行标注之后,还包括:对所述多路音频中每一路音频数据在时域上进行相同噪声的幅值叠加;所述将所述多路音频中被标注的部分作为输入,所述声源角度作为输出,训练所述神经网络模型,具体包括:将叠加后的所述多路音频中被标注的部分作为输入,所述声源角度作为输出,训练所述神经网络模型。通过对所述多路音频中每一路音频数据在时域上进行相同噪声的幅值叠加,保证音频不失真的前提下,还保持了标注同步,从而能够更好的适用于有噪音的环境,提高了波达方向估计的准确性。
本实施方式中的波达方向估计方法,如图6所示,具体包括以下步骤:
S31:获取麦克风阵列采集第一声源的声音得到的多路音频、以及第一声源的声源角度。
S32:识别多路音频中的语音段以及静音段,对语音段的多路音频进行标注。
S33:对多路音频中每一路音频数据在时域上进行相同噪声的幅值叠加。
本步骤中,服务器对多路音频中每一路音频数据在时域上进行相同噪声的幅值叠加,保证不失真且和第一步中DOA角度标注保持同步,即不改变原始音频的长度,从而增强了算法的噪声鲁棒性,使得训练好的神经网络模型能够更好的适用于有噪音的环境。
S34:将叠加后的多路音频中被标注的部分作为输入,声源角度作为输出,训练神经网络模型。
本步骤中,将每一路音频数据在时域上进行相同噪声的幅值叠加后的、语音段的多路音频作为输入,与该多路音频对应的声源角度作为输出,训练神经网络模型。
S35:将待识别音频输入已训练的神经网络模型中,得到与待识别音频对应的待识别声源角度作为波达方向。
本实施方式中的步骤S31、S32、S35与第一实施方式中的步骤S21、S22、S24类似,为了避免重复,此处不再赘述。
本发明实施方式相对于现有技术而言,通过获取麦克风阵列采集第一声源的声音得到的多路音频、以及所述第一声源的声源角度,将所述多路音频作为输入,所述声源角度作为输出,训练神经网络模型,将待识别音频输入已训练的所述神经网络模型中,得到与所述待识别音频对应的待识别声源角度作为波达方向,从而实现了端到端的波达方向的计算,在保证了波达方向估计准确性的前提下,提高了响应速度。本实施方式中实现了端到端的DOA角度计算,准确率约94%,且具有良好的噪声鲁棒性,能实现只对人声进行定位的功能。具体的,在四核Cortex-A35、频率最高1.3GHz的嵌入式平台CPU上,每帧平均计算耗时仅为0.22ms,相比传统的估计方法如SRP-PHAT声源定位算在同等条件下每帧平均耗时约1.1ms而言,本实施方式的波达方向估计方法在响应时间上具有明显的优势。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第四实施方式涉及一种服务器,如图7所示,包括:
至少一个处理器401;以及,
与至少一个处理器401通信连接的存储器402;其中,
存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述推荐用户充值的信息提醒的方法。
其中,存储器402和处理器401采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器401和存储器402的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器401处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器401。
处理器401负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器402可以被用于存储处理器401在执行操作时所使用的数据。
本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。