具体实施方式
请参阅图1,图1是本发明音频输入接口检测方法第一实施方式的流程示意图。
本实施方式的所述音频输入接口检测方法包括以下步骤:
S101,获取各个音频输入接口的输入信号;
S102,获取各个所述音频输入接口的输入信号的能量值,并获取输入信号具有最大能量值的所述音频输入接口的接口标识;
S103,将获取的所述接口标识按照获取的时间顺序加入预设的标识序列;
S104,将所述标识序列中储存个数最多的接口标识对应的音频输入接口识别为有效的音频输入接口。
通过以预定时间间隔获取各个音频输入接口的输入信号,对各路输入的音频信号进行能量检测,对于具有最大能量值的一路输入,获取其对应的音频输入接口的接口标识。将每次获取的所述接口标识按照获取的时间顺序加入预设的标识序列。在所述标识序列中保存的同一个接口标识的个数越多,意味着这一段时间内该接口标识对应的音频输入接口输入的信号能量值最大的情况较多,将所述对应的音频输入接口识别为有效的音频输入接口,能够有效识别用户当前正在使用的麦克风设备连接的音频输入接口,无需用户手动切换,比较方便,并且降低了噪声对识别结果的影响,识别结果较为准确。
其中,对于步骤S101,各个音频输入接口的输入信号可以通过对各个所述音频输入接口的监控以及数据采集获得。所述音频输入接口的输入信号包括各个音频输入接口硬件连接的麦克风设备的输入信号以及噪声信号等。在一个实施例中,可以通过调用Dsound API函数:DirectSoundCaptureEnumerate()来枚举本机的所有音频输入接口。
在检测到本机的所有音频输入接口之后,通过对各个所述音频输入接口的输入信号的采集,获取各个所述音频输入接口的输入数据。优选地,对各个所述音频输入接口的参数进行预设,以统一各个所述音频输入接口的音频采集格式,例如使用单声道,44.1k采样率的音频采集格式。通过统一各个所述音频输入接口的音频采集格式,可以为后期对输入信号的处理节省较大的运算量,提高对麦克风设备的识别速度。
在一个实施例中,以预定的间隔同时获取各个音频输入接口输入信号的步骤包括:
S1011,同时采集各个所述音频输入接口的输入信号,并将同一时刻采集的各个所述音频输入接口的输入信号封装成一帧检测数据;
S1012,对各帧所述检测数据解交织,获取各个所述音频输入接口的输入信号。进一步地,可以储存各帧所述检测数据;每隔预定帧数从所述检测数据中提取其中一帧,进行解交织处理,获取各个所述音频输入接口的输入信号。
在一个实施例中,在对各个所述音频输入接口的输入信号进行封装时,将每一路输入信号以20毫秒为单位采集,然后统一放入一个长度为M*20(M表示枚举出的设备数)毫秒的缓冲区中,从所述缓冲区中获取相应的数据进行封装。
通过上述方式,将各个音频输入接口的输入信号(例如N路输入信号,N为自然数)封装到各帧检测数据中,只需要对所述检测数据每隔一定帧数提取一帧,就可以达到对输入信号以预定间隔采样的目的,提取的检测数据只需要解交织,就可以重新获取各个所述音频输入接口的输入信号,比较方便。
进一步地,在获取各个所述音频输入接口的输入信号之后,可以对每一路输入信号进行预处理,保证检测结果的准确性。所述预处理包括:高通滤波,过滤掉一些工频干扰、噪声抑制处理等等,降低噪声对输入信号检测的影响。
对于步骤S102,对获取的各个所述音频输入接口的输入信号进行能量检测,获取各个所述音频输入接口的输入信号的能量值,所述能量值表征各个输入信号的信号大小强弱。输入信号具有最大能量值,亦即所述音频输入接口输入信号的信号值最强,最有可能连接用户正在使用的麦克风设备。获取该音频输入接口的接口标识,用于标识本次检测中输入信号最强的音频输入接口。
对于步骤S103,将获取的所述接口标识按照获取的时间顺序加入标识序列。所述标识序列可以创建在一个Buffer(缓存器)中,也可以创建在其他类型的储存器中,方便读取。
优选地,所述标识序列按照获取的时间顺序遵循先入先出的原则,并且每次储存的接口标识的个数少于或等于预设个数。亦即,当所述标识序列中储存的接口标识的个数达到预设个数,则在新加入一个所述接口标识时,丢弃一个获取时间或者说储存时间最长的一个所述接口标识。使所述标识序列中储存的接口标识的维持在预设个数,例如25个,并且总是储存最近获取的25个接口标识。所述标识序列中储存的接口标识可以相同,即在所述标识序列中储存可能有多个同一个接口标识。
S104,将所述标识序列中储存个数最多的接口标识对应的音频输入接口识别为有效的音频输入接口。
所述标识序列中储存同一个接口标识个数最多,即标识该接口标识所对应的音频输入接口在近期输入音频最大值的次数最多,最有可能是用户当前正在使用的麦克风设备连接的音频输入接口,将所述接口标识对应的音频输入接口识别为有效的音频输入接口,具有较高的准确率。并且,随着所述接口标识储存的接口标识的个数增多,识别的准确率会进一步增大。进一步地,在识别出有效的音频输入接口之后,可以将所述音频输入接口自动匹配到后台的音频软件中处理。或者先对所述音频输入接口的输入信号进行滤波等处理后在输出到后台的音频软件中处理。在识别完成之后,也可以进一步显示一个用户界面,在用户界面上显示当前识别出的音频输入接口或者其连接的麦克风设备等音频输入设备。本发明的音频输入接口检测方法的开始和停止可以通过多种方式触发,例如可设定在检测到麦克风设备插入时开始检测,或者设定在接收到开始指令时开始检测;又例如可设定在检测到正确的输入接口之后停止检测,或者在麦克风设备拔出后停止检测,又或者在接收到停止指令时停止检测等等。
请参阅图2,图2是本发明音频输入接口检测方法第二实施方式的流程示意图。
本实施方式的所述音频输入接口检测方法与所述第一实施方式的主要区别在于,获取输入信号具有最大能量值的所述音频输入接口的接口标识之前,进一步包括以下步骤:
S1021,判断各个所述输入信号的最大能量值是否大于或等于预设值;
如果是,则获取具有所述最大能量值的音频输入接口的接口标识;否则,判断各个所述音频输入接口的输入信号无效,重新获取各个音频输入接口的输入信号。
本实施方式的所述音频输入接口检测方法,在判断各个所述输入信号的最大能量值是否大于或等于预设值时,才获取具有所述最大能量值的音频输入接口的接口标识,否则判断各个所述音频输入接口的输入信号无效。因此,如果最大能量值的音频输入是由于噪声造成的,则只要噪声的强度低于所述预设值,就会判断为无效的输入信号,不会对识别结果产生影响,可以有效降低噪声对识别结果的影响。
请参阅图3,图3是本发明音频输入接口检测方法第三实施方式的流程示意图。
本实施方式的所述音频输入接口检测方法与所述第一实施方式的主要区别在于,获取各个音频输入接口输入信号之后,进一步执行以下步骤S105:
对各个所述音频输入接口的输入信号进行语音活动检测(VAD);
如果各个所述音频输入接口的VAD的检测结果都为0,则判断各个所述音频输入接口的输入信号无效,重新获取各个音频输入接口的输入信号;
如果至少一个所述音频输入接口的VAD的检测结果为1,则判断各个所述音频输入接口的输入信号有效,执行步骤S102,获取各个所述音频输入接口的输入信号的能量值。
所述VAD(Voice Activity Detection)检测,即语音活动检测。能够有效地检测到输入信号的活动,识别出可能是音频输入的输入信号,提高对活动的音频输入接口识别的速度。如果VAD的检测结果都为0,则表示当前每一个音频输入接口都处于静音状态;如果至少一个所述音频输入接口的检测结果为1,则至少有一个所述音频输入接口有音频输入。可以判断本次采集的各个所述音频输入接口的输入信号有效,执行之后的检测能量最大值识别音频输入接口的步骤。
请参阅图4,图4是本发明音频输入接口检测方法第四实施方式的流程示意图。
本实施方式的所述音频输入接口检测方法与所述第一实施方式的主要区别在于,获取各个音频输入接口输入信号之后,进一步执行以下步骤S106:
获取各个所述音频输入接口的输入信号的信噪比;
如果各个所述音频输入接口的输入信号的信噪比都小于预设值,则判断各个所述音频输入接口的输入信号无效,重新获取各个音频输入接口的输入信号;
如果至少一个所述音频输入接口的输入信号的信噪比不小于预设值,则判断各个所述音频输入接口的输入信号有效,执行步骤S102,获取各个所述音频输入接口的输入信号的能量值。
信噪比是正常声音信号与无信号时噪声信号(功率)的比值,常用dB表示。检测各路音频输入接口的信噪比,只有在至少一个所述音频输入接口的信噪比不小于预设值时,才判断所述音频输入接口的输入信号有效,否则都判断为无效输入,可降低噪声对识别活动音频输入接口的影响,提高识别识别的准确度。
在一个优选实施方式中,上述步骤S1021,S105和S106可以任意选其中两个步骤组合或者三个步骤组合同时执行,进一步提高识别的准确度和识别效率。
在令一个优选实施方式中,将所述标识序列中储存个数最多的接口标识对应的音频输入接口识别为有效的音频输入接口之后,进一步执行对识别出来的音频输入接口做后处理的步骤,调节设备相关参数,使得连接的麦克风设备处于最佳工作状态。
所述后处理包括:对所述有效的音频输入接口执行自适应麦克风音量调节处理,即软/硬件AGC(Automatic Gain Control,自动增益控制)处理,自适应调节麦克风音量,使得麦克风工作在最佳音量状态);信噪比检测,根据检测结果,开启噪声抑制等等。
本发明能够实现自动为用户配置检测出的麦克风设备,无需用户参与做任何设置,会正确的选择有声音输入的麦克,不会出现无声问题,并且在用户界面上可显示相应的配置结果。同一台机器上连接有多个不同声学特性的麦克风设备时,用户只要对着他想用的麦克风设备说话,就可实现自动切换,无需手动设置。如果麦克风设备坏了无法采集到声音的时候,同样无需手动设置,本发明会自动排除该麦克风设备连接的音频输入接口;让不懂音频设置的用户从麦克设置中解放出来,方便用户使用。
请参阅图5,图5是本发明音频输入接口检测系统第一实施方式的结构示意图。
本实施方式的所述音频输入接口检测系统包括:
输入检测模块11,用于获取各个音频输入接口的输入信号;
能量检测模块12,用于获取各个所述音频输入接口的输入信号的能量值,并获取输入信号具有最大能量值的所述音频输入接口的接口标识;
接口标识获取模块13,用于将获取的所述接口标识按照获取的时间顺序加入标识序列;
识别模块14,用于将所述标识序列中储存个数最多的接口标识对应的音频输入接口识别为有效的音频输入接口。
通过以预定时间间隔获取各个音频输入接口的输入信号,对各路输入的音频信号进行能量检测,对于具有最大能量值的一路输入,获取其对应的音频输入接口的接口标识。将每次获取的所述接口标识按照获取的时间顺序加入预设的标识序列。在所述标识序列中保存的同一个接口标识的个数越多,意味着这一段时间内该接口标识对应的音频输入接口输入的信号能量值最大的情况较多,将所述对应的音频输入接口识别为有效的音频输入接口,能够有效识别用户当前正在使用的麦克风设备连接的音频输入接口,无需用户手动切换,比较方便,并且降低了噪声对识别结果的影响,识别结果较为准确。
其中,对于所述输入检测模块11,各个音频输入接口的输入信号可以通过对各个所述音频输入接口的监控以及数据采集获得。所述音频输入接口的输入信号包括各个音频输入接口硬件连接的麦克风设备的输入信号以及噪声信号等。在一个实施例中,可以通过调用Dsound API函数:DirectSoundCaptureEnumerate()来枚举本机的所有音频输入接口。
在检测到本机的所有音频输入接口之后,通过对各个所述音频输入接口的输入信号的采集,获取各个所述音频输入接口的输入数据。优选地,对各个所述音频输入接口的参数进行预设,以统一各个所述音频输入接口的音频采集格式,例如使用单声道,44.1k采样率的音频采集格式。通过统一各个所述音频输入接口的音频采集格式,可以为后期对输入信号的处理节省较大的运算量,提高对麦克风设备的识别速度。
在一个实施例中,所述输入检测模块11包括以下子模块:
采集模块,用于采集各个所述音频输入接口的输入信号;
封装模块,用于将同一时刻采集的各个所述音频输入接口的输入信号封装成一帧检测数据;
提取模块,用于对各帧所述检测数据解交织,获取该帧检测数据包含的各个所述音频输入接口的输入信号。
进一步地,所述输入检测模块11还可包括:储存模块,用于储存各帧所述检测数据;所述提取模块进一步用于每隔预定帧数从所述检测数据中提取其中一帧,进行解交织处理。
例如,封装模块在对各个所述音频输入接口的输入信号进行封装时,将每一路输入信号以20毫秒为单位采集,然后统一放入一个长度为M*20(M表示枚举出的设备数)毫秒的缓冲区中,从所述缓冲区中获取相应的数据进行封装。
通过上述方式,将各个音频输入接口的输入信号(例如N路输入信号,N为自然数)封装到各帧检测数据中,只需要对所述检测数据每隔一定帧数提取一帧,就可以达到对输入信号以预定间隔采样的目的,提取的检测数据只需要解交织,就可以重新获取各个所述音频输入接口的输入信号,比较方便。
进一步地,所述输入检测模块11在获取各个所述音频输入接口的输入信号之后,可以对每一路输入信号进行预处理,保证检测结果的准确性。所述预处理包括:高通滤波,过滤掉一些工频干扰、噪声抑制处理等等,降低噪声对输入信号检测的影响。
对于所述能量检测模块12,对获取的各个所述音频输入接口的输入信号进行能量检测,获取各个所述音频输入接口的输入信号的能量值,所述能量值表征各个输入信号的信号大小强弱。输入信号具有最大能量值,亦即所述音频输入接口输入信号的信号值最强,最有可能连接用户正在使用的麦克风设备。获取该音频输入接口的接口标识,用于标识本次检测中输入信号最强的音频输入接口。
对于所述接口标识获取模块13,将获取的所述接口标识按照获取的时间顺序加入标识序列。所述标识序列可以创建在一个Buffer(缓存器)中,也可以创建在其他类型的储存器中,方便读取。
优选地,所述标识序列按照获取的时间顺序遵循先入先出的原则,并且每次储存的接口标识的个数少于或等于预设个数。亦即,当所述标识序列中储存的接口标识的个数达到预设个数,则在新加入一个所述接口标识时,丢弃一个获取时间或者说储存时间最长的一个所述接口标识。使所述标识序列中储存的接口标识的维持在预设个数,例如25个,并且总是储存最近获取的25个接口标识。所述标识序列中储存的接口标识可以相同,即在所述标识序列中储存可能有多个同一个接口标识。
对于所述识别模块14,将所述标识序列中储存个数最多的接口标识对应的音频输入接口识别为有效的音频输入接口。
所述标识序列中储存同一个接口标识个数最多,即标识该接口标识所对应的音频输入接口在近期输入音频最大值的次数最多,最有可能是用户当前正在使用的麦克风设备连接的音频输入接口,将所述接口标识对应的音频输入接口识别为有效的音频输入接口,具有较高的准确率。并且,随着所述接口标识储存的接口标识的个数增多,识别的准确率会进一步增大。
进一步地,在识别出有效的音频输入接口之后,可以将所述音频输入接口自动匹配到后台的音频软件中处理。或者先对所述音频输入接口的输入信号进行滤波等处理后在输出到后台的音频软件中处理。在识别完成之后,也可以进一步显示一个用户界面,在用户界面上显示当前识别出的音频输入接口或者其连接的麦克风设备等音频输入设备。
本发明的音频输入接口检测系统的开始和停止可以通过多种方式触发,例如可设定在检测到麦克风设备插入时开始检测,或者设定在接收到开始指令时开始检测;又例如可设定在检测到正确的输入接口之后停止检测,或者在麦克风设备拔出后停止检测,又或者在接收到停止指令时停止检测等等。
本发明音频输入接口检测系统第二实施方式与所述第一实施方式的主要区别在于,所述接口标识获取模块13获取输入信号具有最大能量值的所述音频输入接口的接口标识之前,进一步判断各个所述输入信号的最大能量值是否大于或等于预设值;如果是,则获取具有所述最大能量值的音频输入接口的接口标识;否则,判断各个所述音频输入接口的输入信号无效,重新获取各个音频输入接口的输入信号。
本实施方式中,所述接口标识获取模块13在判断各个所述输入信号的最大能量值是否大于或等于预设值时,才获取具有所述最大能量值的音频输入接口的接口标识,否则判断各个所述音频输入接口的输入信号无效。因此,如果最大能量值的音频输入是由于噪声造成的,则只要噪声的强度低于所述预设值,就会判断为无效的输入信号,不会对识别结果产生影响,可以有效降低噪声对识别结果的影响。
请参阅图6,图6是本发明音频输入接口检测系统第三实施方式的结构示意图。
本实施方式的所述音频输入接口检测系统与所述第一实施方式的主要区别在于,进一步包括VAD模块15;
所述VAD模块15用于对各个所述音频输入接口的输入信号进行语音活动检测(VAD);如果各个所述音频输入接口的VAD的检测结果都为0,则判断各个所述音频输入接口的输入信号无效,重新获取各个音频输入接口的输入信号;如果至少一个所述音频输入接口的VAD的检测结果都为1,则判断各个所述音频输入接口的输入信号有效,所述能量检测模块12获取各个所述音频输入接口的输入信号的能量值。
所述VAD(Voice Activity Detection)检测,即语音活动检测。能够有效地检测到输入信号的活动,识别出可能是音频输入的输入信号,提高对活动的音频输入接口识别的速度。如果VAD的检测结果都为0,则表示当前每一个音频输入接口都处于静音状态;如果至少一个所述音频输入接口的检测结果为1,则至少有一个所述音频输入接口有音频输入。可以判断本次采集的各个所述音频输入接口的输入信号有效,执行之后的检测能量最大值识别音频输入接口的步骤。
请参阅图7,图7是本发明音频输入接口检测系统第四实施方式的结构示意图。
本实施方式的所述音频输入接口检测系统与所述第一实施方式的主要区别在于,进一步包括信噪比检测模块16,所述信噪比检测模块16用于获取各个所述音频输入接口的输入信号的信噪比;如果各个所述音频输入接口的输入信号的信噪比都小于预设值,则判断各个所述音频输入接口的输入信号无效,重新获取各个音频输入接口的输入信号;如果至少一个所述音频输入接口的输入信号的信噪比不小于预设值,则判断各个所述音频输入接口的输入信号有效,所述能量检测模块12获取各个所述音频输入接口的输入信号的能量值。
信噪比是正常声音信号与无信号时噪声信号(功率)的比值,常用dB表示。检测各路音频输入接口的信噪比,只有在至少一个所述音频输入接口的信噪比不小于预设值时,才判断所述音频输入接口的输入信号有效,否则都判断为无效输入,可降低噪声对识别活动音频输入接口的影响,提高识别识别的准确度。
在一个优选实施方式中,上述第二至第四实施方式中,所述接口标识获取模块13,所述VAD模块15和所述信噪比检测模块16可以任意选其中两个组合或者三个组合,进一步提高识别的准确度和识别效率。
在另一个优选实施方式中,在所述识别模块14将所述标识序列中储存个数最多的接口标识对应的音频输入接口识别为有效的音频输入接口之后,进一步执行对识别出来的音频输入接口做后处理,调节设备相关参数,使得连接的麦克风设备处于最佳工作状态。
所述后处理包括:对所述有效的音频输入接口执行自适应麦克风音量调节处理,即软/硬件AGC(Automatic Gain Control,自动增益控制)处理,自适应调节麦克风音量,使得麦克风工作在最佳音量状态);信噪比检测,根据检测结果,开启噪声抑制等等。
本发明能够实现自动为用户配置检测出的麦克风设备,无需用户参与做任何设置,会正确的选择有声音输入的麦克,不会出现无声问题,并且在用户界面上可显示相应的配置结果。同一台机器上连接有多个不同声学特性的麦克风设备时,用户只要对着他想用的麦克风设备说话,就可实现自动切换,无需手动设置。如果麦克风设备坏了无法采集到声音的时候,同样无需手动设置,本发明会自动排除该麦克风设备连接的音频输入接口;让不懂音频设置的用户从麦克设置中解放出来,方便用户使用。
本领域普通技术人员可以理解实现上述实施方式中的全部或部分流程以及对应的系统,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各实施方式的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。