音频路由管理方法、系统及电子设备与流程



1.本发明涉及音频处理技术领域,具体涉及一种音频路由管理方法、系统及电子设备。


背景技术:



2.现有linux alsa声卡架构,来自不同设备的音频数据被混音处理时,通常会出现数据不同步、实时性低、软件开发复杂度高、复用性低、路由管理不合理等问题。


技术实现要素:



3.针对所述缺陷,本发明实施例公开了一种音频路由管理方法、系统及电子设备,解决了实时对讲过程中设备端延时高问题和设备端软件对不同音频设备兼容性差的问题,提高了对讲实时性,提升了客户体验;提高了软件复用性和音频设备兼容性,降低了软件开发复杂度,提升了经济效益。
4.本发明实施例第一方面公开一种音频路由管理方法,所述方法包括:
5.确定目标音频输出设备以及向所述目标音频输出设备发送音频数据的目标音频输入设备;
6.基于所述目标音频输出设备和目标音频输入设备构建音轨线路,每条音轨线路中包括至少一个采集音轨节点、至少一个回放音轨节点和一个混音节点;
7.将目标音频输入设备采集的音频数据写入采集音轨节点;
8.读取写入采集音轨节点的音频数据,记为第一音频数据,将所有的第一音频数据进行混音处理后写入回放音轨节点;
9.读取写入回放音轨节点的音频数据,记为第二音频数据,并将所述第二音频数据发送至目标音频输出设备。
10.作为一种可选的实施方式,在本发明实施例第一方面中,当其中一个或多个目标音频输入设备具有多通道音源时,通过多通道音源分离机制获取每个通道的音频数据,并将每个通道的音频数据写入对应的采集音轨节点中。
11.作为一种可选的实施方式,在本发明实施例第一方面中,当所述采集音轨节点为多个时:
12.对第一音频数据进行重采样;
13.或/和,
14.以任意一采集音轨节点为同步源,对所有的第一音频数据进行同步。
15.作为一种可选的实施方式,在本发明实施例第一方面中,当目标音频输出设备接收的第二音频数据为多个时,通过多通道音频合并机制合并该多个第二音频数据后,发送至目标音频输出设备。
16.作为一种可选的实施方式,在本发明实施例第一方面中,以任意一回放音轨节点为同步源,对目标音频输出设备接收的所有的第二音频数据进行同步后再通过多通道音频
合并机制合并该多个第二音频数据后,发送至目标音频输出设备。
17.作为一种可选的实施方式,在本发明实施例第一方面中,为每个目标音轨节点创建一个共享内存区域,并在所述共享内存区域内利用队列的数据结构构建环形缓冲区;为每个目标音轨节点设置写入下标和读取下标,其中,向所述目标音轨节点写入长度为l1的音频数据时,所述写入下标的数值增加l1,从目标音轨节点读取长度为l2的音频数据时,所述读取下标的数值增加l2;所述目标音轨节点为采集音轨节点或回放音轨节点。
18.作为一种可选的实施方式,在本发明实施例第一方面中,将音频数据写入目标音轨节点的方法,包括:
19.基于writepos和(writepos+writesize)%ringsize的大小判断写入下标增加待写入音频数据后是否超出边界,其中,writepos为写入下标的值,writesize为待写入待写入音频数据的长度,ringsize为环形缓冲区的大小;
20.如果writepos小于(writepos+writesize)%ringsize,则将所述待写入音频数据直接写入环形缓冲区中,并更新写入下标的长度:writepos=(writepos+writesize)%ringsize;
21.如果writepos大于(writepos+writesize)%ringsize,则对待写入音频数据按时间顺序进行分割为第一待写入音频数据和第二待写入音频数据,其中,第一待写入音频数据的长度为(ringsize-writepos),第二待写入音频数据的长度为writesize-(ringsize-writepos);先将第一待写入音频数据写入环形缓冲区中,然后再将第二待写入音频数据写入环形缓冲区中,最后更新写入下标的长度:writepos=(writepos+writesize)%ringsize。
22.作为一种可选的实施方式,在本发明实施例第一方面中,读取所述目标音轨节点中音频数据的方法,包括:
23.基于writepos和readpos的大小判断待读取音频数据是否存在边界,其中,writepos为写入下标的值,readpos为读取下标的值;
24.如果writepos大于readpos,则直接读取所述待读取音频数据,并更新读取下标:readpos=(readpos+readsize)%ringsize,其中,readsize为待读取音频数据的长度,ringsize为环形缓冲区的大小;
25.如果writepos小于readpos,则将待读取音频数据按时间顺序进行分割为第一待读取音频数据和第二待读取音频数据,其中,第一待读取音频数据的长度为(ringsize-readpos),第二待读取音频数据的长度为readsize-(ringsize-readpos);先从环形缓冲区读取第一待写入音频数据,然后再从环形缓冲区读取第二待写入音频数据,最后更新读取下标的长度:readpos=(readpos+readsize)%ringsize。
26.本发明实施例第二方面公开一种音频路由管理系统,其包括:
27.确定单元,用于确定目标音频输出设备以及向所述目标音频输出设备发送音频数据的目标音频输入设备;
28.创建单元,用于基于所述目标音频输出设备和目标音频输入设备构建音轨线路,每条音轨线路中包括至少一个采集音轨节点、至少一个回放音轨节点和一个混音节点;
29.第一处理单元,用于将目标音频输入设备采集的音频数据写入采集音轨节点;
30.混音单元,用于读取写入采集音轨节点的音频数据,记为第一音频数据,将所有的
第一音频数据进行混音处理后写入回放音轨节点;
31.第二处理单元,用于读取写入回放音轨节点的音频数据,记为第二音频数据,并将所述第二音频数据发送至目标音频输出设备。
32.本发明实施例第三方面公开一种电子设备,包括:存储有可执行程序代码的存储器;与所述存储器耦合的处理器;所述处理器调用所述存储器中存储的所述可执行程序代码,用于执行本发明实施例第一方面公开的一种音频路由管理方法。
33.本发明实施例第四方面公开一种计算机可读存储介质,其存储计算机程序,其中,所述计算机程序使得计算机执行本发明实施例第一方面公开的一种音频路由管理方法。
34.本发明实施例第五方面公开一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本发明实施例第一方面公开的一种音频路由管理方法。
35.本发明实施例第六方面公开一种应用发布平台,所述应用发布平台用于发布计算机程序产品,其中,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本发明实施例第一方面公开的一种音频路由管理方法。
36.与现有技术相比,本发明实施例具有以下有益效果:
37.本发明实施例中,本发明通过构建音轨线路的方式解决了实时对讲过程中设备端延时高问题和设备端软件对不同音频设备兼容性差的问题,提高了对讲实时性,提升了客户体验;同时提高了软件复用性和音频设备兼容性,降低了软件开发复杂度,提升了经济效益。
附图说明
38.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人体来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
39.图1是本发明实施例公开的虚拟声卡队列的示意图;
40.图2是本发明实施例公开的一种音频路由管理方法的流程示意图;
41.图3是本发明实施例公开的采集音轨节点的结构示意图;
42.图4是本发明实施例公开的回放音轨节点的结构示意图;
43.图5是本发明实施例公开的对讲场景的音频路由的示意图;
44.图6是本发明实施例公开的发起广播场景的音频路由的示意图;
45.图7是本发明实施例公开的蓝牙对讲场景的音频路由的示意图;
46.图8是本发明实施例公开的音轨节点写入操作的流程示意图;
47.图9是本发明实施例公开的音轨节点读取操作的流程示意图;
48.图10是本发明实施例公开的路由线路图的一个举例;
49.图11是本发明实施例公开的音频路由的音频传输的原理图;
50.图12是本发明实施例公开的音频路由的音频传输的流程图;
51.图13是本发明实施例公开的一种音频路由管理系统的结构框图;
52.图14是本发明实施例公开的一种音频路由管理系统的架构图;
53.图15为本发明实施例公开的电子设备的结构框图。
具体实施方式
54.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人体在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
55.需要说明的是,本发明的说明书和权利要求书中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同的对象,而不是用于描述特定顺序。本发明实施例的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,示例性地,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
56.本发明实施例基于alsa(高级linux声音架构),引入linux系统进程间通信、链表的逻辑关系、多线程处理等技术,实现一种音频路由管理方法、系统及电子设备,对实时对讲系统多音频数据源路由管理进行优化,以达到音频高实时性传输、应用高复用性、混音智能化等优点。解决了实时对讲过程中设备端延时高问题和设备端软件对不同音频设备兼容性差的问题,提高了对讲实时性,提升了客户体验;同时提高了软件复用性和音频设备兼容性,降低了软件开发复杂度,提升了经济效益,以下结合附图进行详细描述。
57.名词解释:
58.虚拟声卡:将各类带有音频输入或者输出功能的设备或者数据流抽象为虚拟声卡,虚拟声卡的音频属性包括声卡打开使用的通道数、采样率、量化精度、每个采样字节数等。
59.设备端audio codec(音频编解码器)抽象为本机声卡、外部蓝牙耳机设备抽象为蓝牙声卡、设备端wifi芯片抽象为wifi声卡、以太网音频数据流抽象为网络声卡等,利用链表这种数据结构将不同的虚拟声卡加入到声卡队列(如图1)中,可以实现虚拟声卡的快速插入和访问,最快的插入、访问时间复杂度可达到o(1)。
60.音轨节点:一个虚拟声卡的一个音频流抽象为一个音轨节点。
61.音轨线路:对多个音轨节点链路的处理方法抽象为音轨线路。
62.声卡节拍:linux声卡硬件特性,从linux系统声卡读取同样长度、同样属性的音频数据的时间是固定不变的。
63.实施例一
64.请参阅图2,图2是本发明实施例公开的一种音频路由管理方法的流程示意图。其中,本发明实施例所描述的方法适用于linux alsa声卡架构。如图2所示,该音频路由管理方法包括以下步骤:
65.s110,确定目标音频输出设备以及向所述目标音频输出设备发送音频数据的目标音频输入设备。
66.目标音频输出设备即输出音频数据的声卡设备,可以是本地声卡、蓝牙声卡、wifi声卡以及网络声卡等虚拟声卡。目标音频输入设备为一个或多个相同类型或不同类型的虚拟声卡,用于采集音频数据,并通过相应的链路发送给目标音频输出设备进行实时播放或回放。
67.链路可以根据所有音频输出设备和音频输入设备的数量进行设置,形成链路数据
表,确定目标音频输出设备和目标音频输入设备后,二者之间的音轨链路也就随之形成,该音轨链路可以通过人为选择,也可以由链路数据表和相应的逻辑自动生成。
68.s120,基于所述目标音频输出设备和目标音频输入设备构建音轨线路,每条音轨线路中包括至少一个采集音轨节点、至少一个回放音轨节点和一个混音节点。
69.音轨线路即上述的音轨链路,在音轨链路中,至少包括一个采集音轨节点、至少一个回放音轨节点和一个混音节点。
70.每个音轨节点(采集音轨节点或回放音轨节点)数据处理的过程即是对共享内存的读写。共享内存是linux系统最快的进程间通信方式,因此可以最大限度的提升音频数据的实时性。
71.请参照图3所示,针对一个采集音轨节点创建一个共享内存区域,并在该共享内存区域中利用队列这种数据结构构建一段环形缓冲区(该环形缓冲区记为采集音轨节点)。把虚拟声卡采集到的数据写入到采集音轨节点的过程表示采集音轨节点写入操作;从采集音轨节点中读取数据(d001)表示采集音轨节点的读操作。对所有采集音轨节点的读写操作过程中,需要通过写入下标和读取下标来判断是否可读写,同时需要参照同步信号做数据对齐处理。
72.同样地,请参照图4所示,针对一个回放音轨节点创建一个共享内存区域,并在该共享内存区域中利用队列这种数据结构构建一段环形缓冲区(该环形缓冲区记为回放音轨节点)。将音频数据(d001)写入到对应的回放音轨节点的过程表示回放音轨节点的写入操作;从回放音轨节点读取数据再混音后送到回放音轨的过程表示回放音轨节点的读取操作。对所有回放音轨节点的读写操作过程中,需要通过写入下标和读取下标来判断是否可读写,同时需要参照同步信号做数据对齐处理。
73.当其中一个或多个目标音频输入设备具有多通道音源时,通过多通道音源分离机制获取每个通道的音频数据,并将每个通道的音频数据写入对应的采集音轨节点中。
74.当多个音频输出设备对应相同的目标音频输入设备,这些音频输出设备可以供应同一音轨线路(不同的音频输出设备仅对应不同的回放音轨节点)。
75.根据产品需求设定好音轨线路后即完成了音频路由的设定,若干条音轨线路的集合表示音频路由。每创建一条音轨线路就会创建一个线程,二者为一一对应关系。每个线程都会通过对应的声卡节拍按固定时间间隔处理音轨线路上的音频数据,即从目标输入设备采集音频数据写入采集声卡音轨节点,再将音频数据送到混音节点做重采样、回声消除、eq、drc、混音等处理,最后把音频数据送到回放音轨节点,从对应的设备播放出来。
76.音轨线路通过链表将所有音轨节点链接起来,在创建、查、删除音轨节点等操作时可以快速访问到音轨节点。系统资源足够的情况下音轨线路可以任意扩展,音轨线路中的音轨节点也可以任意扩展。
77.对讲场景下的音频路由如图5所示。其中音轨线路1处理本机上传到网络端的音频数据(上行),音轨线路2处理网络传输到本机的音频数据(下行)。
78.发起广播场景下的音频路由如图6所示,音轨线路1处理上行音频数据。
79.使用蓝牙或者其他输入输出声卡设备时的场景如图7所示。音轨线路1处理上行音频数据,音轨线路2处理下行音频数据。
80.s130,将目标音频输入设备采集的音频数据写入采集音轨节点。
81.环形缓冲中共享内存的起始和末尾相连接的位置为内存边界,音频数据在拷贝(写入或读取)时就可能会出现边界拷贝问题,为解决该问题引入了写入下标和读取下标的概念,往音轨节点(采集音轨节点或回放音轨节点)写入长度为l1的音频数据时,写入下标就增加l1的长度,相对应的从音轨节点读取长度为l2的音频数据时,读取下标就增加l2的长度。
82.请参照图8所示,将音频数据写入采集音轨节点,包括以下步骤:
83.s001、判断同步信号是否获取,如果获取,则执行步骤s004,反之,则执行步骤s002。
84.同步信号的获取是以任意目标声卡的节拍作为同步源,对要写入采集音轨节点对应的虚拟声卡(记为待同步声卡)的信号进行同步,设定待同步声卡的采样率为ra,本机触发采样累计个数为tc;目标采样率为rd,目标采样累计个数为ds,目标采样长度为sz,上次目标累计采样技术为sc,其同步过程包括以下步骤:
85.1、触发采样个数递增:tc=tc+sz;
86.2、目标累计采样数:ds=tc*rd/ra;
87.3、当前填充采样数:ds=ds

sc;
88.4、信号触发采样数递增sc=sc+ds。
89.假设同步源的采样率为48k,一次采集20ms的数据,那么采样个数为:48000/50=960;假设待同步的音频源为文件输入,采样率为8k,那么采集间隔也需要为20ms,对应的文件音频采样个数为:8000/50=160。
90.a0:同步源采样累计个数=0(初始状态)
91.第一次发信号
92.a11:同步源采样累计个数=本机采样累计个数+960=0+960=960;
93.a12:文件采样数=步骤a11的结果*文件采样率/本机声卡采样率=960*8000/48000=160;
94.a13:当前文件采样数=步骤a12的文件累计采样数=160-0=160;
95.a14:文件累计采样数=文件累计采样数+步骤a13的结果=160+0;
96.第二次发信号
97.a21:本机采样累计个数=本机采样累计个数+960=960+960=1920;
98.a22:文件采样数=步骤a21的结果*文件采样率/本机声卡采样率=1920*8000/48000=320;
99.a23:当前文件采样数=步骤a22的文件累计采样数=320-160=160;
100.a24:文件累计采样数=文件累计采样数+步骤a23的结果=160+160;
101.第三次发信号
102.a31:本机采样累计个数=本机采样累计个数+960(1920+960=2880)
103.a32:文件采样数=步骤a31的结果*文件采样率/本机声卡采样率=2880*8000/48000=480;
104.a33:当前文件采样数=步骤a32的文件累计采样数=480-320=160;
105.a34:文件累计采样数=文件累计采样数+步骤a33的结果=320+160。
106.每间隔20ms发送一次信号,文件音轨的读写按照每20ms,采样数为160即可完成与
同步源的同步。
107.s002、是否等待超时,如果等待超时,则返回写入长度0,反之,则执行步骤s001。
108.在一些实施例中,如果等待超时的次数超过阈值次数例如5次时,则可以认定为同步失败,可以通过其他同步源进行同步操作,或者发送提醒信息。
109.s003、返回写入长度为0。
110.s004、基于writepos和(writepos+writesize)%ringsize的大小判断写入下标增加待写入音频数据后是否超出边界,其中,writepos为写入下标的值,writesize为待写入待写入音频数据的长度,ringsize为环形缓冲区的大小;如果writepos小于(writepos+writesize)%ringsize,则执行步骤s005,反之,如果writepos大于(writepos+writesize)%ringsize,则执行步骤s006。
111.s005、将所述待写入音频数据直接写入环形缓冲区中,并更新写入下标的长度:writepos=(writepos+writesize)%ringsize,写入完毕后,执行步骤s007。
112.s006、对待写入音频数据按时间顺序进行分割为第一待写入音频数据和第二待写入音频数据,其中,第一待写入音频数据的长度为(ringsize-writepos),第二待写入音频数据的长度为writesize-(ringsize-writepos);先将第一待写入音频数据写入环形缓冲区中,然后再将第二待写入音频数据写入环形缓冲区中,写入完毕后,执行步骤s007
113.s007、更新写入下标的长度:writepos=(writepos+writesize)%ringsize。
114.对步骤s004-s007的过程通过一个实例进行解释和说明:
115.设定音轨采样率为48000,环形缓冲区大小为48000/10+1;缓冲区可缓冲100ms音频数据(加1为防止越界),即ringsize=4801,假设每次写入的音频数据的长度(writesize)为960。
116.1.初始时,writepos=0,初次要写入音频数据的长度为960,writepos<(writepos+writesize)%ringsize,执行步骤s005,并更新写入下标后:
117.writepos=(writepos+writesize)%ringsize=(0+960)%4801=960;
118.2.同理,writepos=960,第二次要写入音频数据的长度为960,执行步骤s005,更新写下标后:
119.writepos=1920;
120.以此类推,
121.3.第五次写入960后,执行步骤s005,更新写下标后:
122.writepos=4800;
123.4.第六次写入960时,出现:
124.writepos=4800;
125.(writepos+writesize)%ringsize=(4800+960)%4801=959;
126.writepos>(writepos+writesize)%ringsize,则执行步骤s006,先往缓冲区写1(即4801-4800)长度,再写960-1长度,然后执行步骤s007,writepos=(writepos+writesize)%ringsize=(4800+960)%4801=959。
127.如此循环。
128.s140,读取写入采集音轨节点的音频数据,记为第一音频数据,将所有的第一音频数据进行混音处理后写入回放音轨节点。
129.如果所述采集音轨节点为多个时,则对第一音频数据进行重采样;或/和,以任意一采集音轨节点为同步源,对所有的第一音频数据进行同步。
130.音轨线路利用声卡节拍(同步源)发送同步信号到没有声卡节拍的音轨节点,可以解决音源同步问题。当需要同样的声卡输出不同采样率的音频时,采集音轨节点可以通过重采样输出对应的采样率音频。
131.同步方式与上述步骤s130中类似,这里不再赘述。在混音节点中,根据音频数据的数据质量还可以包括对音频数据进行回声消除、eq(均衡器)、drc(动态压缩)等操作后再进行混音。
132.读取写入采集音轨节点的音频数据的方法,请参照图9所示,包括以下步骤:
133.s111、判断读取下标是否已经到达写入下标,如果writepos等于readpos,则判断读取下标到达写入下标,则执行步骤s112,反之,执行步骤s114;readsize为待读取音频数据的长度,ringsize为环形缓冲区的大小。
134.s112、判断同步信号是否获取,如果获取,则执行步骤s114,反之,则执行步骤s113。
135.s113、是否等待超时,如果等待超时,则返回写入长度0,反之,则执行步骤s112。
136.步骤s112和s113与上述步骤s001和步骤s002类似,这里不再赘述。
137.s114、基于writepos和readpos的大小判断待读取音频数据是否存在边界,其中,writepos为写入下标的值,readpos为读取下标的值;如果writepos大于readpos,则执行步骤s116,反之,则执行步骤s115。
138.s115、将待读取音频数据按时间顺序进行分割为第一待读取音频数据和第二待读取音频数据,其中,第一待读取音频数据的长度为(ringsize-readpos),第二待读取音频数据的长度为readsize-(ringsize-readpos);先从环形缓冲区读取第一待写入音频数据,然后再从环形缓冲区读取第二待写入音频数据,最后更新读取下标的长度:readpos=(readpos+readsize)%ringsize,并执行步骤s117;
139.s116、直接读取所述待读取音频数据,并执行步骤s117;
140.s117、更新读取下标:readpos=(readpos+readsize)%ringsize。
141.以下通过一个示例对上述步骤s114-s117的过程进行解释和说明。
142.设定音轨采样率为48000,环形缓冲区大小为48000/10+1。缓冲区可缓冲100ms音频数据(加1为防止越界)。ringsize=4801。readpos为读取下标(环形缓冲区中可读数据起始位置);每次读取960长度。
143.1.未写入数据时,readpos=writepos=0,返回读取0;
144.2.第一次写入960后,
145.readpos(0)》writepos(960),执行步骤s116,将写入的长度为960的数据读取出来(即执行一次读取拷贝),再执行步骤s117,readpos=(0+960)%4801=960。
146.3.第二次写入960,readpos(960)》writepos(1920)执行步骤s116,将写入的长度为960的数据读取出来(即执行一次读取拷贝),再执行步骤s117,readpos=(960+960)%4801=1920。
147.以此类推,
148.3.第五次写入960后,readpos=(960+3880)%4801=4800
149.4.第六次写入960后,writepos=959(由步骤s007可知),此时:
150.readpos(4800)》writepos(959),则执行步骤s115:先从缓冲区读取1(4801-4800)的长度,再读960-1的长度,在执行步骤s117:readpos=(4800+960)%4801=959。
151.如此循环。
152.写入回放音轨节点的过程与写入采集音轨节点的过程基本相同,可参考步骤s001-s007,这里不再赘述。
153.s150,读取写入回放音轨节点的音频数据,记为第二音频数据,并将所述第二音频数据发送至目标音频输出设备。
154.读取回放音轨节点音频数据的过程与读取采集音轨节点的过程基本相同,可参考步骤s111-s117,这里不再赘述。
155.当目标音频输出设备接收的第二音频数据为多个时,通过多通道音频合并机制合并该多个第二音频数据后,发送至目标音频输出设备。同时,以任意一回放音轨节点为同步源,对目标音频输出设备接收的所有的第二音频数据进行同步后再通过多通道音频合并机制合并该多个第二音频数据后,发送至目标音频输出设备。
156.需要说明的是:当目标音频输出设备的采样率与第二音频数据的采样率不同时,则需要对第二音频数据进行重采样,以匹配目标音频输出设备的采样率。
157.图10示出了本发明音频路由管理方法的一种应用场景举例,本发明并不限定输入设备和输出设备的数量,对音频路由的扩展没有限制,只需要接入系统的输入设备和输出设备拥有输入或者输出音频的能力即可。
158.其实现过程如图11和图12所示,以本地声卡和文件输入为例,首先将本地声卡采集的音频数据通过多通道音源分离机制分离形成3个通道的音频数据,分别写入采集音轨节点0、采集音轨节点1和采集音轨节点2,文件输入的音频数据直接写入采集音轨节点3,然后以采集音轨节点0(当然,也可以是其他采集音轨节点,例如这里是利用声卡节拍做同步操作,因此,同步信号参考源必须为本地声卡音轨节点,即采集音轨节点0-2)为同步源,计算并发送同步信号,使得四个采集音轨节点的数据同步,读取四个采集音轨节点中的音频数据,再通过重采样操作使得读取的四个采集音轨节点中的音频数据的采样率相同,然后再通过回声消除、eq和drc等处理后,使用混音节点进行混音后,写入回放音轨节点1、回放音轨节点2和回放音轨节点3,读取回放音轨节点1和回放音轨节点2的音频数据后通过双通道音源合并机制发送给本地声卡进行回放,回放音轨节点3的音频数据后写入网络音轨节点。
159.在一些其他的实施例中,如果目标音频输出设备的采样率与从回放音轨节点读取的音频数据的采样率不同时,则需要对回放音轨节点读取的音频数据进行重采样,例如,假设本地声卡的采样率为48000,文件输入的采样率为8000,则在混音时需要把采样音轨节点3读取的音频数据的采样率由8000通过重采样转换成48000,而在混音后,如果网络音轨节点的采样率为16000,那么需要将回放音轨节点3读取的音频数据的采样率通过重采样转换成16000后才能写入回放音轨节点3。
160.实施例二
161.请参阅图13,图13是本发明实施例公开的一种音频路由管理系统的结构示意图。如图13所示,该音频路由管理系统,可以包括:
162.确定单元210,用于确定目标音频输出设备以及向所述目标音频输出设备发送音频数据的目标音频输入设备;
163.创建单元220,用于基于所述目标音频输出设备和目标音频输入设备构建音轨线路,每条音轨线路中包括至少一个采集音轨节点、至少一个回放音轨节点和一个混音节点;
164.第一处理单元230,用于将目标音频输入设备采集的音频数据写入采集音轨节点;
165.混音单元240,用于读取写入采集音轨节点的音频数据,记为第一音频数据,将所有的第一音频数据进行混音处理后写入回放音轨节点;
166.第二处理单元250,用于读取写入回放音轨节点的音频数据,记为第二音频数据,并将所述第二音频数据发送至目标音频输出设备。
167.音频路由管理系统的架构如图14所示。音频数据从音源通过alsa声卡同步信号送往路由模块中音轨节点,该图中每一条pipe line1代表一个图10(一条路由线路)的实现,多个pipe line的组合即表示音频路由。pipe line中分配每个声卡不同的权值,并根据声卡音量大小调整声卡的权值。
168.每个声卡的音量等级表示为:
[0169][0170]
其中vn表示混音声卡中声卡n的音量等级,ln表示混音声卡中声卡n的权值,k表示混音声卡数,t表示系统限定最大音量等级。当执行混音时,需要减弱或者增强某个声卡音量等级时调整权重值即可完成对音量的智能控制,增强声音的清晰度、明亮度。
[0171]
实施例三
[0172]
请参阅图15,图15是本发明实施例公开的一种电子设备的结构示意图。如图15所示,该电子设备可以包括:
[0173]
存储有可执行程序代码的存储器310;
[0174]
与存储器310耦合的处理器320;
[0175]
其中,处理器320调用存储器310中存储的可执行程序代码,执行实施例一中的一种音频路由管理方法中的部分或全部步骤。
[0176]
本发明实施例公开一种计算机可读存储介质,其存储计算机程序,其中,该计算机程序使得计算机执行实施例一中的一种音频路由管理方法中的部分或全部步骤。
[0177]
本发明实施例还公开一种计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行实施例一中的一种音频路由管理方法中的部分或全部步骤。
[0178]
本发明实施例还公开一种应用发布平台,其中,应用发布平台用于发布计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行实施例一中的一种音频路由管理方法中的部分或全部步骤。
[0179]
在本发明的各种实施例中,应理解,所述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0180]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物单元,即可位于一个地方,或者也可以分布到多个网络单元上。可根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0181]
另外,在本发明各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0182]
所述集成的单元若以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可获取的存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或者部分,可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干请求用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明的各个实施例所述方法的部分或全部步骤。
[0183]
在本发明所提供的实施例中,应理解,“与a对应的b”表示b与a相关联,根据a可以确定b。但还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其他信息确定b。
[0184]
本领域普通技术人体可以理解所述实施例的各种方法中的部分或全部步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(read-only memory,rom)、随机存储器(random access memory,ram)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、一次可编程只读存储器(one-time programmable read-only memory,otprom)、电子抹除式可复写只读存储器(electrically-erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
[0185]
以上对本发明实施例公开的一种音频路由管理方法、系统及电子设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人体,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术特征:


1.一种音频路由管理方法,其特征在于,包括:确定目标音频输出设备以及向所述目标音频输出设备发送音频数据的目标音频输入设备;基于所述目标音频输出设备和目标音频输入设备构建音轨线路,每条音轨线路中包括至少一个采集音轨节点、至少一个回放音轨节点和一个混音节点;将目标音频输入设备采集的音频数据写入采集音轨节点;读取写入采集音轨节点的音频数据,记为第一音频数据,将所有的第一音频数据进行混音处理后写入回放音轨节点;读取写入回放音轨节点的音频数据,记为第二音频数据,并将所述第二音频数据发送至目标音频输出设备。2.根据权利要求1所述的音频路由管理方法,其特征在于,当其中一个或多个目标音频输入设备具有多通道音源时,通过多通道音源分离机制获取每个通道的音频数据,并将每个通道的音频数据写入对应的采集音轨节点中。3.根据权利要求1所述的音频路由管理方法,其特征在于,当所述采集音轨节点为多个时:对第一音频数据进行重采样;或/和,以任意一采集音轨节点为同步源,对所有的第一音频数据进行同步。4.根据权利要求1所述的音频路由管理方法,其特征在于,当目标音频输出设备接收的第二音频数据为多个时,通过多通道音频合并机制合并该多个第二音频数据后,发送至目标音频输出设备。5.根据权利要求4所述的音频路由管理方法,其特征在于,以任意一回放音轨节点为同步源,对目标音频输出设备接收的所有的第二音频数据进行同步后再通过多通道音频合并机制合并该多个第二音频数据后,发送至目标音频输出设备。6.根据权利要求1所述的音频路由管理方法,其特征在于,为每个目标音轨节点创建一个共享内存区域,并在所述共享内存区域内利用队列的数据结构构建环形缓冲区;为每个目标音轨节点设置写入下标和读取下标,其中,向所述目标音轨节点写入长度为l1的音频数据时,所述写入下标的数值增加l1,从目标音轨节点读取长度为l2的音频数据时,所述读取下标的数值增加l2;所述目标音轨节点为采集音轨节点或回放音轨节点。7.根据权利要求6所述的音频路由管理方法,其特征在于,将音频数据写入目标音轨节点的方法,包括:基于writepos和(writepos+writesize)%ringsize的大小判断写入下标增加待写入音频数据后是否超出边界,其中,writepos为写入下标的值,writesize为待写入待写入音频数据的长度,ringsize为环形缓冲区的大小;如果writepos小于(writepos+writesize)%ringsize,则将所述待写入音频数据直接写入环形缓冲区中,并更新写入下标的长度:writepos=(writepos+writesize)%ringsize;如果writepos大于(writepos+writesize)%ringsize,则对待写入音频数据按时间顺序进行分割为第一待写入音频数据和第二待写入音频数据,其中,第一待写入音频数据的
长度为(ringsize-writepos),第二待写入音频数据的长度为writesize-(ringsize-writepos);先将第一待写入音频数据写入环形缓冲区中,然后再将第二待写入音频数据写入环形缓冲区中,最后更新写入下标的长度:writepos=(writepos+writesize)%ringsize。8.根据权利要求6所述的音频路由管理方法,其特征在于,读取所述目标音轨节点中音频数据的方法,包括:基于writepos和readpos的大小判断待读取音频数据是否存在边界,其中,writepos为写入下标的值,readpos为读取下标的值;如果writepos大于readpos,则直接读取所述待读取音频数据,并更新读取下标:readpos=(readpos+readsize)%ringsize,其中,readsize为待读取音频数据的长度,ringsize为环形缓冲区的大小;如果writepos小于readpos,则将待读取音频数据按时间顺序进行分割为第一待读取音频数据和第二待读取音频数据,其中,第一待读取音频数据的长度为(ringsize-readpos),第二待读取音频数据的长度为readsize-(ringsize-readpos);先从环形缓冲区读取第一待写入音频数据,然后再从环形缓冲区读取第二待写入音频数据,最后更新读取下标的长度:readpos=(readpos+readsize)%ringsize。9.一种音频路由管理系统,其特征在于,其包括:确定单元,用于确定目标音频输出设备以及向所述目标音频输出设备发送音频数据的目标音频输入设备;创建单元,用于基于所述目标音频输出设备和目标音频输入设备构建音轨线路,每条音轨线路中包括至少一个采集音轨节点、至少一个回放音轨节点和一个混音节点;第一处理单元,用于将目标音频输入设备采集的音频数据写入采集音轨节点;混音单元,用于读取写入采集音轨节点的音频数据,记为第一音频数据,将所有的第一音频数据进行混音处理后写入回放音轨节点;第二处理单元,用于读取写入回放音轨节点的音频数据,记为第二音频数据,并将所述第二音频数据发送至目标音频输出设备。10.一种电子设备,其特征在于,包括:存储有可执行程序代码的存储器;与所述存储器耦合的处理器;所述处理器调用所述存储器中存储的所述可执行程序代码,用于执行权利要求1至8任一项所述的一种音频路由管理方法。

技术总结


本发明实施例涉及音频处理技术领域,公开了一种音频路由管理方法、系统及电子设备。该方法包括:确定目标音频输出设备以及向目标音频输出设备发送音频数据的目标音频输入设备;构建音轨线路,每条音轨线路中包括至少一个采集音轨节点、至少一个回放音轨节点和一个混音节点;将目标音频输入设备采集的音频数据写入采集音轨节点;读取写入采集音轨节点的音频数据,记为第一音频数据,将所有的第一音频数据进行混音处理后写入回放音轨节点;读取写入回放音轨节点的音频数据,记为第二音频数据,并将第二音频数据发送至目标音频输出设备。实施本发明实施例,可以提高对讲的实时性,提升了客户体验。客户体验。客户体验。


技术研发人员:

谢亨 胡松平

受保护的技术使用者:

世邦通信股份有限公司

技术研发日:

2022.08.04

技术公布日:

2022/11/8

本文发布于:2024-09-22 00:50:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/11167.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:音频   音轨   节点   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议