发明内容
本发明的主要目的是提供一种音频通信方法及装置,旨在不修改系统设置的情况下,解决部分主机设备与某些外部音频通信设备通过音频接口进行数据通信时,主机设备上其他应用程序播放的声音所产生的干扰问题。
本发明实施例公开了一种音频通信方法,包括以下步骤:
建立混音器输入源维护链表,将各输入源从链表头开始依次插入所述链表;
将需通过音频接口输出的数据调制音频载波信号生成调制声音信号,将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器;
设置音频采样频率,将所述混音器的各输入源转换为统一的所述音频采样频率;
从所述链表的表头开始逐路累加所述混音器的各输入源,将最后累加结果作为混音结果从所述音频接口输出,供外部音频通信设备接收。
优选地,所述从所述链表的表头开始逐路累加所述混音器的各输入源包括:
累加时,对每次累加结果均进行限幅处理,在本次累加结果的幅度超过所述混音器预置PCM数值正最大值时,则将本次累加结果的幅度限制为所述预置PCM数值正最大值;在本次累加结果的幅度超过所述混音器预置PCM数值负最大值时,则将本次累加结果的幅度限制为所述预置PCM数值负最大值。
优选地,所述将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器包括:
先输出两路或多路数值为PCM数值正最大值的音频信号,再输出一路数值为PCM数值负最大值的音频信号;或者,先输出两路或多路数值为PCM数值负最大值的音频信号,再输出一路数值为PCM数值正最大值的音频信号;
最后,输出用于进行数据通信的所述调制声音信号至所述混音器。
优选地,所述从所述链表的表头开始逐路累加所述混音器的各输入源包括:
对所述各输入源的最后累加结果进行限幅处理,在所述最后累加结果的幅度超过所述混音器预置PCM数值正最大值时,则将所述最后累加结果的幅度限制为所述预置PCM数值正最大值;在所述最后累加结果的幅度超过所述混音器预置PCM数值负最大值时,则将所述最后累加结果的幅度限制为所述预置PCM数值负最大值。
优选地,所述将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器包括:
在所述调制声音信号为正值时,将所述调制声音信号的幅度转换为所述预置PCM数值正最大值;在所述调制声音信号为负值时,将所述调制声音信号的幅度转换为所述预置PCM数值负最大值;
同时输出两路或多路PCM数值相同且相位相同的幅度为PCM数值正最大值或者PCM数值负最大值的所述调制声音信号至所述混音器。
优选地,所述将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器包括:
在所述调制声音信号为正值时,将所述调制声音信号的幅度转换为所述预置PCM数值负最大值;在所述调制声音信号为负值时,将所述调制声音信号的幅度转换为所述预置PCM数值正最大值;
同时输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。
优选地,所述将需通过音频接口输出的数据调制音频载波信号生成调制声音信号包括:
在所述需通过音频接口输出的数据为正值时,对应生成PCM数值正最大值的调制声音信号;在所述需通过音频接口输出的数据为负值时,对应生成PCM数值负最大值的调制声音信号;
或者:
在所述需通过音频接口输出的数据为正值时,对应生成PCM数值负最大值的调制声音信号;在所述需通过音频接口输出的数据为负值时,对应生成PCM数值正最大值的调制声音信号;
所述将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器包括:同时输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。
本发明实施例还公开一种音频通信装置,包括:
链表建立模块,用于建立混音器输入源维护链表,将各输入源从链表头开始依次插入所述链表;
数据调制模块,用于将需通过音频接口输出的数据调制音频载波信号生成调制声音信号,将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器;
频率设置模块,用于设置音频采样频率,将所述混音器的各输入源转换为统一的所述音频采样频率;
信号输出模块,用于从所述链表的表头开始逐路累加所述混音器的各输入源,将最后累加结果作为混音结果从所述音频接口输出,供外部音频通信设备接收。
优选地,所述信号输出模块还用于:
累加时,对每次累加结果均进行限幅处理,在本次累加结果的幅度超过所述混音器预置PCM数值正最大值时,则将本次累加结果的幅度限制为PCM数值正最大值;在本次累加结果的幅度超过所述混音器预置PCM数值负最大值时,则将本次累加结果的幅度限制为PCM数值负最大值。
优选地,所述数据调制模块还用于:
先输出两路或多路数值为PCM数值正最大值的音频信号,再输出一路数值为PCM数值负最大值的音频信号;或者,先输出两路或多路数值为PCM数值负最大值的音频信号,再输出一路数值为PCM数值正最大值的音频信号;
最后,输出用于进行数据通信的所述调制声音信号至所述混音器。
优选地,所述信号输出模块还用于:
对所述各输入源的最后累加结果进行限幅处理,在所述最后累加结果的幅度超过所述混音器预置PCM数值正最大值时,则将所述最后累加结果的幅度限制为所述预置PCM数值正最大值;在所述最后累加结果的幅度超过所述混音器预置PCM数值负最大值时,则将所述最后累加结果的幅度限制为所述预置PCM数值负最大值。
优选地,所述数据调制模块还用于:
在所述调制声音信号为正值时,将所述调制声音信号的幅度转换为所述预置PCM数值正最大值;在所述调制声音信号为负值时,将所述调制声音信号的幅度转换为所述预置PCM数值负最大值;
同时输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。
优选地,所述数据调制模块还用于:
在所述调制声音信号为正值时,将所述调制声音信号的幅度转换为所述预置PCM数值负最大值;在所述调制声音信号为负值时,将所述调制声音信号的幅度转换为所述预置PCM数值正最大值;
同时输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。
优选地,所述数据调制模块还用于:
在所述需通过音频接口输出的数据为正值时,对应生成所述预置PCM数值正最大值的调制声音信号;在所述需通过音频接口输出的数据为负值时,对应生成所述预置PCM数值负最大值的调制声音信号;
或者:
在所述需通过音频接口输出的数据为正值时,对应生成所述预置PCM数值负最大值的调制声音信号;在所述需通过音频接口输出的数据为负值时,对应生成所述预置PCM数值正最大值的调制声音信号;
同时输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。
本发明通过主机设备建立混音器对应的链表,将需通过音频接口输出的数据调制音频载波信号生成调制声音信号;将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器,在混音前将各路输入源转换至统一的音频采样频率;并针对混音器在混音时的两种不同累加算法,输入源分别采用不同的音频信号输出方式,混音器将各输入源信号经累加混音后作为混音结果输出,供外部音频通信设备接收的方法,具有在不修改主机设备的音频设置和不影响主机设备其他程序运行的条件下,对采用音频接口进行数据通信的背景音频进行压制的有益效果,彻底解决了通过音频接口进行数据通信时,因其他应用程序播放声音所产生的干扰问题;由于上述解决方法通过软件实现,因此具有更好的兼容性和通用性。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明音频通信方法及装置的具体实施例中,所述主机设备指移动终端、平板电脑等主机设备,所述与其通信的外部设备指与所述主机设备通过音频接口进行数据通信的外部音频通信设备,如USBKey等;主机设备和通过音频接口与主机设备进行通信的外部音频通信设备相互配合,来实现对背景音频的压制,保证二者之间进行通信时通信数据的正确。
参照图1,图1是本发明音频通信方法一实施例流程示意图;如图1所示,本发明音频通信方法包括以下步骤:
步骤S01、建立混音器输入源维护链表,将各输入源从链表头开始依次插入所述链表;
主机设备建立混音器对应的输入源维护链表,将各输入源依次从所述链表头开始依次插入所述链表。
在一优选的实施例中,混音器通过上述建立的链表来维护各路输入源,在有新的输入源加入时,将新增加的输入源插入到该链表的末尾;在有输入源关闭时,将关闭的所述输入源从所述链表中移除。
步骤S02、将需通过音频接口输出的数据调制音频载波信号生成调制声音信号,将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器;
主机设备将需要通过音频接口输出的用于与外部音频通信设备进行通信的数据,调制在音频载波信号上生成调制声音信号。
在一优选的实施例中,主机设备采用PCM(Pulse-Code Modulation,脉冲编码调制)的方式对输出的数据进行调制。
主机设备将包含所述调制声音的音频信号作为混音器的输入源输出至混音器。主机设备通过音频接口与外部音频通信设备进行通信时,主机设备将包含所述调制声音信号的音频信号通过两路或多路输入源输出至该主机设备的混音器,由混音器对两个或多个音频信号进行混音,合成一个单独的混合音频信号并输出。
步骤S03、设置音频采样频率,将所述混音器的各输入源转换为统一的所述音频采样频率;
在主机设备的混音器对输入源输入的音频信号进行混音之前,主机设备将该混音器维护的各路输入源转换为统一的音频采样频率,使各输入源采集音频信号时,按照同样的采样频率进行采样。
步骤S04、从所述链表的表头开始逐路累加所述混音器的各输入源,将最后累加结果作为混音结果从所述音频接口输出,供外部音频通信设备接收。
针对主机设备中混音器对各路输入源输入的音频信号进行累加的不同方式,各输入源分别采用不同的音频信号输出方式输出至混音器。
主机设备的混音器进行混音时,从与该混音器匹配的链表的链表头开始逐路累加各路输入源,其中一种累加方式为:累加时,对每次累加的结果均进行限幅处理,在本次累加结果超过所述混音器预置PCM数值正最大值,则将本次累加结果的幅度限制为所述预置PCM数值正最大值;在本次累加结果超过所述预置PCM数值负最大值时,则将本次累加结果的幅度限制为所述预置PCM数值负最大值。
针对每次累加结果均进行限幅处理的累加方式,主机设备将包含所述调制声音信号的音频信号作为输入源输出至混音器时,先输出两路或多路数值为所述预置PCM数值正最大值的音频信号,再输出一路数值为所述预置PCM数值负最大值的音频信号;或者,先输出两路或多路数值为所述预置PCM数值负最大值的音频信号,再输出一路数值为所述预置PCM数值正最大值的音频信号;最后输出用于进行数据通信时的调制声音信号至混音器。这样,混音器混音后输出的只有进行数据通信时的调制声音信号。主机设备的混音器按照设置的统一音频采样频率,从该混音器对应的链表头开始逐路累加各输入源,即累加各调制声音信号,并将所述调制声音信号累加后的累加结果作为混音结果从所述音频接口输出,供与主机设备进行通信的外部音频通信设备接收。
主机设备的混音器进行混音时,从与该混音器匹配的链表的链表头开始逐路累加各路输入源的另一种累加方式为:累加时,只在最后累加的结果进行限幅处理即只对各输入源的最后累加结果进行限幅处理,在最后累加结果超过所述混音器的预置PCM数值正最大值时,则将所述最后累加结果的幅度限制为所述预置PCM数值正最大值;在最后累加结果超过所述混音器的预置PCM数值的负最大值时,则将所述最后累加结果的幅度限制为所述预置PCM数值负最大值。
针对只在最后累加结果进行限幅处理的累加方式,主机设备将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器时,同时输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。这样,混音器混音后输出的只有进行数据通信时的调制声音信号。主机设备的混音器按照设置的统一音频采样频率,从该混音器对应的链表头开始逐路累加各输入源,即累加各调制声音信号,并将所述调制声音信号累加后的累加结果作为混音结果从所述音频接口输出,供与主机设备进行通信的外部音频通信设备接收。
在一优选的实施例中,所述将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器包括:
在所述调制声音信号为正值时,将所述调制声音信号的幅度转换为所述预置PCM数值负最大值;在所述调制声音信号为负值时,将所述调制声音信号的幅度转换为所述预置PCM数值正最大值;同时输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。
在一优选的实施例中,所述将需通过音频接口输出的数据调制音频载波信号生成调制声音信号包括:
在所述需通过音频接口输出的数据为正值时,对应生成所述预置PCM数值正最大值的调制声音信号;在所述需通过音频接口输出的数据为负值时,对应生成所述预置PCM数值负最大值的调制声音信号;或者:在所述需通过音频接口输出的数据为正值时,对应生成所述预置PCM数值负最大值的调制声音信号;在所述需通过音频接口输出的数据为负值时,对应生成所述预置PCM数值正最大值的调制声音信号。本实施例中,所述需通过音频接口输出的数据为高电平时,定义该数据为正值;所述需通过音频接口输出的数据为低电平时,定义该数据为负值。
本实施例通过主机设备将需通过音频接口输出的数据调制音频载波信号生成调制声音信号;建立混音器对应的链表,将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器,在混音前将各路输入源转换至统一的音频采样频率;针对混音器在混音时的两种不同累加算法,输入源分别采用不同的音频信号输出方式,混音器将各输入源输出的调制声音信号经累加混音后得到的混音结果从所述音频接口输出,供外部音频通信设备接收的方法,具有在不修改主机设备的音频设置和不影响主机设备其他程序运行的条件下,对采用音频接口进行数据通信的背景音频进行压制的有益效果;由于上述解决方法通过软件实现,因此具有更好的兼容性和通用性。
请参照图2,图2是本发明音频通信装置一实施例功能模块示意图。如图2所示,本发明音频通信装置包括:链表建立模块01、数据调制模块02、频率设置模块03和信号输出模块04。
链表建立模块01,用于建立混音器输入源维护链表,将各输入源从链表头开始依次插入所述链表;
链表建立模块01建立混音器对应的输入源维护链表,将各输入源依次从所述链表头开始依次插入所述链表。
在一优选的实施例中,混音器通过上述链表建立模块01建立的链表来维护各路输入源,在有新的输入源加入时,链表建立模块01将新增加的输入源插入到该链表的末尾;在有输入源关闭时,链表建立模块01将关闭的所述输入源从所述链表中移除。
数据调制模块02用于,将需通过音频接口输出的数据调制音频载波信号生成调制声音信号,将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器;
数据调制模块02将需要通过音频接口输出的用于与外部音频通信设备进行通信的数据调制为音频载波信号,并生成调制声音信号。
在一优选的实施例中,数据调制模块02采用PCM的方式对输出的数据进行调制。
主机设备通过音频接口与外部音频通信设备进行通信时,数据调制模块02将包含所述调制声音信号的音频信号通过两路或多路输入源输出至混音器,由混音器对两个或多个音频信号进行混音,合成一个单独的混合音频信号并输出。
频率设置模块03用于,设置音频采样频率,将所述混音器的各输入源转换为统一的所述音频采样频率;
在主机设备的混音器对输入源输出的音频信号进行混音之前,频率设置模块03将该混音器维护的各路输入源转换为统一的音频采样频率,使各输入源采集音频信号时,按照同样的采样频率进行采样。
信号输出模块04用于,从所述链表的表头开始逐路累加所述混音器的各输入源,将最后累加结果作为混音结果从所述音频接口输出,供外部音频通信设备接收。
针对主机设备中混音器对各路输入源输入的音频信号进行累加的不同方式,数据调制模块02分别采用不同的音频信号输出方式将包含所述调制声音信号的音频信号作为输入源输出至混音器。
信号输出模块04从与混音器匹配的链表的链表头开始逐路累加各路输入源,其中一种累加方式为:累加时,对每次累加的结果均进行限幅处理,在本次累加结果超过所述混音器的预置PCM数值正最大值时,则将本次累加结果的幅度限制为所述预置PCM数值正最大值;在本次累加结果超过所述混音器的预置PCM数值负最大值时,则将本次累加结果的幅度限制为所述预置PCM数值负最大值。
针对信号输出模块04对每次累加结果均进行限幅处理的累加方式,数据调制模块02将包含所述调制声音信号的音频信号作为输入源输出至混音器时,先输出两路或多路数值为所述预置PCM数值正最大值的音频信号,再输出一路数值为所述预置PCM数值负最大值的音频信号;或者,先输出两路或多路数值为所述预置PCM数值负最大值的音频信号,再输出一路数值为所述预置PCM数值正最大值的音频信号;最后输出用于进行数据通信时的调制声音信号至混音器。这样,信号输出模块04混音后输出的只有进行数据通信时的调制声音信号。主机设备的信号输出模块04按照设置的统一音频采样频率,从混音器对应的链表头开始逐路累加各输入源,即累加各调制声音信号,并将所述调制声音信号累加后的累加结果作为混音结果从所述音频接口输出,供与主机设备进行通信的外部音频通信设备接收。
信号输出模块04从与混音器匹配的链表的表头开始逐路累加各路输入源的另一种累加方式为:累加时,只在最后累加的结果进行限幅处理即只对各输入源的最后累加结果进行限幅处理,在最后累加结果超过所述混音器的预置PCM数值正最大值时,则将所述最后累加结果的幅度限制为所述预置PCM数值正最大值;在最后累加结果超过所述混音器的预置PCM数值的负最大值时,则将所述最后累加结果的幅度限制为所述预置PCM数值负最大值。
针对信号输出模块04只在最后累加结果进行限幅处理的累加方式,数据调制模块02将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器时,同时输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。这样,混音器混音后输出的只有进行数据通信时的调制声音信号。信号输出模块04按照设置的统一音频采样频率,从该混音器对应的链表头开始逐路累加各输入源,即累加各调制声音信号,并将所述调制声音信号累加后的累加结果作为混音结果从所述音频接口输出,供与主机设备进行通信的外部音频通信设备接收。
在一优选的实施例中,所述数据调制模块02将包含所述调制声音信号的音频信号作为混音器的输入源输出至混音器包括:
在所述调制声音信号为正值时,数据调制模块02将所述调制声音信号的幅度转换为所述预置PCM数值负最大值;在所述调制声音信号为负值时,数据调制模块02将所述调制声音信号的幅度转换为所述预置PCM数值正最大值;同时数据调制模块02输出两路或多路PCM数值相同且相位相同的幅度为所述预置PCM数值正最大值或者所述预置PCM数值负最大值的所述调制声音信号至所述混音器。
在一优选的实施例中,所述数据调制模块02将需通过音频接口输出的数据调制音频载波信号生成调制声音信号包括:
在所述需通过音频接口输出的数据为正值时,数据调制模块02对应生成所述预置PCM数值正最大值的调制声音信号;在所述需通过音频接口输出的数据为负值时,数据调制模块02对应生成所述预置PCM数值负最大值的调制声音信号;或者:在所述需通过音频接口输出的数据为正值时,数据调制模块02对应生成所述预置PCM数值负最大值的调制声音信号;在所述需通过音频接口输出的数据为负值时,数据调制模块02对应生成所述预置PCM数值正最大值的调制声音信号。本实施例中,所述需通过音频接口输出的数据为高电平时,定义该数据为正值;所述需通过音频接口输出的数据为低电平时,定义该数据为负值。
本实施例通过主机设备建立混音器对应的链表,将需通过音频接口输出的数据调制音频载波信号生成调制声音信号;将包含所述调制声音信号的音频信号作为输入源输出至混音器,在混音前将各路输入源转换至统一的音频采样频率;针对混音器在混音时的两种不同累加算法,输入源分别采用不同的音频信号输出方式,混音器将各输入源输出的调制声音信号经累加混音后得到的混音结果从所述音频接口进行输出,供外部音频通信设备接收;具有在不修改主机设备的音频设置和不影响主机设备其他程序运行的条件下,对采用音频接口进行数据通信的背景音频进行压制的有益效果;由于本实施例音频通信装置所采用的上述解决方法是通过软件实现的,因此具有更好的兼容性和通用性。
以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。