一种多方语音通话的智能混音方法及装置
技术领域
本发明涉及多媒体技术领域,特别涉及一种多方语音通话的智能混音方法及装置。
背景技术
随着长途通讯需求的不断增长,基于语音包交换的VOIP(Voice over InternetProtocol,网络电话)技术以其低成本、易扩充及优良的通话质量越来越受到用户的青睐,而在此基础之上的多方语音通话业务应用也越来越广泛。多方语音通话需要将任何一方的声音都可以传送到任何其它一方,任何一方都可以同时听到多个其它通话方的声音,因而就需要对各方语音数据进行混音处理。
目前混音处理是混音服务器接收各与会方终端发送的语音数据,将各方会话的所有语音数据进行混音处理,并在混音处理之后在混音数据中分别减去每个与会方的语音数据,再将减去每个与会方的语音数据发送给对应的与会方终端。
发明人发现现有技术至少存在以下问题:
当参与混音处理的与会方较多时,由于每个与会方的环境中都存在底噪,导致即使各个与会方都不发言时,最终混音处理后的混音数据会听到“嗡嗡”的底噪干扰;另外由于参与会话方较多的缘故,因衰减导致说话的声音会很小,听众较难辨识发言内容和发言者的身份。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种多方语音通话的智能混音方法及装置。所述技术方案如下:
一方面,提供了一种多方语音通话的智能混音方法,所述方法包括:
在进行语音通话过程中,获取除本端外各活跃语音通道的当前帧数据;
获取所述各活跃语音通道的当前帧数据的语音活性检测结果以及所述各活跃语音通道的短时平均能量;
根据所述各活跃语音通道的当前帧数据的语音活性检测结果、所述各活跃语音通道的短时平均能量、有效语音的语音通道数量以及所述各活跃语音通道对应的选通标识,选取进行混音处理的语音通道;所述选通标识为每一个活跃语音通道在上一次进行语音通道选择时记录的选择结果;
对所述选取到的语音通道的当前帧数据进行叠加混音处理,并输出所述叠加混音后的混音数据。
可选的,所述获取除本端外各活跃语音通道的当前帧数据,包括:
获取除本端外各活跃语音通道的语音数据流,并对所述各活跃语音通道的语音数据流进行分帧处理,得到所述各活跃语音通道的语音数据流中的当前帧数据。
可选的,所述获取所述各活跃语音通道的当前帧数据的语音活性检测结果以及所述各活跃语音通道的短时平均能量,包括:
对所述各活跃语音通道的当前帧数据进行语音活性检测,得到所述各活跃语音通道的当前帧数据的语音活性检测结果;
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则计算该活跃语音通道的当前帧数据的短时能量,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量;
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道的当前帧数据的短时能量置为零,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量。
可选的,所述获取所述各活跃语音通道的当前帧数据的语音活性检测结果以及所述各活跃语音通道的短时平均能量,包括:
接收所述各活跃语音通道发送的针对当前帧数据的附加信息,并从所述附加信息中获取所述各活跃语音通道的当前帧数据的语音活性检测结果以及所述各活跃语音通道的短时平均能量。
可选的,所述根据所述各活跃语音通道的当前帧数据的语音活性检测结果、所述各活跃语音通道的短时平均能量、有效语音的语音通道数量以及所述各活跃语音通道对应的选通标识,选取进行混音处理的语音通道,包括:
根据有效语音的语音通道数量,选取进行混音处理的最大语音通道数量;
根据所述各活跃语音通道的当前帧数据的语音活性检测结果,调整所述各活跃语音通道对应的选通标识;
根据调整后的选通标识为第一标识的语音通道数量、所述进行混音处理的最大语音通道数量以及所述各活跃语音通道的短时平均能量,选取进行混音处理的语音通道。
可选的,所述根据所述各活跃语音通道的当前帧数据的语音活性检测结果调整所述各活跃语音通道对应的选通标识,包括:
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则保持该活跃语音通道对应的选通标识不进行调整;
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道对应的选通标识设置为第二标识。
可选的,所述根据调整后的选通标识为第一标识的语音通道数量、所述进行混音处理的最大语音通道数量以及所述各活跃语音通道的短时平均能量,选取进行混音处理的语音通道,包括:
如果调整后的选通标识为第一标识的语音通道数量大于所述进行混音处理的最大语音通道数量,则将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道。
可选的,所述将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道之后,所述方法还包括:
逐帧设置所述调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作;并且逐个将所述调整后的选通标识为第一标识的语音通道对应的选通标识调整为第二标识;
直至所述调整后的选通标识为第一标识的语音通道数量等于所述进行混音处理的最大语音通道数量为止。
可选的,所述根据调整后的选通标识为第一标识的语音通道数量、所述进行混音处理的最大语音通道数量以及所述各活跃语音通道的短时平均能量,选取进行混音处理的语音通道,包括:
如果调整后的选通标识为第一标识的语音通道数量小于或等于所述进行混音处理的最大语音通道数量,则判断是否满足第一预设条件以及判断是否满足第二预设条件;
如果所述第一预设条件和所述第二预设条件都未被满足,则将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道。
可选的,所述判断是否满足第一预设条件以及判断是否满足第二预设条件之后,所述方法还包括:
如果所述第一预设条件或所述第二预设条件之中至少满足一个,则判断所述调整后的选通标识为第一标识的语音通道数量是否等于所述进行混音处理的最大语音通道数量;
如果所述调整后的选通标识为第一标识的语音通道数量等于所述进行混音处理的最大语音通道数量,则将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道。
可选的,所述将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道之后,所述方法还包括:
逐帧设置所述调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作,并且逐个将所述调整后的选通标识为第一标识的语音通道对应的选通标识调整为第二标识;
逐帧设置所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道进行单调上升窗的平滑加窗操作,并且逐个将所述调整后的选通标识为第二标识的语音通道对应的选通标识调整为第一标识;
直至所述调整后的选通标识为第一标识的语音通道中最小短时平均能量和所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量不满足所述第一预设条件为止。
可选的,所述判断所述调整后的选通标识为第一标识的语音通道数量是否等于所述进行混音处理的最大语音通道数量之后,所述方法还包括:
如果所述调整后的选通标识为第一标识的语音通道数量小于所述进行混音处理的最大语音通道数量,则将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道。
可选的,所述将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道之后,所述方法还包括:
逐帧设置所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道进行单调上升窗的平滑加窗操作,并且逐个将所述调整后的选通标识为第二标识的语音通道对应的选通标识调整为第一标识;
直至所述调整后的选通标识为第一标识的语音通道数量等于所述进行混音处理的最大语音通道数量为止。
另一方面,提供了一种多方语音通话的智能混音装置,所述装置包括:
第一获取模块,用于在进行语音通话过程中,获取除本端外各活跃语音通道的当前帧数据;
第二获取模块,用于获取所述各活跃语音通道的当前帧数据的语音活性检测结果以及所述各活跃语音通道的短时平均能量;
确定模块,用于根据所述各活跃语音通道的当前帧数据的语音活性检测结果、所述各活跃语音通道的短时平均能量、有效语音的语音通道数量以及所述各活跃语音通道对应的选通标识,选取进行混音处理的语音通道;所述选通标识为每一个活跃语音通道在上一次进行语音通道选择时记录的选择结果;
混音模块,用于对所述选取到的语音通道的当前帧数据进行叠加混音处理,并输出所述叠加混音后的混音数据。
可选的,所述第一获取模块用于:
获取除本端外各活跃语音通道的语音数据流,并对所述各活跃语音通道的语音数据流进行分帧处理,得到所述各活跃语音通道的语音数据流中的当前帧数据。
可选的,所述第二获取模块,包括:
检测单元,用于对所述各活跃语音通道的当前帧数据进行语音活性检测,得到所述各活跃语音通道的当前帧数据的语音活性检测结果;
第一计算单元,用于如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则计算该活跃语音通道的当前帧数据的短时能量,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量;
第二计算单元,用于如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道的当前帧数据的短时能量置为零,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量。
可选的,所述第二获取模块,包括:
获取单元,用于接收所述各活跃语音通道发送的针对当前帧数据的附加信息,并从所述附加信息中获取所述各活跃语音通道的当前帧数据的语音活性检测结果以及所述各活跃语音通道的短时平均能量。
可选的,所述确定模块,包括:
选取单元,用于根据有效语音的语音通道数量,选取进行混音处理的最大语音通道数量;
调整单元,用于根据所述各活跃语音通道的当前帧数据的语音活性检测结果,调整所述各活跃语音通道对应的选通标识;
确定单元,用于根据调整后的选通标识为第一标识的语音通道数量、所述进行混音处理的最大语音通道数量以及所述各活跃语音通道的短时平均能量,选取进行混音处理的语音通道。
可选的,所述调整单元,包括:
第一调整子单元,用于如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则保持该活跃语音通道对应的选通标识不进行调整;
第二调整子单元,用于如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道对应的选通标识设置为第二标识。
可选的,所述确定单元,包括:
第一确定子单元,用于如果调整后的选通标识为第一标识的语音通道数量大于所述进行混音处理的最大语音通道数量,则将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道。
可选的,所述确定模块,还包括:
第一加窗单元,用于逐帧设置所述调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作;并且逐个将所述调整后的选通标识为第一标识的语音通道对应的选通标识调整为第二标识;
直至所述调整后的选通标识为第一标识的语音通道数量等于所述进行混音处理的最大语音通道数量为止。
可选的,所述确定单元,包括:
第一判断子单元,用于如果调整后的选通标识为第一标识的语音通道数量小于或等于所述进行混音处理的最大语音通道数量,则判断是否满足第一预设条件以及判断是否满足第二预设条件;
第二确定子单元,用于如果所述第一预设条件和所述第二预设条件都未被满足,则将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道。
可选的,所述确定单元,还包括:
第二判断子单元,用于如果所述第一预设条件或所述第二预设条件之中至少满足一个,则判断所述调整后的选通标识为第一标识的语音通道数量是否等于所述进行混音处理的最大语音通道数量;
第三确定子单元,用于如果所述调整后的选通标识为第一标识的语音通道数量等于所述进行混音处理的最大语音通道数量,则将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道。
可选的,所述确定模块,包括:
第二加窗单元,用于逐帧设置所述调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作,并且逐个将所述调整后的选通标识为第一标识的语音通道对应的选通标识调整为第二标识;
第三加窗单元,用于逐帧设置所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道进行单调上升窗的平滑加窗操作,并且逐个将所述调整后的选通标识为第二标识的语音通道对应的选通标识调整为第一标识;
直至所述调整后的选通标识为第一标识的语音通道中最小短时平均能量和所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量不满足所述第一预设条件为止。
可选的,所述确定单元,还包括:
第四确定子单元,用于如果所述调整后的选通标识为第一标识的语音通道数量小于所述进行混音处理的最大语音通道数量,则将所述调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道。
可选的,所述确定模块,还包括:
第四加窗单元,用于逐帧设置所述调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道进行单调上升窗的平滑加窗操作,并且逐个将所述调整后的选通标识为第二标识的语音通道对应的选通标识调整为第一标识;
直至所述调整后的选通标识为第一标识的语音通道数量等于所述进行混音处理的最大语音通道数量为止。
本发明实施例提供的技术方案带来的有益效果是:
根据除本端外各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、当前活跃语音通道的数量以及各活跃语音通道对应的选通标识,对各活跃语音通道的当前帧数据进行选取,并对选取到的语音通道中的当前帧数据进行混音处理。上述对于活跃语音通道的选取方式将无效语音通道去除,仅保留有效语音通道并对选取到的语音通道中的语音数据进行混音处理,降低了多方语音通话中产生噪声,提高了多方语音通话中声音的清晰度,提高了多方语音通话的执行效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的多方语音通话的智能混音方法流程图;
图2是本发明实施例一提供的多方语音通话的智能混音方法中智能混音处理总架构的结构示意图;
图3是本发明实施例二提供的多方语音通话的智能混音方法流程图;
图4是本发明实施例三提供的多方语音通话的智能混音方法流程图;
图5是本发明实施例四提供的多方语音通话的智能混音方法流程图;
图6是本发明实施例五提供的多方语音通话的智能混音方法流程图;
图7是本发明实施例六提供的多方语音通话的智能混音装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例提供了一种多方语音通话的智能混音方法,参见图1。
其中,该方法流程包括:
101:在进行语音通话过程中,获取除本端外各活跃语音通道的当前帧数据;
102:获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量;
103:根据各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、有效语音的语音通道数量以及各活跃语音通道对应的选通标识,选取进行混音处理的语音通道;选通标识为每一个活跃语音通道在上一次进行语音通道选择时记录的选择结果;
104:对选取到的语音通道的当前帧数据进行叠加混音处理,并输出叠加混音后的混音数据。
需要说明的是,本发明实施例适用于多方音视频会议的环境,通过智能选通机制,动态的选择有效语音数据通道,并对选取到的语音通道的当前帧数据根据具体情况进行加窗平滑,再把平滑后的各语音通道的当前帧数据进行叠加处理,得到混音后的混音数据。如图2,该图示出了本发明实施例中智能混音处理总架构的结构示意图。
在多方音视频会议的语音数据流201到达各客户端。在各个客户端中,对每个语音通道的语音数据流输入进行分帧得到每个语音通道的当前帧数据,通过VAD(VoiceActivity Detector,语音活性检测)检测模块202对每个语音通道的当前帧数据进行声音检测,把每个语音通道的当前帧数据区分为有效语音(标志为1)或者噪声和静音(标志为0)。
能量计算模块203根据VAD检测模块202得到的检测结果,进行短时平均能量的计算,作为每通道数据当前帧的短时平均能量,作为后续智能选通语音通道的重要参数。
智能选通模块204,包括了动态限定最大选通通道数模块2043,智能选通机制模块2041和通道平滑切换模块2042三部分组成。智能选通模块根据VAD检测模块202的检测结果和短时平均能量以及动态限定的最大混音通道数,来智能选取需要进行混音的语音通道,并对选择到的语音通道的当前帧数据进行平滑处理,以确保不会因为通道切换产生切换噪声或者其它杂音噪音等。
混音模块205,针对选择到的语音通道的当前帧数据进行叠加混音。为避免混音的溢出,对各选通通道语音信号进行衰减,再进行叠加混音输出。
进一步的,其中本发明实施例中的执行过程可以由服务器接收各参与语音通话的终端发送的语音数据,并将除每一个参与语音通话的终端之外的语音数据发给每一个参与语音通话的终端。其中,每一个参与语音通话的终端对应一个语音通道,在终端发送语音数据时则表示该终端属于活跃语音通道。
本发明实施例根据除本端外各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、当前活跃语音通道的数量以及各活跃语音通道对应的选通标识,对各活跃语音通道的当前帧数据进行选取,并对选取到的语音通道中的当前帧数据进行混音处理。上述对于活跃语音通道的选取方式将无效语音通道去除,仅保留有效语音通道并对选取到的语音通道中的语音数据进行混音处理,降低了多方语音通话中产生噪声,提高了多方语音通话中声音的清晰度,提高了多方语音通话的执行效率。
实施例二
本发明实施例提供了一种多方语音通话的智能混音方法,参见图3。
301:在进行语音通话过程中,获取除本端外各活跃语音通道的当前帧数据。
在接收到各活跃语音通道发送的语音数据时,针对各活跃语音通道的每一帧数据开始执行本步骤。对各活跃语音通道发送的语音数据进行分帧处理,获取到当前帧数据。
其中,步骤301可以通过以下过程进行实现:
获取除本端外各活跃语音通道的语音数据流,并对各活跃语音通道的语音数据流进行分帧处理,得到各活跃语音通道的语音数据流中的当前帧数据。
302:获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量。
其中,步骤302中包括两种获取方式:
第一种方式:
对各活跃语音通道的当前帧数据进行语音活性检测,得到各活跃语音通道的当前帧数据的语音活性检测结果;
其中,语音活性检测把每一帧数据区分为有效语音(标志为1)或者无效语音,即噪声或静音(标志为0)。
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则计算该活跃语音通道的当前帧数据的短时能量,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量;
假设第n通道语音数据在第k帧数据的信号表示为Xn(k),该帧包含M个样点,具体表示该通道第k帧数据的第p个样点为Xn(k)(p),p=0~M-1。
计算当前帧数据的短时能量CurEner(k),其值为当前帧各个样点的平方和,公式为:
计算短时平均能量:SmEnern(k)=SmEnern(k-1)*(1-α)+CurEnern(k)*α;
此处α为一个小于1的正数,且值范围一般在[0.7,0.9]之间。
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道的当前帧数据的短时能量置为零,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量。
语音活性检测结果为无效语音时,置当前帧数据的短时能量CurEner(k)为0。
计算短时平均能量:
SmEnern(k)=SmEnern(k-1)*(1-α)+CurEnern(k)*α
此处α为一个小于1的正数,且值范围一般在[0.7,0.9]之间。
第二种方式:
接收各活跃语音通道发送的针对当前帧数据的附加信息,并从附加信息中获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量。
语音活性检测结果和短时平均能量预先在各活跃语音通道对应的终端发送语音数据前进行检测和计算,并与语音数据一起发送给其他各终端。
其中,短时平均能量反映了语音能量随着时间缓慢变化的规律。它的主要用途有:1、可以区分清音段和浊音段;2、可以区分声母与韵母的分界、无声和有声的分界、连字的分界等。3、作为一种超音段信息,用于语音识别中。
303:根据各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、有效语音的语音通道数量以及各活跃语音通道对应的选通标识,选取进行混音处理的语音通道;选通标识为每一个活跃语音通道在上一次进行语音通道选择时记录的选择结果。
由于人耳的听力限制,同一时刻人耳能够感受到的说话人声音大致为3~5人,再过多的声音只会被感受为噪声。因此,在进行语音通话过程中,某个接收者的终端同时收到多方参与者的声音的概率非常大,例如:进行语音通话过程中各参与者没有关闭麦克风,使得不断有底噪等噪声进入麦克风;此种情况下若不控制进行混音处理的活跃选通的数量,而仍然采取对所有通道直接叠加混音的方法,则会使整个多方会议的声音因为众多底噪和其它噪声的叠加,而一直存在嗡嗡等噪声的状况。
在每次对活跃语音通道进行选择之后,被选中之后进行混音处理并播放的语音通道的选通标识会被设置为第一标识;之前被设置为进行混音处理的其它语音通道的选通标识则会由第一标识设置为第二标识,例如:被删除的语音通道或者被替换掉的语音通道。
因此对于选择通道的过程,步骤303可以通过步骤3031-步骤3033进行实现:
3031:根据有效语音的语音通道数量,选取进行混音处理的最大语音通道数量。
预先设定有效语音的语音通道数量与进行混音处理的最大语音通道数量的对应关系。例如:当有效语音的语音通道数量大于20个通道时,则对应设定进行混音处理的最大语音通道数量为4个;
当有效语音的语音通道数量小于或等于20个通道时,则对应设定进行混音处理的最大语音通道数量为3个。
3032:根据各活跃语音通道的当前帧数据的语音活性检测结果,调整各活跃语音通道对应的选通标识。
由于前一帧数据中语音通道对应选通标识被设置为第一标识的语音通道,在当前帧数据中有可能其语音活性检测结果为无效语音,因此需要在当前帧根据语音活性检测结果重新调整各活跃语音通道的选通标识,以重新进行语音通道的选择。
其中,调整的方式可以为以下两种方式:
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则保持该活跃语音通道对应的选通标识不进行调整;
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道对应的选通标识设置为第二标识。
对于无效语音的语音通道,不论其前一帧中设置的选通标识为第一标识或者第二标识,都置当前选通标识为第二标识。
进一步的,调整之后对获取选通标识为第一标识的语音通道中短时平均能量的最小值,记为CurMinEner以及该语音通道对应的通道号记为CurMinID;
获取选通标识为第二标识且为有效语音的语音通道中的短时平均能量最大值记为OtherMaxEner及该语音通道对应的通道号记为OtherMaxID。
3033:根据调整后的选通标识为第一标识的语音通道数量、进行混音处理的最大语音通道数量以及各活跃语音通道的短时平均能量,选取进行混音处理的语音通道。
其中,调整后的选通标识为第一标识的语音通道数量用CurTrueFlgCnt来表示,进行混音处理的最大语音通道数量用MaxMixerNum来表示。
步骤3033可以由以下步骤实现:
30331:如果调整后的选通标识为第一标识的语音通道数量大于进行混音处理的最大语音通道数量,则将调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道。
此时,CurTrueFlgCnt>MaxMixerNum。其中,记录确定为进行混音处理的语音通道的通道号,并在步骤204中进行混音处理时,根据记录的通道号选取语音通道进行混音处理。
30332:逐帧设置调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作;并且逐个将调整后的选通标识为第一标识的语音通道对应的选通标识调整为第二标识。
调整后的选通标识为第一标识的语音通道数量大于进行混音处理的最大语音通道数量,则表示参与混音的语音通道数过多,需要删除多余的语音通道。其中,选取需要删除的语音通道的方式为:在调整后的选通标识为第一标识的语音通道中选取短时平均能量最小的语音通道作为需要删除的语音通道,即删除多余通道的语音数据的方法是逐帧删除通道号为CurMinID的通道直至CurTrueFlgCnt等于MaxMixerNum为止。
该需要删除的语音通道中当前帧数据也需要在当前进行混音处理,但是作为需要删除的语音通道,则可以给该语音通道中的当前帧数据进行单调下降窗的平滑加窗操作,其中该窗可为三角窗或者汉宁窗或者汉明窗等窗函数的单调下降部分,以实现对于该需要删除的语音通道在混音处理之后的声音淡出效果,避免语音的突然失去,而产生声音的断层感。
如果需要删除的语音通道大于一个语音通道的数量,采用逐帧删除语音通道的语音数据,而非一次性在对被选取到的语音通道的当前帧数据处理中删除多个多余语音通道的语音数据。
其中,对于被选取到的语音通道的当前帧数据进行混音处理时,则首先对选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作,而在对下一帧进行混音处理时,仍选取选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作。
直至调整后的选通标识为第一标识的语音通道数量等于进行混音处理的最大语音通道数量为止。
304:对选取到的语音通道的当前帧数据进行叠加混音处理,并输出叠加混音后的混音数据。
本发明实施例根据除本端外各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、当前活跃语音通道的数量以及各活跃语音通道对应的选通标识,对各活跃语音通道的当前帧数据进行选取,并对选取到的语音通道中的当前帧数据进行混音处理。上述对于活跃语音通道的选取方式将无效语音通道去除,仅保留有效语音通道并对选取到的语音通道中的语音数据进行混音处理,降低了多方语音通话中产生噪声,提高了多方语音通话中声音的清晰度,提高了多方语音通话的执行效率。
实施例三
本发明实施例提供了一种多方语音通话的智能混音方法,参见图4。
401:在进行语音通话过程中,获取除本端外各活跃语音通道的当前帧数据。
在接收到各活跃语音通道发送的语音数据时,针对各活跃语音通道的每一帧数据开始执行本步骤。对各活跃语音通道发送的语音数据进行分帧处理,获取到当前帧数据。
其中,步骤401可以通过以下过程进行实现:
获取除本端外各活跃语音通道的语音数据流,并对各活跃语音通道的语音数据流进行分帧处理,得到各活跃语音通道的语音数据流中的当前帧数据。
402:获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量;
其中,步骤402中包括两种获取方式:
第一种方式:
对各活跃语音通道的当前帧数据进行语音活性检测,得到各活跃语音通道的当前帧数据的语音活性检测结果;
其中,语音活性检测把每一帧数据区分为有效语音(标志为1)或者无效语音,即噪声或静音(标志为0)。
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则计算该活跃语音通道的当前帧数据的短时能量,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量;
假设第n通道语音数据在第k帧数据的信号表示为Xn(k),该帧包含M个样点,具体表示该通道第k帧数据的第p个样点为Xn(k)(p),p=0~M-1。
计算当前帧数据的短时能量CurEner(k),其值为当前帧各个样点的平方和,公式为:
计算短时平均能量:SmEnern(k)=SmEnern(k-1)*(1-α)+CurEnern(k)*α;
此处α为一个小于1的正数,且值范围一般在[0.7,0.9]之间。
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道的当前帧数据的短时能量置为零,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量。
语音活性检测结果为无效语音时,置当前帧数据的短时能量CurEnern(n)为0。
计算短时平均能量:
SmEnern(k)=SmEnern(k-1)*(1-α)+CurEnern(k)*α;
此处α为一个小于1的正数,且值范围一般在[0.7,0.9]之间。
第二种方式:
接收各活跃语音通道发送的针对当前帧数据的附加信息,并从附加信息中获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量。
语音活性检测结果和短时平均能量预先在各活跃语音通道对应的终端发送语音数据前进行检测和计算,并与语音数据一起发送给其他各终端。
其中,短时平均能量反映了语音能量随着时间缓慢变化的规律。它的主要用途有:1、可以区分清音段和浊音段;2、可以区分声母与韵母的分界、无声和有声的分界、连字的分界等。3、作为一种超音段信息,用于语音识别中。
403:根据各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、有效语音的语音通道数量以及各活跃语音通道对应的选通标识,选取进行混音处理的语音通道;选通标识为每一个活跃语音通道在上一次进行语音通道选择时记录的选择结果。
在每次对活跃语音通道进行选择之后,被选中之后进行混音处理并播放的语音通道的选通标识会被设置为第一标识;之前被设置为进行混音处理的其它语音通道的选通标识则会由第一标识设置为第二标识,例如:被删除的语音通道或者被替换掉的语音通道。
因此对于选择通道的过程,步骤403可以通过步骤4031-步骤4033进行实现:
4031:根据有效语音的语音通道数量,选取进行混音处理的最大语音通道数量;
预先设定有效语音的语音通道数量与进行混音处理的最大语音通道数量的对应关系。例如:当有效语音的语音通道数量大于20个通道时,则对应设定进行混音处理的最大语音通道数量为4个;
当有效语音的语音通道数量小于或等于20个通道时,则对应设定进行混音处理的最大语音通道数量为3个。
4032:根据各活跃语音通道的当前帧数据的语音活性检测结果,调整各活跃语音通道对应的选通标识。
由于前一帧中语音通道对应选通标识被设置为第一标识的语音通道,在当前帧数据中有可能其语音活性检测结果为无效语音,因此需要在当前帧根据语音活性检测结果重新调整各活跃语音通道的选通标识,以重新进行语音通道的选择。
其中,调整的方式可以为以下两种方式:
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则保持该活跃语音通道对应的选通标识不进行调整;
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道对应的选通标识设置为第二标识。
对于无效语音的语音通道,不论其前一帧中设置的选通标识为第一标识或者第二标识,都置当前选通标识为第二标识。
进一步的,调整之后对获取选通标识为第一标识的语音通道中短时平均能量的最小值,记为CurMinEner以及该语音通道对应的通道号记为CurMinID;
获取选通标识为第二标识且为有效语音的语音通道中的短时平均能量的最大值记为OtherMaxEner及该语音通道对应的通道号记为OtherMaxID。
4033:根据调整后的选通标识为第一标识的语音通道数量、进行混音处理的最大语音通道数量以及各活跃语音通道的短时平均能量,选取进行混音处理的语音通道。
其中,调整后的选通标识为第一标识的语音通道数量用CurTrueFlgCnt来表示,进行混音处理的最大语音通道数量用MaxMixerNum来表示。
步骤4033可以由以下步骤实现:
40331:如果调整后的选通标识为第一标识的语音通道数量小于或等于进行混音处理的最大语音通道数量,则判断是否满足第一预设条件以及判断是否满足第二预设条件。
此时,CurTrueFlgCnt<MaxMixerNum或者CurTrueFlgCnt=MaxMixerNum。
其中,第一预设条件可以为:选取选通标识为第一标识的语音通道中短时平均能量最小的语音通道,该语音通道的短时平均能量为CurMinEner,选取选通标识为第二标识且为有效语音的语音通道中短时平均能量最大的语音通道,该语音通道的短时平均能量为OtherMaxEner。
如果OtherMaxEner>β*CurMinEner,则表示满足第一预设条件。其中,调整系数β的值大于1,一般的选取范围在(1,1.5]之间。使用调整系数β的目的是当两个语音通道的语音信号差不多强弱时,仍然保持语音话语的连续性,避免在两个通道之间进行频繁切换,而导致的语音辨识不清的问题。
第二预设条件可以为:如果选通标识为第一标识的语音通道数量小于进行混音处理的最大语音通道数量,则表示满足第二预设条件。
40332:如果第一预设条件和第二预设条件都未被满足,则将调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道。
在本发明实施例中,直接将选通标识为第一标识的语音通道确定为进行混音处理的语音通道,即在当前帧数据的混音处理过程中选取的语音通道与前一帧数据的混音处理所选取的语音通道相同。
404:对选取到的语音通道的当前帧数据进行叠加混音处理,并输出叠加混音后的混音数据。
本发明实施例根据除本端外各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、当前活跃语音通道的数量以及各活跃语音通道对应的选通标识,对各活跃语音通道的当前帧数据进行选取,并对选取到的语音通道中的当前帧数据进行混音处理。上述对于活跃语音通道的选取方式将无效语音通道去除,仅保留有效语音通道并对选取到的语音通道中的语音数据进行混音处理,降低了多方语音通话中产生噪声,提高了多方语音通话中声音的清晰度,提高了多方语音通话的执行效率。
实施例四
本发明实施例提供了一种多方语音通话的智能混音方法,参见图5。
501:在进行语音通话过程中,获取除本端外各活跃语音通道的当前帧数据。
在接收到各活跃语音通道发送的语音数据时,针对各活跃语音通道的每一帧数据开始执行本步骤。对各活跃语音通道发送的语音数据进行分帧处理,获取到当前帧数据。
其中,步骤501可以通过以下过程进行实现:
获取除本端外各活跃语音通道的语音数据流,并对各活跃语音通道的语音数据流进行分帧处理,得到各活跃语音通道的语音数据流中的当前帧数据。
502:获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量;
其中,步骤502中包括两种获取方式:
第一种方式:
对各活跃语音通道的当前帧数据进行语音活性检测,得到各活跃语音通道的当前帧数据的语音活性检测结果;
其中,语音活性检测把每一帧数据区分为有效语音(标志为1)或者无效语音,即噪声或静音(标志为0)。
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则计算该活跃语音通道的当前帧数据的短时能量,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量;
假设第n通道语音数据在第k帧数据的信号表示为Xn(k),该帧包含M个样点,具体表示该通道第k帧数据的第p个样点为Xn(k)(p),p=0~M-1。
计算当前帧数据的短时能量CurEner(k),其值为当前帧各个样点的平方和,公式为:
计算短时平均能量:SmEnern(k)=SmEnern(k-1)*(1-α)+CurEnern(k)*α;
此处α为一个小于1的正数,且值范围一般在[0.7,0.9]之间。
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道的当前帧数据的短时能量置为零,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量。
语音活性检测结果为无效语音时,置当前帧数据的短时能量CurEner(k)为0。
计算短时平均能量:
SmEnern(k)=SmEnern(k-1)*(1-α)+CurEnern(k)*α;
此处α为一个小于1的正数,且值范围一般在[0.7,0.9]之间。
第二种方式:
接收各活跃语音通道发送的针对当前帧数据的附加信息,并从附加信息中获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量。
语音活性检测结果和短时平均能量预先在各活跃语音通道对应的终端发送语音数据前进行检测和计算,并与语音数据一起发送给其他各终端。
其中,短时平均能量反映了语音能量随着时间缓慢变化的规律。它的主要用途有:1、可以区分清音段和浊音段;2、可以区分声母与韵母的分界、无声和有声的分界、连字的分界等。3、作为一种超音段信息,用于语音识别中。
503:根据各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、有效语音的语音通道数量以及各活跃语音通道对应的选通标识,选取进行混音处理的语音通道;选通标识为每一个活跃语音通道在上一次进行语音通道选择时记录的选择结果。
在每次对活跃语音通道进行选择之后,被选中之后进行混音处理并播放的语音通道的选通标识会被设置为第一标识;之前被设置为进行混音处理的其它语音通道的选通标识则会由第一标识设置为第二标识,例如:被删除的语音通道或者被替换掉的语音通道。
因此对于选择通道的过程,步骤503可以通过步骤5031-步骤5033进行实现:
5031:根据有效语音的语音通道数量,选取进行混音处理的最大语音通道数量;
预先设定有效语音的语音通道数量与进行混音处理的最大语音通道数量的对应关系。例如:当有效语音的语音通道数量大于20个通道时,则对应设定进行混音处理的最大语音通道数量为4个;
当有效语音的语音通道数量小于或等于20个通道时,则对应设定进行混音处理的最大语音通道数量为3个。
5032:根据各活跃语音通道的当前帧数据的语音活性检测结果,调整各活跃语音通道对应的选通标识。
由于前一帧中语音通道对应选通标识被设置为第一标识的语音通道,在当前帧数据中有可能其语音活性检测结果为无效语音,因此需要在当前帧根据语音活性检测结果重新调整各活跃语音通道的选通标识,以重新进行语音通道的选择。
其中,调整的方式可以为以下两种方式:
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则保持该活跃语音通道对应的选通标识不进行调整;
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道对应的选通标识设置为第二标识。
对于无效语音的语音通道,不论其前一帧中设置的选通标识为第一标识或者第二标识,都置当前选通标识为第二标识。
进一步的,调整之后对获取选通标识为第一标识的语音通道中短时平均能量的最小值,记为CurMinEner以及该语音通道对应的通道号记为CurMinID;
获取选通标识为第二标识且为有效语音的语音通道中短时平均能量的最大值记为OtherMaxEner及该语音通道对应的通道号记为OtherMaxID。
5033:根据调整后的选通标识为第一标识的语音通道数量、进行混音处理的最大语音通道数量以及各活跃语音通道的短时平均能量,选取进行混音处理的语音通道。
其中,调整后的选通标识为第一标识的语音通道数量用CurTrueFlgCnt来表示,进行混音处理的最大语音通道数量用MaxMixerNum来表示。
步骤5033可以由以下步骤执行:
50331:如果调整后的选通标识为第一标识的语音通道数量小于或等于进行混音处理的最大语音通道数量,则判断是否满足第一预设条件以及判断是否满足第二预设条件。
此时,CurTrueFlgCnt<MaxMixerNum或者CurTrueFlgCnt=MaxMixerNum。
其中,第一预设条件可以为:选取选通标识为第一标识的语音通道中短时平均能量最小的语音通道,该语音通道的短时平均能量为CurMinEner,选取选通标识为第二标识的语音通道中短时平均能量最大的语音通道,该语音通道的短时平均能量为OtherMaxEner。
如果OtherMaxEner>β*CurMinEner,则表示满足第一预设条件。其中,调整系数β的值大于1,一般的选取范围在(1,1.5]之间。使用调整系数β的目的是当两个语音通道的语音信号差不多强弱时,仍然保持语音话语的连续性,避免在两个通道之间进行频繁切换,而导致的语音辨识不清的问题。
第二预设条件可以为:如果选通标识为第一标识的语音通道数量小于进行混音处理的最大语音通道数量,则表示满足第二预设条件。
50332:如果第一预设条件或第二预设条件之中至少满足一个,则判断调整后的选通标识为第一标识的语音通道数量是否等于进行混音处理的最大语音通道数量。
50333:如果调整后的选通标识为第一标识的语音通道数量等于进行混音处理的最大语音通道数量,则将调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道。
此时,CurTrueFlgCnt=MaxMixerNum。其中,记录确定为进行混音处理的语音通道的通道号,并在步骤504中进行混音处理时,根据记录的通道号选取语音通道进行混音处理。
50334:逐帧设置调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作,并且逐个将调整后的选通标识为第一标识的语音通道对应的选通标识调整为第二标识。
50335:逐帧设置调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道进行单调上升窗的平滑加窗操作,并且逐个将调整后的选通标识为第二标识的语音通道对应的选通标识调整为第一标识。
直至调整后的选通标识为第一标识的语音通道中最小短时平均能量和调整后的选通标识为第二标识的语音通道中最大的短时平均能量不满足第一预设条件为止。
具体的,调整后的选通标识为第一标识的语音通道数量等于进行混音处理的最大语音通道数量,则表示参与混音的语音通道数需要进行语音通道的替换。其中,选取需要替换的语音通道的方式为:逐帧把通道号CurMinID替换成OtherMaxID,并将上述两个语音通道的当前帧数据分别进行加窗平滑,平滑后的叠加数据放入语音通道号OtherMaxID的缓冲区中。其中,对于语音通道号CurMinID,其窗函数为三角窗或者汉宁窗或者汉明窗等窗函数的单调下降部分;对于语音通道号为OtherMaxID,其窗函数为三角窗或者汉宁窗或者汉明窗等窗函数的单调上升部分。然后置通道号CurMinID的选通标识为第二标识,设置语音通道号OtherMaxID的选通标识为第一标识,最后再把平滑叠加的语音数据进行混音处理。
采用逐帧替换单个语音通道的语音数据,而非一次性替换多个语音通道的当前帧数据,同时对替换的语音通道中的当前帧数据分别进行单调上升窗和单调下降窗的平滑处理,目的是为了实现语音的淡入淡出效果,实现通道切换时,语音的自然平滑过渡,保证了语音的音质。
504:对选取到的语音通道的当前帧数据进行叠加混音处理,并输出叠加混音后的混音数据。
本发明实施例根据除本端外各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、当前活跃语音通道的数量以及各活跃语音通道对应的选通标识,对各活跃语音通道的当前帧数据进行选取,并对选取到的语音通道中的当前帧数据进行混音处理。上述对于活跃语音通道的选取方式将无效语音通道去除,仅保留有效语音通道并对选取到的语音通道中的语音数据进行混音处理,降低了多方语音通话中产生噪声,提高了多方语音通话中声音的清晰度,提高了多方语音通话的执行效率。
实施例五
本发明实施例提供了一种多方语音通话的智能混音方法,参见图6。
601:在进行语音通话过程中,获取除本端外各活跃语音通道的当前帧数据。
在接收到各活跃语音通道发送的语音数据时,针对各活跃语音通道的每一帧数据开始执行本步骤。对各活跃语音通道发送的语音数据进行分帧处理,获取到当前帧数据。
其中,步骤601可以通过以下过程进行实现:
获取除本端外各活跃语音通道的语音数据流,并对各活跃语音通道的语音数据流进行分帧处理,得到各活跃语音通道的语音数据流中的当前帧数据。
602:获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量;
其中,步骤602中包括两种获取方式:
第一种方式:
对各活跃语音通道的当前帧数据进行语音活性检测,得到各活跃语音通道的当前帧数据的语音活性检测结果;
其中,语音活性检测把每一帧数据区分为有效语音(标志为1)或者无效语音,即噪声或静音(标志为0)。
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则计算该活跃语音通道的当前帧数据的短时能量,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量;
假设第n通道语音数据在第k帧数据的信号表示为Xn(k),该帧包含M个样点,具体表示该通道第k帧数据的第p个样点为Xn(k)(p),p=0~M-1。
计算当前帧数据的短时能量CurEner(k),其值为当前帧各个样点的平方和,公式为:
计算短时平均能量:SmEnern(k)=SmEnern(k-1)*(1-α)+CurEnern(k)*α;
此处α为一个小于1的正数,且值范围一般在[0.7,0.9]之间。
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道的当前帧数据的短时能量置为零,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量。
语音活性检测结果为无效语音时,置当前帧数据的短时能量CurEner(k)为0。
计算短时平均能量:
SmEnern(k)=SmEnern(k-1)*(1-α)+CurEnern(k)*α;
此处α为一个小于1的正数,且值范围一般在[0.7,0.9]之间。
第二种方式:
接收各活跃语音通道发送的针对当前帧数据的附加信息,并从附加信息中获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量。
语音活性检测结果和短时平均能量预先在各活跃语音通道对应的终端发送语音数据前进行检测和计算,并与语音数据一起发送给其他各终端。
其中,短时平均能量反映了语音能量随着时间缓慢变化的规律。它的主要用途有:1、可以区分清音段和浊音段;2、可以区分声母与韵母的分界、无声和有声的分界、连字的分界等。3、作为一种超音段信息,用于语音识别中。
603:根据各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、有效语音的语音通道数量以及各活跃语音通道对应的选通标识,选取进行混音处理的语音通道;选通标识为每一个活跃语音通道在上一次进行语音通道选择时记录的选择结果。
在每次对活跃语音通道进行选择之后,被选中之后进行混音处理并播放的语音通道的选通标识会被设置为第一标识;之前被设置为进行混音处理的其它语音通道的选通标识则会由第一标识设置为第二标识,例如:被删除的语音通道或者被替换掉的语音通道。
因此对于选择通道的过程,步骤603可以通过步骤6031-步骤6033进行实现:
6031:根据有效语音的语音通道数量,选取进行混音处理的最大语音通道数量;
预先设定有效语音的语音通道数量与进行混音处理的最大语音通道数量的对应关系。例如:当有效语音的语音通道数量大于20个通道时,则对应设定进行混音处理的最大语音通道数量为4个;
当有效语音的语音通道数量小于或等于20个通道时,则对应设定进行混音处理的最大语音通道数量为3个。
6032:根据各活跃语音通道的当前帧数据的语音活性检测结果,调整各活跃语音通道对应的选通标识。
由于前一帧中语音通道对应选通标识被设置为第一标识的语音通道,在当前帧数据中有可能其语音活性检测结果为无效语音,因此需要在当前帧根据语音活性检测结果重新调整各活跃语音通道的选通标识,以重新进行语音通道的选择。
其中,调整的方式可以为以下两种方式:
如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则保持该活跃语音通道对应的选通标识不进行调整;
如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道对应的选通标识设置为第二标识。
对于无效语音的语音通道,不论其前一帧中设置的选通标识为第一标识或者第二标识,都置当前选通标识为第二标识。
进一步的,调整之后对获取选通标识为第一标识的语音通道中短时平均能量的最小值,记为CurMinEner以及该语音通道对应的通道号记为CurMinID;
获取选通标识为第二标识且为有效语音的语音通道中短时平均能量的最大值记为OtherMaxEner及该语音通道对应的通道号记为OtherMaxID。
6033:根据调整后的选通标识为第一标识的语音通道数量、进行混音处理的最大语音通道数量以及各活跃语音通道的短时平均能量,选取进行混音处理的语音通道。
其中,调整后的选通标识为第一标识的语音通道数量用CurTrueFlgCnt来表示,进行混音处理的最大语音通道数量用MaxMixerNum来表示。
步骤6033可以由以下步骤执行:
60331:如果调整后的选通标识为第一标识的语音通道数量小于或等于进行混音处理的最大语音通道数量,则判断是否满足第一预设条件以及判断是否满足第二预设条件。
此时,CurTrueFlgCnt<MaxMixerNum或者CurTrueFlgCnt=MaxMixerNum。
其中,第一预设条件可以为:选取选通标识为第一标识的语音通道中短时平均能量最小的语音通道,该语音通道的短时平均能量为CurMinEner,选取选通标识为第二标识的语音通道中短时平均能量最大的语音通道,该语音通道的短时平均能量为OtherMaxEner。
如果OtherMaxEner>β*CurMinEner,则表示满足第一预设条件。其中,调整系数β的值大于1,一般的选取范围在(1,1.5]之间。使用调整系数β的目的是当两个语音通道的语音信号差不多强弱时,仍然保持语音话语的连续性,避免在两个通道之间进行频繁切换,而导致的语音辨识不清的问题。
第二预设条件可以为:如果选通标识为第一标识的语音通道数量小于进行混音处理的最大语音通道数量,则表示满足第二预设条件。
60332:如果第一预设条件或第二预设条件之中至少满足一个,则判断调整后的选通标识为第一标识的语音通道数量是否等于进行混音处理的最大语音通道数量。
60333:如果调整后的选通标识为第一标识的语音通道数量小于进行混音处理的最大语音通道数量,则将调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道。
此时,CurTrueFlgCnt<MaxMixerNum。其中,记录确定为进行混音处理的语音通道的通道号,并在步骤604中进行混音处理时,根据记录的通道号选取语音通道进行混音处理。
60334:逐帧设置调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道进行单调上升窗的平滑加窗操作,并且逐个将调整后的选通标识为第二标识的语音通道对应的选通标识调整为第一标识;
直至调整后的选通标识为第一标识的语音通道数量等于进行混音处理的最大语音通道数量为止。
具体的,调整后的选通标识为第一标识的语音通道数量小于进行混音处理的最大语音通道数量,则表示参与混音的语音通道数需要增加新的语音通道的语音数据。增加新的语音通道的语音数据的方法是逐帧增加语音通道号为OtherMaxID的通道直至CurTrueFlgCnt等于MaxMixerNum为止。并将增加的当前帧数据进行加窗平滑,该窗可为三角窗或者汉宁窗或者汉明窗等窗函数的单调上升部分,同时置该通道的选通标识为第一标识,然后再进行混音处理。
采用逐帧增加单个语音通道的语音数据,而非一次性增加多个语音通道的语音数据,同时对增加的当前帧数据进行单调上升窗的平滑处理,目的是为了实现语音的淡入效果,避免语音的突然增加,而产生语音的突发压迫感。
604:对选取到的语音通道的当前帧数据进行叠加混音处理,并输出叠加混音后的混音数据。
本发明实施例根据除本端外各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、当前活跃语音通道的数量以及各活跃语音通道对应的选通标识,对各活跃语音通道的当前帧数据进行选取,并对选取到的语音通道中的当前帧数据进行混音处理。上述对于活跃语音通道的选取方式将无效语音通道去除,仅保留有效语音通道并对选取到的语音通道中的语音数据进行混音处理,降低了多方语音通话中产生噪声,提高了多方语音通话中声音的清晰度,提高了多方语音通话的执行效率。
实施例六
本发明实施例提供了一种多方语音通话的智能混音装置,参见图7,该装置包括:
第一获取模块701,用于在进行语音通话过程中,获取除本端外各活跃语音通道的当前帧数据;
第二获取模块702,用于获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量;
确定模块703,用于根据各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、有效语音的语音通道数量以及各活跃语音通道对应的选通标识,选取进行混音处理的语音通道;选通标识为每一个活跃语音通道在上一次进行语音通道选择时记录的选择结果;
混音模块704,用于根据当前的语音通道选择结果,对选择到的语音通道的当前帧数据进行叠加混音处理,并输出叠加混音后的当前帧数据。
其中,第一获取模块701用于:
获取除本端外各活跃语音通道的语音数据流,并对各活跃语音通道的语音数据流进行分帧处理,得到各活跃语音通道的语音数据流中的当前帧数据。
其中,第二获取模块702,包括:
检测单元,用于对各活跃语音通道的当前帧数据进行语音活性检测,得到各活跃语音通道的当前帧数据的语音活性检测结果;
第一计算单元,用于如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则计算该活跃语音通道的当前帧数据的短时能量,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量;
第二计算单元,用于如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道的当前帧数据的短时能量置为零,并根据该活跃语音通道的当前帧数据的短时能量计算该活跃语音通道的短时平均能量。
其中,第二获取模块702,包括:
获取单元,用于接收各活跃语音通道发送的针对当前帧数据的附加信息,并从附加信息中获取各活跃语音通道的当前帧数据的语音活性检测结果以及各活跃语音通道的短时平均能量。
其中,确定模块703,包括:
选取单元,用于根据有效语音的语音通道数量,选取进行混音处理的最大语音通道数量;
调整单元,用于根据各活跃语音通道的当前帧数据的语音活性检测结果,调整各活跃语音通道对应的选通标识;
确定单元,用于根据调整后的选通标识为第一标识的语音通道数量、进行混音处理的最大语音通道数量以及各活跃语音通道的短时平均能量,选取进行混音处理的语音通道。
其中,调整单元,包括:
第一调整子单元,用于如果活跃语音通道的当前帧数据的语音活性检测结果为有效语音,则保持该活跃语音通道对应的选通标识不进行调整;
第二调整子单元,用于如果活跃语音通道的当前帧数据的语音活性检测结果为无效语音,则将该活跃语音通道对应的选通标识设置为第二标识。
其中,确定单元,包括:
第一确定子单元,用于如果调整后的选通标识为第一标识的语音通道数量大于进行混音处理的最大语音通道数量,则将调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道。
其中,确定模块703,还包括:
第一加窗单元,用于逐帧设置调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作;并且逐个将调整后的选通标识为第一标识的语音通道对应的选通标识调整为第二标识;
直至调整后的选通标识为第一标识的语音通道数量等于进行混音处理的最大语音通道数量为止。
其中,确定单元,包括:
第一判断子单元,用于如果调整后的选通标识为第一标识的语音通道数量小于或等于进行混音处理的最大语音通道数量,则判断是否满足第一预设条件以及判断是否满足第二预设条件;
第二确定子单元,用于如果第一预设条件和第二预设条件都未被满足,则将调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道。
其中,确定单元,还包括:
第二判断子单元,用于如果第一预设条件或第二预设条件之中至少满足一个,则判断调整后的选通标识为第一标识的语音通道数量是否等于进行混音处理的最大语音通道数量;
第三确定子单元,用于如果调整后的选通标识为第一标识的语音通道数量等于进行混音处理的最大语音通道数量,则将调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道。
其中,确定模块703,包括:
第二加窗单元,用于逐帧设置调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道进行单调下降窗的平滑加窗操作,并且逐个将调整后的选通标识为第一标识的语音通道对应的选通标识调整为第二标识;
第三加窗单元,用于逐帧设置调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道进行单调上升窗的平滑加窗操作,并且逐个将调整后的选通标识为第二标识的语音通道对应的选通标识调整为第一标识;
直至调整后的选通标识为第一标识的语音通道中短时平均能量最小的语音通道大于调整后的选通标识为第二标识的语音通道中最大的短时平均能量为止。
其中,确定单元,还包括:
第四确定子单元,用于如果调整后的选通标识为第一标识的语音通道数量小于进行混音处理的最大语音通道数量,则将调整后的选通标识为第一标识的语音通道确定为进行混音处理的语音通道,并将调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道确定为进行混音处理的语音通道。
其中,确定模块703,包括:
第四加窗单元,用于逐帧设置调整后的选通标识为第二标识的语音通道中最大的短时平均能量的语音通道进行单调上升窗的平滑加窗操作,并且逐个将调整后的选通标识为第二标识的语音通道对应的选通标识调整为第一标识;
直至调整后的选通标识为第一标识的语音通道数量等于进行混音处理的最大语音通道数量为止。
本发明实施例根据除本端外各活跃语音通道的当前帧数据的语音活性检测结果、各活跃语音通道的短时平均能量、当前活跃语音通道的数量以及各活跃语音通道对应的选通标识,对各活跃语音通道的当前帧数据进行选取,并对选取到的语音通道中的当前帧数据进行混音处理。上述对于活跃语音通道的选取方式将无效语音通道去除,仅保留有效语音通道并对选取到的语音通道中的语音数据进行混音处理,降低了多方语音通话中产生噪声,提高了多方语音通话中声音的清晰度,提高了多方语音通话的执行效率。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。