本发明实施例涉及数据处理领域,特别涉及声源定位方法、电子设备及存储介质。
背景技术:
由于语音交互是自然友好的交互方式,它逐渐被人们所认可,并广泛应用于各个生活场景,如车载语音、智能电视与音响、智能机器人等。语音交互分为近场语音和远场语音。近场语音,如手机上的语音输入法等,已经非常成熟完善。真正改变人们交互方式的是远场语音。远场语音交互包括远场麦克风阵列拾音,语音识别和语音理解。因为远场语音与产品硬件如麦克风阵列形状、产品声学结构等紧密相关,远场语音是目前智能交互设备设计与制造的重要关注点。
然而,发明人发现现有技术中至少存在如下问题:目前的麦克风阵列拾音中的声源定位方法的鲁棒性差、偏差大且容易获得坏值。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
本发明实施方式的目的在于提供一种声源定位方法、电子设备及存储介质,提高了声源定位的鲁棒性,减小了偏差,能够减少坏值的出现。
为解决上述技术问题,本发明的实施方式提供了一种声源定位方法,包括以下步骤:获取各角度的指示参数,该角度的指示参数用于确定该角度对应的方向是否为声源方向;针对任一角度,根据该角度对应的参考区间内的指示参数,更新该角度的指示参数;其中,该角度对应的参考区间包括预定义的该角度的参考角度区间,和/或,预定义的该角度的参考时间区间,该角度对应的参考区间内的指示参数包括该角度的指示参数;根据各角度更新后的指示参数,确定声音的声源方向。
本发明的实施方式提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上述实施方式提及的声源定位方法。
本发明的实施方式还提供了一种计算机可读存储介质,包括:存储有计算机程序,计算机程序被处理器执行时实现上述实施方式提及的声源定位方法。
本发明实施方式相对于现有技术而言,根据角度的参考时间区间和/或参考角度区间内的指示参数,进行声源定位,相对于只参考该角度的指示参数的方法,能够提高定位算法的鲁棒性,减小了实际方向和推算的声源方向之间的偏差,减少坏值的出现,为波束形成远场语音增强等模块提供有力技术保障。除此之外,由于本实施方式提及的声源定位方法,无需结合评分等其他算法,具有易于实现、高效运行的特点。
另外,参考区间包括参考角度区间;根据角度对应的参考区间内各角度的指示参数,更新角度的指示参数,具体包括:对角度对应的参考角度区间内的指示参数进行累加或加权累加计算,得到该角度更新后的指示参数。该实施例中,对参考角度区间的指示参数进行累计或者加权累计,能有效消除假的峰值,可以去除一些突兀的异常点。
另外,参考区间还包括参考时间区间;对角度对应的参考角度区间内各角度的指示参数进行累加或加权累加计算,得到角度更新后的指示参数,具体包括:累加或加权累加角度对应的参考角度区间内各角度的指示参数,得到该角度当前时间的空间累计值;累加或加权累加该角度在所述参考时间区间中各时间的空间累计值,得到该角度更新后的指示参数。该实施例中,对参考时间区间[t-t,t]的指示参数进行累计,可以避免大量低能量采样点导致不能正确定位的问题,进一步提高了定位成功概率。
另外,参考区间包括参考时间区间;根据角度对应的参考区间内的指示参数,更新角度的指示参数,具体包括:累加或加权累加角度在参考时间区间内各时间的指示参数,得到该角度更新后的指示参数。该实施例中,对参考时间区间[t-t,t]的指示参数进行累计,可以避免大量低能量采样点导致不能正确定位的问题。
另外,参考区间还包括参考角度区间;累加或加权累加角度在参考时间区间内各时间的指示参数,得到该角度更新后的指示参数,具体包括:累加或加权累加角度在参考时间区间内各时间的指示参数,得到该角度的时间累计值;累加或加权累加该角度对应的参考角度区间中各角度的时间累计值,得到该角度更新后的指示参数。
另外,指示参数为基于广义互相关—相位变换gcc-phat算法计算得到的gcc-phat值,或者,基于可控转向响应功率-相位变换srp-phat算法得到的srp-phat值。
另外,指示参数为srp-phat值,获取各角度的指示参数,具体包括:确定各个麦克风对的时间差和gcc-phat值的对应关系;对每个麦克风对的时间差对应的gcc-phat值进行插值处理;根据插值后的时间差和gcc-phat值的对应关系,以及插值后的时间差和角度的对应关系,计算每个角度的srp-phat值。该实施例中,对gcc-phat值的对应关系进行插值处理,以获得更高精度的时间差分辨能力,从而提高了阵列的角度分辨率,提高了声源定位的准确性。
另外,指示参数为gcc-phat值,获取各角度的指示参数,具体包括:确定时间差和gcc-phat值的对应关系;对时间差对应的gcc-phat值进行插值处理;根据插值后的时间差和gcc-phat值的对应关系,以及插值后的时间差和角度的对应关系,确定各角度的gcc-phat值。该实施例中,对gcc-phat值的对应关系进行插值处理,以获得更高精度的时间差分辨能力,从而提高了阵列的角度分辨率,提高了声源定位的准确性。
另外,对时间差对应的gcc-phat值进行插值处理,具体包括:根据各麦克风对中的最大间距,计算最大时延;对时间差区间[-最大时延,最大时延]的gcc-phat值进行插值处理。
另外,获取各角度的指示参数之前,声源定位方法还包括:确定当前存在语音。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明的第一实施方式的声源定位方法的流程图;
图2是根据本发明的第二实施方式的声源定位方法的流程图;
图3是根据本发明的第三实施方式的声源定位方法的结构示意图;
图4是根据本发明的第四实施方式的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种声源定位方法,应用于电子设备,例如:各类终端(智能音响、语音机器人等)或服务器。如图1所示,声源定位方法包括:
步骤101:获取各角度的指示参数。
具体地说,角度的指示参数用于确定该角度对应的方向是否为声源方向。其中,指示参数可以是基于广义互相关—相位变换(generalizedcrosscorrelation-phasetransformation,gcc-phat)算法计算得到的gcc-phat值,也可以是基于可控转向响应功率-相位变换(steerresponsepower-phasetransform,srp-phat)算法计算得到的srp-phat值,本实施方式不一一列举。
需要说明的是,本领域技术人员可以理解,实际应用中,指示参数也可以是其他参数,本实施方式仅为举例说明。
以下对获取各角度的指示参数的方法进行举例说明。
在一个实施例中,指示参数是麦克风对的gcc-phat值。电子设备可以通过以下方法获取各角度的指示参数:
方法1:电子设备确定时间差和gcc-phat值的对应关系。电子设备根据各时间差和角度的对应关系,以及时间差和gcc-phat值的对应关系,确定各角度的gcc-phat值。其中,电子设备可以通过gcc-phat算法,确定时间差和gcc-phat值的对应关系。
方法2:电子设备确定时间差和gcc-phat值的对应关系;对时间差对应的gcc-phat值进行插值处理;根据插值后的时间差和gcc-phat值的对应关系,以及插值后的时间差和角度的对应关系,确定各角度的gcc-phat值。其中,电子设备可以根据插值后的各时间差和插值后的gcc-phat值的对应关系,以及插值后的各时间差和各角度的对应关系,确定各角度和gcc-phat值的对应关系,从而确定各角度对应的gcc-phat值。
在一个实施例中,指示参数是srp-phat值。电子设备可以通过以下方法获取各角度的指示参数:
方法1:电子设备计算每个麦克风对的时间差;根据每个麦克风对的时间差,计算各麦克风对的各个时间差对应的gcc-phat值;根据时间差和角度的对应关系,将该角度对应的时间差所对应的所有麦克风对的gcc-phat值的和,作为该角度的srp-phat值。具体地说,电子设备根据gcc-phat算法,计算每个麦克风阵列中每个麦克风对的以采样周期为单位的时间差。根据srp-phat算法,以及每个麦克风对的时间差和gcc-phat的对应关系,计算srp-phat值。
方法2:电子设备确定各个麦克风对的时间差和gcc-phat值的对应关系;对每个麦克风对的时间差对应的gcc-phat值进行插值处理;根据插值后的时间差和gcc-phat值的对应关系,以及插值后的时间差和角度的对应关系,计算每个角度的srp-phat值。具体地说,电子设备确定时间差和gcc-phat的对应关系,以及计算srp-phat值的过程可以参考指示参数为srp-phat时的方法1,此处不再赘述。
以下对电子设备对时间差对应的gcc-phat值进行插值处理的过程进行举例说明。
在一个实施例中,电子设备根据各麦克风对中的最大间距,计算最大时延;对时间差区间[-最大时延,最大时延]的gcc-phat值进行插值处理。其中,最大时延可以是用采样周期表示的声音传播最大间距所需的时间。
值得一提的是,对gcc-phat值的对应关系进行插值处理,以获得更高精度的时间差分辨能力,从而提高了阵列的角度分辨率,提高了声源定位的准确性。
需要说明的是,本领域技术人员可以理解,本实施方式中,以基于最大时延确定进行插值的时间差区间为例,对进行插值的时间差区间的确定方式进行举例说明,实际应用中,还可以通过其他方式确定进行插值处理的时间差区间。
以下结合实例对插值处理提高角度分辨率的原理进行举例说明。
以一个麦克风对为例,不同角度的声源到达两个麦克风形成不同的时间差,时间差以采样周期t为单位。最佳角度分辨率在麦克风对的垂直角度发生,则采样周期t=(d/c)*cos(90-θ’),其中,d是麦克风对的间距,c=342m/s,是音速,θ’为角度分辨率。一组常用的麦克风阵列的参数为:d=0.12m,t=1/16000s,该参数下,θ’=10.3°。这个分辨率会带来严重的定位误差,因此,可以通过插值的方式,提高麦克风阵列的角度分辨率。发明人考虑到,间距、音速是固定不变的,所以,可以采用算法提高麦克风对的时间差分辨率。假设,能将他们的时间差分辨率提高为0.1个采样周期,则最佳角度分辨率θ’=1°。因此,发明人发现,采用插值算法,对某一时间差区间对应的gcc-phat进行插值,可以获得更高精度的时间差分辨能力,从而提高角度分辨率。例如,10倍插值以获得0.1精度时延对应的gcc-phat值。
在一个例子中,电子设备对每个麦克风对的时间差和gcc-phat值的对应关系进行插值处理的过程如下:根据各麦克风对中的最大间距,计算最大时延;对每个麦克风对的时间差区间[-最大时延,最大时延]的gcc-phat值进行插值处理。
需要说明的是,在插值过程中,使用的插值算法可以是多项式插值、自然三次样条算法等,本实施方式不限制插值过程中具体使用的插值算法类型。
步骤102:针对任一角度,根据角度对应的参考区间内的指示参数,更新角度的指示参数。
具体地说,角度对应的参考区间包括预定义的角度的参考角度区间,和/或,预定义的角度的参考时间区间,角度对应的参考区间内的指示参数包括角度的指示参数。
在一个例子中,电子设备累加或加权累加角度对应的参考区间内的指示参数,得到该角度更新后的指示参数。
以下更新各角度的指示参数的方法进行举例说明。
在一个实施例中,参考区间包括参考角度区间,电子设备对该角度对应的参考角度区间内的指示参数进行累加或加权累加计算,得到该角度更新后的指示参数。具体地说,对于角度θ,其参考角度区间可以是[θ-δ,θ+δ],δ可以根据需要设置,例如,可以是麦克风角度分辨率的3-5倍,如,可以是5度,本实施方式不作限制。
值得一提的是,对参考角度区间的指示参数进行累计或者加权累计,能有效消除假的峰值,可以去除一些突兀的异常点。
电子设备更新各角度的指示参数的方法包括但不限于:
方法1:电子设备对该角度对应的参考角度区间内的指示参数进行累加或加权累加计算,得到该角度的空间累加值,将该角度的空间累计值,作为该角度更新后的指示参数。具体地说,以指示参数为srp-phat值为例,通过srp-phat定位算法计算出每个角度对应的srp-phat值后,对参考角度区间[θ-δ,θ+δ]的srp-phat值进行累计或者加权累计,空间累计能有效消除假的srp-phat峰值,这个原理与图像处理中的磨皮一样,可以去除一些突兀的异常点。其中,加权累计时每个角度的权系数为1即是普通的累加,加权累加系数可以采用矩形窗、三角窗、汗明窗等窗函数进行设计,本实施方式不限制角度对应的参考角度区间内各角度的指示系数的具体加权累加系数。
方法2:在参考区间还包括参考时间区间的情况下,电子设备累加或加权累加该角度对应的参考角度区间内各角度的指示参数,得到该角度当前时间的空间累计值;累加或加权累加该角度在参考时间区间中各时间的空间累计值,得到该角度更新后的指示参数。
在一个例子中,电子设备可以按照公式a:tsphat(k)=a*tsphat(k-1)+(1-a)*sphat(k),计算该角度更新后的指示参数。其中,tsphat(k)表示该角度更新后的指示参数,a表示预设的比例参数,tsphat(k-1)表示上一次计算得到的该角度更新后的指示参数,sphat(k)表示当前时间的该角度的空间累计值。
在另一实施例中,参考区间包括参考时间区间,电子设备累加或加权累加该角度在参考时间区间内各时间的指示参数,得到该角度更新后的指示参数。
值得一提的是,对参考时间区间[t-t,t]的指示参数进行累计,可以避免大量低能量采样点导致不能正确定位的问题。
电子设备更新各角度的指示参数的方法包括但不限于:
方法1:电子设备累加或加权累加角度在参考时间区间内各时间的指示参数,得到该角度的时间累加值,将该角度的时间累计值,作为该角度更新后的指示参数。
方法2:在参考区间还包括参考角度区间的情况下,电子设备累加或加权累加该角度在参考时间区间内各时间的指示参数,得到该角度的时间累计值;累加或加权累加该角度对应的参考角度区间中各角度的时间累计值,得到该角度更新后的指示参数。
在一个例子中,在基于参考时间区间进行指示参数的加权累加时,针对任一角度,电子设备可按照公式b:tphat(k)=a*tphat(k-1)+(1-a)*phat(k),计算该角度的时间累计值;其中,tphat(k)表示该角度的时间累计值,a表示预设的比例参数,tphat(k-1)表示上一次计算得到的该角度的时间累计值,phat(k)表示当前时间的该角度的指示参数。其中,a可以是0~1的权重系数,a越大历史作用越大、鲁棒性越好。当使用场景中声源常为静止时,a可以取区间0.6~0.8内的参数,声源常变化时,a可以取区间0.2~0.4内的参数。
需要说明的是,本领域技术人员可以理解,实际应用中,也可以采用其他方式进行计算,本实施方式不一一赘述。
步骤103:根据各角度更新后的指示参数,确定声音的声源方向。
具体地说,电子设备可以基于声源定位中使用的定位算法,根据各角度更新后的指示参数,确定声音的声源方向。
在一个实施例中,指示参数为srp-phat值。电子设备可以将最大的更新后的srp-phat值对应的角度所指示的方向,作为声音的声源方向。
需要说明的是,当指示参数gcc-phat值时,电子设备可以基于后续使用的算法,设置确定声源方向的方式,本实施方式不作限制。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的声源定位方法,根据角度的参考时间区间和/或参考角度区间内的指示参数,进行声源定位,相对于只参考该角度的指示参数的方法,能够提高定位算法的鲁棒性,减小了实际方向和推算的声源方向之间的偏差,减少坏值的出现,为波束形成远场语音增强等模块提供有力技术保障。除此之外,由于本实施方式提及的声源定位方法,无需结合评分等其他算法,具有易于实现、高效运行的特点。
本发明的第二实施方式涉及一种声源定位方法。本实施方式在第一实施方式的基础上做了进一步改进,具体改进之处为:在获取各角度的指示参数之前,判断是否存在语音。
具体的说,如图2所示,在本实施方式中,包含步骤201至步骤204,其中,步骤202至步骤204分别与第一实施方式中的步骤101至步骤103大致相同,此处不再赘述。下面主要介绍不同之处:
步骤201:判断麦克风采集的数据中是否存在语音。
具体地说,若确定存在语音,执行步骤202至步骤204,否则,可以继续执行步骤201。
需要说明的是,图2中,以电子设备在确定麦克风采集的数据中不存在语音时,持续检测是否存在语音为例,对声源定位方法进行举例说明,实际应用中,若不存在语音,也可以执行其他操作。例如,若参考区间包括参考时间区间,则在确定采集的数据中不存在语音时,令上一次计算得到的该角度的时间累计值(tphat(k-1))为0。
在一个实施例中,在判断麦克风采集的数据中是否存在语音之前,电子设备对麦克风阵列进行初始化,将麦克风进行两两成对,使用麦克风之间的最大间距计算最大时延;对麦克风采集的数据进行分帧、加窗等预处理。
在一个实施例中,电子设备可以通过常用的语音激活检测(voiceactivitydetection,vad)算法进行是否存在语音的检测。
需要说明的是,本领域技术人员可以理解,实际应用中,也可以采用其他方式对是否存在语音进行检测,此处不一一列举。
步骤202:获取各角度的指示参数。
步骤203:针对任一角度,根据角度对应的参考区间内的指示参数,更新该角度的指示参数。
步骤204:根据各角度更新后的指示参数,确定声音的声源方向。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的声源定位方法,根据角度的参考时间区间和/或参考角度区间内的指示参数,进行声源定位,能够提高定位算法的鲁棒性,减小了实际方向和推算的声源方向之间的偏差,减少坏值的出现,为波束形成远场语音增强等模块提供有力技术保障。除此之外,由于本实施方式提及的声源定位方法,无需结合评分等其他算法,具有易于实现、高效运行的特点。除此之外,在计算各角度的指示参数前,先对是否存在语音进行判断,避免对不存在语音的数据进行后续处理造成的计算资源浪费。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第三实施方式涉及一种声源定位装置,如图3所示,包括:获取模块301、更新模块302和确定模块303。获取模块301用于获取各角度的指示参数,角度的指示参数用于确定角度对应的方向是否为声源方向。更新模块用于针对任一角度,根据角度对应的参考区间内的指示参数,更新该角度的指示参数;其中,角度对应的参考区间包括预定义的该角度的参考角度区间,和/或,预定义的该角度的参考时间区间,角度对应的参考区间内的指示参数包括该角度的指示参数。确定模块303用于根据各角度更新后的指示参数,确定声音的声源方向。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第四实施方式涉及一种电子设备,如图4所示,包括:至少一个处理器401;以及,与至少一个处理器401通信连接的存储器402;其中,存储器402存储有可被至少一个处理器401执行的指令,指令被至少一个处理器401执行,以使至少一个处理器401能够执行上述实施方式提及的声源定位方法。
该电子设备包括:一个或多个处理器401以及存储器402,图4中以一个处理器401为例。处理器401、存储器402可以通过总线或者其他方式连接,图4中以通过总线连接为例。存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述声源定位方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器402中,当被一个或者多个处理器401执行时,执行上述任意方法实施方式中的声源定位方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。