具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本发明第一优选实施例提出了一种通话检测方法,其流程如图1所示,具体为:
步骤101、提取近端语音信号帧,以及相对应的远端语音信号帧;
步骤102、计算近端语音信号帧及远端语音信号帧的声道的特征参数;
步骤103、根据近端语音信号帧及远端语音信号帧的声道的特征参数,判断通话状态。
本发明实施例可以通过接收到的近端语音信号帧和远端语音信号帧的特征参数来区分通话状态,即是单讲状态还是双讲状态。这是由于人在发声时,由声门向上开始的喉腔、咽腔和口腔组成的声道是一个共振腔,每个人发出的语音信号都包含了自己独有的声道共振特性。本发明实施例通过采集声道的特征参数,并根据远端语音信号帧与近端语音信号帧的特征参数判断是单讲状态还是双讲状态。这样相比较现有的方式,其所获得的效果更佳。本实施例中以对于提取的近端语音信号帧和远端语音信号帧都以一帧信号为单位。如一般一个语音帧20ms,即160个样点。当然,帧的长度可以根据需要进行调整,并不以20ms为限。
实施例2
本发明第二实施例是在第一实施例的基础上改进而来,即如图2所示,该方法可以具体为:
其中,步骤101可以具体为:
步骤1011、将远端语音信号帧缓存;
步骤1012、获取当前的一帧近端语音信号帧,并从缓存中读取预定时延之前的相对应的一帧远端语音信号帧。
采用这种方式可以获得预定时延值之前的远端语音信号帧。这里取的预定时延值是对实际回声延迟时间的估计,加了这个延迟后是为了和实际的情况相符合,该延迟取值越准确,越可以提高性能。预定时延值的长度可以根据实际情况调整。
其中,步骤102可以具体为:
步骤1021、根据近端语音信号帧和远端语音信号帧,采用Levinson-Durbin递推算法计算远端语音信号帧的线性预测系数a1,a2,...,ap,及近端语音信号帧的线性预测系数b1,b2,...,bp;其中p为线性预测的阶数。
具体计算方式为:获取远端语音信号帧及近端语音信号帧在时间点n的值
并根据语音线性预测器
以及
计算a
1,a
2,...,a
p及b
1,b
2,...,b
p。
其中上述语音线性预测器中的
和
为语音信号在时刻n和时刻n-1的脉冲编码调制(Pulse Code Modulation,PCM)码流值,在获取了远端语音信号帧及近端语音信号帧后即为已知参数。
其中,Levinson-Durbin递推算法是一种现有技术,是计算线性预测系数的一种常用方法。本发明实施例中采用这种算法只是举例说明,本发明并不以此为限。本发明实施例是通过语音线性预测器进行反推。在获得了近端语音信号帧和远端语音信号帧后,这两个信号的
和
成为已知参数。在获取了
和
取值后反推出每一时刻的特征参数a
1,a
2,...,a
p和b
1,b
2,...,b
p。这样可以简单的通过已经获取的近端语音信号帧与远端语音信号帧的特征参数。其中
和
为接收到的近端语音信号帧与远端语音信号帧16bit的PCM码流值。其中PCM是一种现有的数字通信的编码方式,在此不再赘述。
同时,本发明实施例中是采用线性预测系数作为声道的特征参数。这只是举例说明,本发明实施例并不以此为限,还可以采用其他形式的参数作为声道的特征参数。
其中,步骤102之后还可以包括:
步骤102A、对远端语音信号帧的线性预测系数a1,a2,...,ap及近端语音信号帧的线性预测系数b1,b2,...,bp进行平滑处理;其中,该平滑处理可以为低通平滑滤波处理,具体为:
其中α为平滑系数,且0≤α≤1。i的取值为1到p。ai pre和bi pre为前一帧的远端语音信号帧的第i个线性预测系数和前一帧的近端语音信号帧的第i个线性预测系数;当该帧为第一帧时,ai pre和bi pre为一预设参数。
其中α为平滑系数,且0≤α≤1。i的取值为1到p。ai pre和bi pre为前一帧的远端语音信号帧的第i个线性预测系数和前一帧的近端语音信号帧的第i个线性预测系数;当该帧为第一帧时,ai pre和bi pre为一预设参数。
采用平滑处理后,可以更好的解决因扬声器对回声信号带来的非线性失真问题。当然,平滑处理只是一个优选步骤,不经过平滑处理同样可以实现发明目的。同时,平滑处理方法也可以采用其他方法,本发明实施例并不对此作出限定。
其中,步骤103可以具体为:
步骤1031、然后根据平滑处理后的远端语音信号帧的线性预测系数及近端语音信号帧的线性预测系数,获得远端语音信号帧及近端语音信号帧的特征曲线;其中,该近端语音信号帧及远端语音信号帧可以是经过平滑处理的,也可以是未经过平滑处理的;
步骤1032、计算近端语音信号帧与该远端语音信号帧的声道的特征参数曲线的相似度D,
其中,
表示该端语音信号与该远端语音信号帧的特征参数之间的差值的平均值;其中j取值为1~p;
步骤1033、判断相似度是否小于等于门限值T,即D≤T;如果是则为单讲状态,否则为双讲状态。
其中,相似度D的计算公式为方差度量方式。当然,计算公式仅为本发明实施例的举例说明,本发明并不以此为限。在上式中,
表示这一帧的近端语音信号帧与对应的远端语音信号帧的特征参数之间的差值的平均值。在每一远端语音信号帧的线性预测系数a
1,a
2,...,a
p及近端语音信号帧的线性预测系数b
1,b
2,...,b
p之间的差值(a
i-b
i),将该差值减去平均差值后求和后,除以(p-1)。这样计算出的平均差值即为相似度D。
通过特征参数获得特征参数曲线,并通过方差度量计算近端语音信号帧和远端语音信号帧的特征参数曲线的相似度,并以此判断是单讲状态还是双讲状态。这样可以简单的声道的特征参数计算出近端语音信号帧和远端语音信号帧的特征参数曲线的相似度。
当然,本实施例提出的通过特征曲线相似度判断通话状态的方式仅为本发明实施例的一个具体实施方式,还可以采用特征参数通过其他方式计算,本发明实施例并不以此为限。同时,本发明实施例中通过方差度量计算两个特征曲线相似度的方式也只是本发明实施例的一个具体实施方式,还可以采用其他方式计算特征参数曲线,本发明实施例并不以此为限。
特征曲线可以如图3或如图4所示。图3为单讲状态下的一帧20ms的近端语音信号帧和远端语音信号帧的特征曲线,而图4为双讲状态。由图3可以看出,在单讲状态下,近端语音信号帧与远端语音信号帧的特征曲线相似度很高,近端语音信号帧为远端语音信号帧的回声。由图4可以看出,在双讲状态下,近端语音信号帧与远端语音信号帧的特征曲线相似度则很低,这是由于近端语音信号帧为远端语音信号帧的回声与使用者的声音的混合。
如图5所示的,在图5中的A段中,近端语音信号帧与远端语音信号帧很相似,则A段的近端语音信号帧为回声,此时为单讲状态。在B段中,近端语音信号帧与远端语音信号帧不相似,此时为双讲状态。在图5中的C段中,近端语音信号帧与远端语音信号帧很相似,此时为单讲状态。
实施例3
其中,上述第二实施例中的技术方案,可以归纳为如图2所示的流程,具体包括:
步骤201、将远端语音信号帧缓存;
步骤202、获取当前的一帧近端语音信号帧,并从缓存中读取预定时延之前的相对应的一帧远端语音信号帧;
步骤203根据近端语音信号帧和远端语音信号帧,采用Levinson-Durbin递推算法计算远端语音信号帧的线性预测系数a1,a2,...,ap及近端语音信号帧的线性预测系数b1,b2,...,bp;其中p为线性预测的阶数;
步骤204、对远端语音信号帧的线性预测系数a1,a2,...,ap及近端语音信号帧的线性预测系数b1,b2,...,bp进行平滑处理;
步骤205、计算近端语音信号帧与该远端语音信号帧的声道的特征参数曲线的相似度D,
步骤206、判断相似度是否小于等于门限值T,即D≤T;如果是则为单讲状态,否则为双讲状态。
上述第三实施例为本发明实施例的一个具体的方式,本发明实施例并不以此为限。
实施例4
本实用新型第四实施例提出了一种通话检测装置,其结构如图6所示,包括:
语音信号提取模块1,用于提取近端语音信号帧,以及相对应的远端语音信号帧;
特征参数计算模块2,用于根据语音信号提取模块提取的近端语音信号帧与该远端语音信号帧,计算近端语音信号帧与远端语音信号帧的声道的特征参数;
状态判断模块3,用于根据近端语音信号帧及远端语音信号帧的声道的特征参数,判断通话状态。
本发明实施例可以通过接收到的近端语音信号帧和远端语音信号帧的特征参数来区分通话状态,即是单讲状态还是双讲状态。这是由于人在发声时,由声门向上开始的喉腔、咽腔和口腔组成的声道是一个共振腔,每个人发出的语音信号都包含了自己独有的声道共振特性。本发明实施例通过采集声道的特征参数,并根据远端语音信号帧与近端语音信号帧的特征参数判断是单讲状态还是双讲状态。这样相比较现有的方式,其所获得的效果更佳。本实施例中以对于提取的近端语音信号帧和远端语音信号帧都以一帧信号为单位。如一般一个语音帧20ms,即160个样点。当然,帧的长度可以根据需要进行调整,并不以20ms为限。
实施例5
本发明第五实施例是在第四实施例的基础上改进而来,其中:
如图7所示,语音信号提取模块1可以包括:
缓存单元11,用于将远端语音信号帧缓存;
提取单元12,获取当前的一帧近端语音信号帧,并从缓存中读取预定时延之前的相对应的一帧远端语音信号帧。
采用这种方式可以获得预定时延值之前的远端语音信号帧。这里取的预定时延值是对实际回声延迟长度的估计,加了这个延迟后是为了和实际的情况相符合,该延迟取值越准确,越可以提高性能。预定时延值的长度可以根据实际情况调整。
如图8所示,声道的特征参数计算模块2可以包括:
语音信息分析单元21,用于根据提取单元12的近端语音信号帧和远端语音信号帧,获取远端语音信号帧及近端语音信号帧在时间点n的值
参数计算单元22,用于根据语音线性预测器 以及 计算远端语音信号帧的线性预测系数a1,a2,...,ap及近端语音信号帧的线性预测系数b1,b2,...,bp;其中p为线性预测的阶数。其中,参数计算单元可以采用Levinson-Durbin递推算法计算远端语音信号帧的线性预测系数a1,a2,...,ap及近端语音信号帧的线性预测系数b1,b2,...,bp。
具体计算方式为:根据获取远端语音信号帧及近端语音信号帧在时间点n的值
并根据语音线性预测器
以及
计算a
1,a
2,...,a
p及b
1,b
2,...,b
p。
具体计算方式为:获取远端语音信号帧及近端语音信号帧在时间点n的值
并根据语音线性预测器
以及
计算a
1,a
2,...,a
p及b
1,b
2,...,b
p。
其中上述语音线性预测器中的
和
为语音信号在时刻n和时刻n-1的PCM码流值,在获取了远端语音信号帧及近端语音信号帧后即为已知参数。
其中,Levinson-Durbin递推算法是一种现有技术,是计算线性预测系数的一种方法。还可以采用其他方式计算声道的特征参数,本发明实施例并不以此为限。
本实施例是通过语音线性预测器进行反推。在获得了近端语音信号帧和远端语音信号帧后,这两个信号的
和
成为已知参数。在获取了
和
驭值后反推出每一时刻的特征参数a
1,a
2,...,a
p和b
1,b
2,...,b
p。这样可以简单的通过已经获取的近端语音信号帧与远端语音信号帧的特征参数。其中
和
为接收到的近端语音信号帧与远端语音信号帧的16bit的PCM码流值。其中PCM是一种现有的数字通信的编码方式,在此不再赘述。
如图9所示,本发明实施例的通话检测装置还可以包括:
平滑模块4,用于对远端语音信号帧的线性预测系数a1,a2,...,ap及近端语音信号帧的线性预测系数b1,b2,...,bp进行平滑处理;其中,该平滑处理可以为低通平滑滤波处理,具体为:
其中α为平滑系数,且0≤α≤1。i的取值为1到p。ai pre和bi pre为前一帧的远端语音信号帧的第i个线性预测系数和前一帧的近端语音信号帧的第i个线性预测系数;当该帧为第一帧时,ai pre和bi pre为一预设参数。
采用平滑处理后,可以更好的解决因扬声器对回声信号带来的非线性失真问题。当然,平滑处理只是一个优选步骤,不经过平滑处理同样可以实现发明目的。同时,平滑处理方法也可以采用其他方法,本发明实施例并不对此作出限定。
如图10所示,状态判断模块3可以具体为:
特征参数曲线计算单元31,用于根据近端语音信号帧及远端语音信号帧的声道的特征参数,获得近端语音信号帧及远端语音信号帧的特征参数曲线;其中,该近端语音信号帧及远端语音信号帧可以是经过平滑处理的,也可以是未经过平滑处理的;
相似度计算单元32,用于根据近端语音信号帧及远端语音信号帧的特征曲线,计算相似度D,
判断单元33,用于根据相似度D与预设的门限值T进行比较,判断相似度是否小于等于门限值T,即D≤T;如果是则为单讲状态,否则为双讲状态。
其中,相似度D的计算公式为方差度量方式。当然,计算公式仅为本发明实施例的举例说明,本发明并不以此为限。在上式中,
表示这一帧的近端语音信号帧与对应的远端语音信号帧的特征参数之间的差值的平均值。在每一远端语音信号帧的线性预测系数a
1,a
2,...,a
p及近端语音信号帧的线性预测系数b
1,b
2,...,b
p之间的差值(a
i-b
i),将该差值减去平均差值后求和后,除以(p-1)。这样计算出的平均差值即为相似度D。
通过特征参数获得特征参数曲线,并通过方差度量计算近端语音信号帧和远端语音信号帧的特征参数曲线的相似度,并以此判断是单讲状态还是双讲状态。这样可以简单的声道的特征参数计算出近端语音信号帧和远端语音信号帧的特征参数曲线的相似度。
当然,本实施例提出的通过特征曲线相似度判断通话状态的方式仅为本发明实施例的一个具体实施方式,还可以采用特征参数通过其他方式计算,本发明实施例并不以此为限。同时,本发明实施例中通过方差度量计算两个特征曲线相似度的方式也只是本发明实施例的一个具体实施方式,还可以采用其他方式计算特征参数曲线,本发明实施例并不以此为限。
特征曲线可以如图3或如图4所示。图3为单讲状态下的一帧20ms的近端语音信号帧和远端语音信号帧的特征曲线,而图4为双讲状态。由图3可以看出,在单讲状态下,近端语音信号帧与远端语音信号帧的特征曲线相似度很高,近端语音信号帧为远端语音信号帧的回声。由图4可以看出,在双讲状态下,近端语音信号帧与远端语音信号帧的特征曲线相似度则很低,这是由于近端语音信号帧为远端语音信号帧的回声与使用者的声音的混合。
如图5所示的,在图5中的A段中,近端语音信号帧与远端语音信号帧很相似,则A段的近端语音信号帧为回声,此时为单讲状态。在B段中,近端语音信号帧与远端语音信号帧不相似,此时为双讲状态。在图5中的C段中,近端语音信号帧与远端语音信号帧很相似,此时为单讲状态。
实施例6
下面通过一个具体的实例对本发明实施例作出进一步说明:
如图11所示,本实施例的方法包括:
步骤301:输入远端信号和近端信号帧,当前远端信号帧写入缓冲区Buffer。然后从缓冲区Buffer中读取相对当前输入帧延迟Tail_length个点的历史帧信号Far_frame,远端信号帧Far_frame和当前输入的近端信号帧一起进入下一步计算。
其中Tail_length为回声相对于远端信号的实际延迟长度,一般手机的回声延迟为16ms左右,对于8000采样率的信号,即为128个采样点;之所以要取延迟Tail_length个点的远端信号参与计算,是因为包含在当前近端信号帧中的回声信号实际是与延迟Tail_length个点的远端信号相对应;
步骤302:计算当前帧声道的特征参数。
采用Levinson-Durbin递推算法算法计算远端参考信号和近端信号和的N阶线性预测系数分别为a1,a2,...,ap和b1,b2,...,bp,其中p表线性预测的阶数。
s(n)为语音信号在时刻点n时的PCM码流值,公式(2)和公式(3)所示为语音线性预测器,它是由与s(n)邻近的过去p个值来预测或估计当前值s(n),其中ai和bi称为线型预测系数;
通过近端语音信号帧和远端语音信号帧分别获取其s(n)值,并采用Levinson-Durbin递推算法,求解系数ai和bi;
步骤303:对步骤2计算的语音特征参数a1,a2,...,ap和b1,b2,...,bp进行低通平滑滤波,平滑方法如公式(5)和公式(6):
其中α为平滑系数,且 i的取值为1到p。ai pre和bi pre为前一帧的远端语音信号帧的第i个线性预测系数和前一帧的近端语音信号帧的第i个线性预测系数;当该帧为第一帧时,ai pre和bi pre为一预设参数;
步骤304:通过方差度量方式,计算近端信号帧和远端信号帧特征曲线的相似度,采用如下公式计算曲线的相似度,
其中j取值为1~p;
步骤305:将相似度D与预设阈值T进行比较;如果D≤T,则认为两个特征曲线相似,即当前为单讲状态(近端语音信号帧仅为回声),否则该为双讲状态。
其中T为判决门限,大于0小于1,T的取值取决于实际系统扬声器非线性失真的程度,具体值的选取在仿真调试阶段确定,默认取T=0.05。
通过以上实施例可以看出,本发明实施例通过接收到的近端语音信号帧和远端语音信号帧的特征参数曲线来区分是单讲状态还是双讲状态。这是由于人在发声时,由声门向上开始的喉腔、咽腔和口腔组成的声道是一个共振腔,每个人发出的语音信号都包含了自己独有的声道共振特性。通过采集声道的特征参数,可以获得特征参数曲线,并通过远端语音信号帧与近端语音信号帧的特征参数曲线相似度来判断是单讲状态还是双讲状态。不依赖于远端信号的和回声的能量水平。且本发明实施例解决了由于信号失真带来双端通话检测鲁棒性较差的问题。在硬件(例如手机扬声器、麦克风等)对信号的失真的情况下,本发明实施例依然能较准确的检测双讲情况,优于传统的检测方法。且发明方法的检测精度不依赖于远端信号的和回声的能量水平,优于传统的基于能量的检测方法。同时本发明实施例可以通过简单的算法获取特征参数,并根据特征参数获得特征曲线。这样不会过多占用系统内存。为了更好解决失真问题,还可以在获得特征曲线之前先对系统参数进行平滑处理。在获得特征曲线后,可以通过远端语音信号帧与近端语音信号帧的特征参数曲线相似度来判断是单讲状态还是双讲状态。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。