1.本技术涉及音频处理技术领域,具体而言,涉及一种实时混音方法及装置。
背景技术:2.目前,市面上存在很多对多个音源进行混音处理的音频设备。但是,但在嵌入式设备中,该种混音处理却由于硬件资源的限制,往往很难实现。为了解决这种问题,以往尝试了借助多个单独的音频输出设备来实现该功能,但是这种方式又提高了系统复杂度和使用成本,并且使用体验也较差。
技术实现要素:3.本技术实施例的目的在于提供一种实时混音方法及装置,能够降低系统复杂度和使用成本,并且能够使得使用体验更佳。
4.本技术实施例第一方面提供了一种实时混音方法,所述方法包括:
5.获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量;所述多个通道数据长度和所述多个通道数据偏移量一一对应;
6.根据所述多个通道数据长度和所述多个通道数据偏移量进行计算,得到与所述多个音频通道相对应的多个通道数据未混音长度;
7.将所述多个通道数据未混音长度中最小通道数据未混音长度对应的通道数据确定为最小长度数据;
8.以所述最小长度数据为基准,对所述多个音频通道中的多个通道数据进行混音处理并记录相应的偏移量,得到混音结果。
9.在上述实现过程中,该方法可以优先获取多个音频通道中的多个音频的数据长度和因为混音而产生的数据偏移量,然后根据上述内容计算出每个通道剩余未进行混音处理的数据长度,并根据最短长度对所有音频通道中的音频数据进行混音处理并记录相应的偏移量,从而得到最终的混音结果。可见,实施这种实施方式,能够根据当前使用的音频数据进行简单的全通道音频混音,从而能够大幅降低系统复杂度和使用成本,并且还能够提高音频输出效果,使得音频收听体验更佳。
10.进一步地,所述方法还包括:
11.对所述混音结果进行缓存,得到缓存结果;
12.唤醒处于睡眠状态的所述多个音频通道。
13.在上述实现过程中,该方法可以将混音结果存入ram中,然后再进一步唤醒因为等待混音而处于睡眠状态的所有音频通道。可见,实施这种实施方式,能够将混音结果预存在缓存当中,然后再通过缓存进行混音结果的输出,从而能够有效保证混音结果输出连贯性,提高音频收听体验。
14.进一步地,所述方法还包括:
15.判断混音器等待计数器和音频通道计数器是否等值;
16.当所述混音器等待计数器和所述音频通道计数器等值时,执行所述的获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量的步骤。
17.在上述实现过程中,该方法可以在混音器等待计数器和音频通道计数器获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量。可见,实施这种实施方式,能够在所有待混音的音频数据都进入通道时再进行统一的混音处理,从而避免每进入一个音频进行一次混音操作的这种不必要操作,进而能够对音频数据进行一步到位的混音处理,保证混音效果。
18.进一步地,所述判断混音器等待计数器和音频通道计数器是否等值的步骤之前,所述方法还包括:
19.获取原始音频数据;
20.判断所述原始音频数据是否符合pcm格式;
21.当所述原始音频数据不符合pcm格式时,对所述原始音频数据进行解码处理,得到pcm音频数据;
22.当所述pcm音频数据的位宽、采样频率以及声道三者均与预设值相同时,将所述pcm音频数据置入音频通道。
23.在上述实现过程中,该方法可以对原始音频数据进行数据格式调整,并检测调整后的音频数据是否符合预设的要求。如果调整后的音频数据符合预设的要求则置入音频通道,否则重新获取原始音频数据并重新进行调整和判断。可见,实施这种实施方式,能够对输入的音频数据进行严格的数据处理与识别,从而保证后续处理的过程可以根据特定要求的音频数据进行有效,进而能够保证整体混音效果。
24.进一步地,所述当所述pcm音频数据的位宽、采样频率以及声道三者均与预设值相同时,将所述pcm音频数据置入音频通道的步骤包括:
25.当所述pcm音频数据的位宽、采样频率以及声道三者均与预设值相同时,判断音频通道计数器中的值是否为一;
26.当所述音频通道计数器中的值为一时,通过音频输出设备对所述pcm音频数据进行输出;
27.当所述音频通道计数器中的值不为一时,将所述pcm音频数据置入音频通道,并控制混音器等待计数器进行自加一处理。
28.在上述实现过程中,该方法能够根据音频通道计数器中的数值对pcm音频数据进行是否置入或直接输出的判断。可见,实施这种实施方式,能够在音频数据只有一个时,对音频数据直接进行输出;反之,则将音频数据置入音频通道追踪,并控制混音器等待计数器进行自加一处理,以使混音器等待计数器和音频通道计数器等值时进行后续混音处理。
29.本技术实施例第二方面提供了一种实时混音装置,所述实时混音装置包括:
30.获取单元,用于获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量;所述多个通道数据长度和所述多个通道数据偏移量一一对应;
31.计算单元,用于根据所述多个通道数据长度和所述多个通道数据偏移量进行计算,得到与所述多个音频通道相对应的多个通道数据未混音长度;
32.确定单元,用于将所述多个通道数据未混音长度中最小通道数据未混音长度对应的通道数据确定为最小长度数据;
33.处理单元,用于以所述最小长度数据为基准,对所述多个音频通道中的多个通道数据进行混音处理并记录相应的偏移量,得到混音结果。
34.在上述实现过程中,该实时混音装置能够根据当前使用的音频数据进行简单的全通道音频混音,从而能够大幅降低系统复杂度和使用成本,并且还能够提高音频输出效果,使得音频收听体验更佳。
35.进一步地,所述实时混音装置还包括:
36.缓存单元,用于对所述混音结果进行缓存,得到缓存结果;
37.输出单元,用于唤醒处于睡眠状态的所述多个音频通道。
38.在上述实现过程中,该装置能够将混音结果预存在缓存当中,然后再通过缓存进行混音结果的输出,从而能够有效保证混音结果输出连贯性,提高音频收听体验。
39.进一步地,所述实时混音装置还包括:
40.判断单元,用于判断混音器等待计数器和音频通道计数器是否等值;
41.所述获取单元,用于当所述混音器等待计数器和所述音频通道计数器等值时,获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量。
42.在上述实现过程中,该装置能够在所有待混音的音频数据都进入通道时再进行统一的混音处理,从而避免每进入一个音频进行一次混音操作的这种不必要操作,进而能够对音频数据进行一步到位的混音处理,保证混音效果。
43.本技术实施例第三方面提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本技术实施例第一方面中任一项所述的实时混音方法。
44.本技术实施例第四方面提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本技术实施例第一方面中任一项所述的实时混音方法。
附图说明
45.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
46.图1为本技术实施例提供的一种实时混音方法的流程示意图;
47.图2为本技术实施例提供的另一种实时混音方法的流程示意图;
48.图3为本技术实施例提供的一种实时混音装置的结构示意图;
49.图4为本技术实施例提供的另一种实时混音装置的结构示意图。
具体实施方式
50.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
51.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
52.实施例1
53.请参看图1,图1为本技术实施例提供了一种实时混音方法的流程示意图。其中,该实时混音方法包括:
54.s101、获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量;多个通道数据长度和多个通道数据偏移量一一对应。
55.本实施例中,音频通道中存放着音频数据。
56.在本实施例中,通道数据长度为上述音频数据的总长度。
57.在本实施例中,通道数据偏移量为上述音频数据已经输出完的数据长度。
58.s102、根据多个通道数据长度和多个通道数据偏移量进行计算,得到与多个音频通道相对应的多个通道数据未混音长度。
59.本实施例中,该方法可以遍历所有音频通道,并通过公式:通道数据长度
‑
偏移量=未混音长度,得到通道数据未混音长度。
60.本实施例中,该方法可以在有需要的时候,根据pcm的预设值计算出音频数据播放时长。
61.s103、将多个通道数据未混音长度中最小通道数据未混音长度对应的通道数据确定为最小长度数据。
62.本实施例中,该方法可以再多个通道数据剩余长中找出最小长度数据len。
63.本实施例中,在实时声音输入的情况下(如麦克风输入),应当混音后及时送出才能保证声音连续,选择最短数据混音的原因在于确保多路声音能够同时混音。
64.在本实施例中,在非实时输入的情况下(如播放mp3,视频等)。此时如果通过扬声器输出,获取声音数据的速度往往比扬声器输出的速度快的多,如果硬件声音缓冲区满,则应当重试直到成功写入硬件缓冲区为止。
65.在本实施例中,该方法在上述步骤之后,还可以把所有通道的缓冲区加上相应的偏移量储存到一个数组,然后使得所有通道偏移量加len,并进行混音处理。该混音后的数据存储在数组的第一个缓冲区,并向音频输出设备输出混音后的数据,此时唤醒所有通道。
66.在本实施例中,如果通道数据全部处理完毕后进行自减一操作,每次至少有一个通道是处理完毕的,但不排除有多个通道剩余数据是最小长度,多个通道处理完需要多次进行自减一操作。
67.s104、以最小长度数据为基准,对多个音频通道中的多个通道数据进行混音处理并记录相应的偏移量,得到混音结果。
68.本技术实施例中,该方法的执行主体主要是嵌入式设备。而嵌入式设备主要部分包括供电电源、cpu处理器、以太网口、串口、usb、sd卡接口、mic输入接口、hdmi输出接口、模拟音频输出接口、数字音频输出接口、flash、音频重采样器、混音器。
69.本技术实施例中,该方法的执行主体可以为计算机、服务器等计算装置,对此本实施例中不作任何限定。
70.在本技术实施例中,该方法的执行主体还可以为智能手机、平板电脑等智能设备,对此本实施例中不作任何限定。
71.可见,实施本实施例所描述的实时混音方法,能够优先获取多个音频通道中的多个音频的数据长度和因为混音而产生的数据偏移量,然后根据上述内容计算出每个通道剩
余未进行混音处理的数据长度,并根据最短长度对所有音频通道中的音频数据进行混音处理并记录相应的偏移量,从而得到最终的混音结果。可见,实施这种实施方式,能够根据当前使用的音频数据进行简单的全通道音频混音,从而能够大幅降低系统复杂度和使用成本,并且还能够提高音频输出效果,使得音频收听体验更佳。另一方面,该种方法能够解决嵌入式设备无法同时输出多个音源的问题,从而使得占用资源更少,智能化程度更高。
72.实施例2
73.请参看图2,图2为本技术实施例提供的一种实时混音方法的流程示意图。如图2所示,其中,该实时混音方法包括:
74.s201、判断混音器等待计数器和音频通道计数器是否等值,若是,则执行步骤s202~s207;若否,则结束本流程。
75.作为一种可选的实施方式,步骤s201之前,该方法还包括:
76.获取原始音频数据;
77.判断原始音频数据是否符合pcm格式;
78.当原始音频数据不符合pcm格式时,对原始音频数据进行解码处理,得到pcm音频数据;
79.当pcm音频数据的位宽、采样频率以及声道三者均与预设值相同时,将pcm音频数据置入音频通道。
80.本实施例中,音频数据可以为音视频数据。其中音视频数据包括音频数据。
81.在本实施例中,该方法可以从音频文件、网络、串口、mic输入等文件或设备读取原始的音视频数据,如果该数据非pcm(脉冲编码调制)数据,则可以通过解码得到pcm音频数据。
82.作为一种进一步可选的实施方式,当pcm音频数据的位宽、采样频率以及声道三者均与预设值相同时,将pcm音频数据置入音频通道的步骤包括:
83.当pcm音频数据的位宽、采样频率以及声道三者均与预设值相同时,判断音频通道计数器中的值是否为一;
84.当音频通道计数器中的值为一时,通过音频输出设备对pcm音频数据进行输出;
85.当音频通道计数器中的值不为一时,将pcm音频数据置入音频通道,并控制混音器等待计数器进行自加一处理。
86.实施这种实施方式,能够在pcm音频数据的位宽、采样频率、声道中任意一个与预设值不相等时,将pcm音频数据送到重采样器,直至处理成和预设值完全相同的pcm音频数据。
87.同时,实施这种实施方式,还能够在音频通道计数器为一时,直接通过音频输出设备输出音频;否则混音器等待计数器加一。
88.作为一种可选的实施方式,在音频输出设备没有初始化的时候,可以优先按照预设的位宽、采样频率、声道对音频输出设备进行初始化,并同时将音频通道计数器、混音器等待计数器和通道退出计数器置零。
89.在本实施例中,每打开一个音频通道,音频通道计数器加一。
90.在本实施例中,如果通道退出标志为一且音频通道计数器为一,则对音频输出设备进行反初始化处理,同时退出音频通道;然而,如果通道退出标志为一且音频通道计数器
不为一,则音频通道退出计数器加一,音频通道计数器减一,并随机唤醒一个通道,同时退出该音频通道。
91.作为一种可选的实施方式,该方法还可以包括:
92.如果混音器等待计数器和音频通道计数器不等值,则进入等待。
93.s202、获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量;多个通道数据长度和多个通道数据偏移量一一对应。
94.s203、根据多个通道数据长度和多个通道数据偏移量进行计算,得到与多个音频通道相对应的多个通道数据未混音长度。
95.s204、将多个通道数据未混音长度中最小通道数据未混音长度对应的通道数据确定为最小长度数据。
96.s205、以最小长度数据为基准,对多个音频通道中的多个通道数据进行混音处理并记录相应的偏移量,得到混音结果。
97.s206、对混音结果进行缓存,得到缓存结果。
98.s207、唤醒处于睡眠状态的多个音频通道。
99.本实施例中,音频通道从等待中被唤醒,如果通道退出计数器大于一,则将通道退出计数器置零。
100.实施这种实施方式,能够很好地解决资源较少的嵌入式设备无法输出多个音源的问题。同时,该方法还能够实现对多路音源实时混音的效果,并具有低延迟、输出流畅、无爆音的特点;其次,该方法可以根据实际启动的通道数,自动选择是否开启混音,从而能够提高系统效率;然后,该方法使用了等待唤醒机制,等待时无需消耗cpu时间,降低了cpu性能要求,提高了处理速度。与此同时,该方法还支持文件、串口、网络流等多种输入方式,提高了数据输入的普适性;可以根据实际情况替换的混音器内部的混音算法,还可以满足高性能或高音质的需求;最后,混音后的数据流不仅可以直接通过硬件输出,还可以存储为文件,使得嵌入式设备具有音频文件的混音处理输出能力。
101.可见,实施本实施例所描述的实时混音方法,能够根据当前使用的音频数据进行简单的全通道音频混音,从而能够大幅降低系统复杂度和使用成本,并且还能够提高音频输出效果,使得音频收听体验更佳。另外,实施该方法还能够根据实际启动的通道数自动切换混音与不混音两种模式,并且混音后数据直接存储在已经存在的通道缓冲区,无需申请额外的内存,线程/任务处于等待过程不占用系统资源,因此实施这种实施方式能够使得智能化程度更高、占用资源更少。
102.实施例3
103.请参看图3,图3为本技术实施例提供的一种实时混音装置的结构示意图。如图3所示,该实时混音装置包括:
104.获取单元310,用于获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量;多个通道数据长度和多个通道数据偏移量一一对应;
105.计算单元320,用于根据多个通道数据长度和多个通道数据偏移量进行计算,得到与多个音频通道相对应的多个通道数据未混音长度;
106.确定单元330,用于将多个通道数据未混音长度中最小通道数据未混音长度对应的通道数据确定为最小长度数据;
107.处理单元340,用于以最小长度数据为基准,对多个音频通道中的多个通道数据进行混音处理并记录相应的偏移量,得到混音结果。
108.本技术实施例中,对于实时混音装置的解释说明可以参照实施例1或实施例2中的描述,对此本实施例中不再多加赘述。
109.可见,实施本实施例所描述的实时混音装置,能够根据当前使用的音频数据进行简单的全通道音频混音,从而能够大幅降低系统复杂度和使用成本,并且还能够提高音频输出效果,使得音频收听体验更佳。
110.实施例4
111.请一并参阅图4,图4是本技术实施例提供的一种实时混音装置的结构示意图。其中,图4所示的实时混音装置是由图3所示的实时混音装置进行优化得到的。如图4所示,实时混音装置还包括:
112.缓存单元350,用于对混音结果进行缓存,得到缓存结果;
113.输出单元360,用于唤醒处于睡眠状态的多个音频通道。
114.作为一种可选的实施方式,实时混音装置还包括:
115.判断单元370,用于判断混音器等待计数器和音频通道计数器是否等值;
116.获取单元310,用于当混音器等待计数器和音频通道计数器等值时,获取与多个音频通道相对应的多个通道数据长度和多个通道数据偏移量。
117.作为一种可选的实施方式,实时混音装置还包括:
118.获取单元310,还用于获取原始音频数据;
119.判断单元370,还用于判断原始音频数据是否符合pcm格式;
120.解码单元380,用于当原始音频数据不符合pcm格式时,对原始音频数据进行解码处理,得到pcm音频数据;
121.置入单元390,用于当pcm音频数据的位宽、采样频率以及声道三者均与预设值相同时,将pcm音频数据置入音频通道。
122.作为一种可选的实施方式,置入单元390包括:
123.第一子单元391,用于当pcm音频数据的位宽、采样频率以及声道三者均与预设值相同时,判断音频通道计数器中的值是否为一;
124.第二子单元392,用于当音频通道计数器中的值为一时,通过音频输出设备对pcm音频数据进行输出;
125.第三子单元393,用于当音频通道计数器中的值不为一时,将pcm音频数据置入音频通道,并控制混音器等待计数器进行自加一处理。
126.本技术实施例中,对于实时混音装置的解释说明可以参照实施例1或实施例2中的描述,对此本实施例中不再多加赘述。
127.可见,实施本实施例所描述的实时混音装置,能够根据当前使用的音频数据进行简单的全通道音频混音,从而能够大幅降低系统复杂度和使用成本,并且还能够提高音频输出效果,使得音频收听体验更佳。
128.本技术实施例提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本技术实施例1或实施例2中任一项实时混音方法。
129.本技术实施例提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本技术实施例1或实施例2中任一项实时混音方法。
130.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
131.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
132.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read
‑
only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
133.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
134.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
135.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。