可编程图形处理器及其对多路音频进行混音的方法

文档序号:2825987阅读:163来源:国知局
可编程图形处理器及其对多路音频进行混音的方法
【专利摘要】本发明公开了一种可编程图形处理器及其对多路音频进行混音的方法,涉及数字信号处理领域。该方法包括:将一段时间内要播放的N路音频数据存储至输入纹理缓冲区,将输入的N路音频数据绑定为可编程图形处理器的纹理数据;可编程图形处理器同时对各路音频数据进行预处理,在预处理过程中根据每一路音频数据的编码方式、采样率或音量,对该路音频数据进行相应的解码、重采样或衰减中的至少一项操作;可编程图形处理器将预处理后的各路音频数据叠加为一路音频信号,将该路音频信号存储至输出纹理缓冲区,并输出到播放设备。本发明利用可编程图形处理器强大的并行运算能力,大幅降低了混音时延。
【专利说明】可编程图形处理器及其对多路音频进行混音的方法

【技术领域】
[0001] 本发明涉及数字信号处理领域,特别涉及一种利用可编程图形处理器的并行处理 能力对多路音频进行混音的方法和可编程图形处理器。

【背景技术】
[0002] 混音是指同时向混音设备输入多路音频流信号,并将多路音频流信号最终混合为 一路音频流信号输出的过程。混音器通常分为硬件混音与软件混音。
[0003] 硬件混音采用特殊的声音处理设备,如专业的混音设备或者声卡等进行预处理及 混音。专业混音设备,如Pioneer SVM-1000VDJ混音台,体积庞大,价格昂贵,适用于录音棚 或演播厅等场合,不适合个人便携式播放设备使用。声卡混音是个人电脑(简称PC)最常采 用的混音方式,其通过定制的音频处理集成电路芯片进行多路音频的解码、重采样、衰减, 较先进的声卡对于麦克风输入部分还能够支持回声抑制,环境噪声抑制,语音增强等功能。 但声卡混音的对象主要是PC中的线路输入、PC喇叭、麦克风、CD回放、MIDI回放等多个物 理设备产生的音频,对于多个音频软件同时播放的多路音频的混音,则需要由操作系统进 行软件混音。
[0004] 软件混音是采用软件编程方式,使用中央处理器(CPU)进行声音信号处理及混音。 在进行混音的过程中,音频也会经历衰减、重采样等处理。操作系统混音属于软件混音的一 种实现方式,音频播放程序通过调用操作系统提供的音频播放应用程序接口(API)向操作 系统提交需要播放的音频数据,并由操作系统统一进行混音后,输出到声卡或音频播放设 备。软件混音是使用CPU的计算能力来实现多路音频的混音处理,并不依赖于特定硬件。在 操作系统的计算负荷较重,或并发音频路数过大的情况下,如多人游戏,多方通话等,就会 出现混音延迟的情形,从而影响混音效果。
[0005] 目前许多软硬件厂商也提出了许多加速上述混音过程,降低混音及声音处理延迟 的技术。例如,部分采用具有音频处理芯片的高档独立声卡具有硬件加速混音功能,可明显 降低CPU占用率。但这种方式会明显增加设备的制造成本和体积,对于目前个人电脑、智 能手机等普遍采用廉价主板集成声卡或片上集成(SoC)声卡等设备并不适用。微软提出的 DirectSound?技术,是通过提供一组特殊的API,直接读写声卡驱动的音频缓冲区,从而达 到降低内存访问延迟,提高混音效率的目的。但这些技术本质上仍然受限于CPU的计算能 力。
[0006] 因此,有必要提出一种适合便携设备、不依赖操作系统计算能力就能够降低混音 时延的混音技术。


【发明内容】

[0007] 本发明实施例所要解决的一个技术问题是:提出一种利用可编程图形处理器的 并行处理能力对多路音频进行混音的方法,以解决目前便携设备依赖操作系统计算能力进 行混音,从而导致在操作系统计算负荷较重或并发音频路数过大情况下出现混音延迟的问 题。
[0008] 本发明实施例的一个方面提供了一种基于可编程图形处理器对多路音频进行混 音的方法,包括:将一段时间内要播放的N路音频数据存储至输入纹理缓冲区,将输入的N 路音频数据绑定为可编程图形处理器的纹理数据;可编程图形处理器同时对各路音频数据 进行预处理,在预处理过程中根据每一路音频数据的编码方式、采样率或音量,对该路音频 数据进行相应的解码、重采样或衰减中的至少一项操作;可编程图形处理器将预处理后的 各路音频数据叠加为一路音频信号,将该路音频信号存储至输出纹理缓冲区,并输出到播 放设备。
[0009] 本发明实施例的另一个方面提供了一种对多路音频进行混音的可编程图形处理 器,包括:纹理数据绑定模块,用于将一段时间内要播放的N路音频数据存储至输入纹理缓 冲区,将输入的N路音频数据绑定为可编程图形处理器的纹理数据;预处理模块,用于同时 对各路音频数据进行预处理,在预处理过程中根据每一路音频数据的编码方式、采样率或 音量,对该路音频数据进行相应的解码、重采样或衰减中的至少一项操作;叠加输出模块, 用于将预处理后的各路音频数据叠加为一路音频信号,将该路音频信号存储至输出纹理缓 冲区,并输出到播放设备。
[0010] 本发明通过将输入的N路音频数据绑定为可编程图形处理器的纹理数据,利用可 编程图形处理器强大的并行运算能力,同时对各路音频数据进行解码、重采样或衰减等预 处理,最后将预处理后的各路音频数据叠加为一路音频信号,并输出到播放设备进行播放, 整个混音过程利用可编程图形处理器强大的并行运算能力,不再依赖操作系统计算能力, 因此,即使在操作系统计算负荷较重的情况下,可编程图形处理器也可以实时地完成混音, 从而大幅降低了混音时延,提高用户体验。并且,可编程图形处理器能够对音频进行解码、 重米样、哀减等复杂处理,从而在提1?混首实时性的基础上还提1? 了首频质量。本发明提出 的混音方案特别适合当前配备有强大的可编程图形处理器但集成声卡相对较弱的便携多 媒体播放设备,如个人电脑、智能手机等。
[0011] 通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其 优点将会变得清楚。

【专利附图】

【附图说明】
[0012] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。
[0013] 图1为本发明基于可编程图形处理器对多路音频进行混音的原理示意图。
[0014] 图2为本发明基于可编程图形处理器对多路音频进行混音的方法一个实施例的 流程示意图。
[0015] 图3为本发明可编程图形处理器对各路音频数据进行预处理一个实施例的流程 示意图。
[0016] 图4为本发明对多路音频进行混音的可编程图形处理器一个实施例的结构示意 图。
[0017] 图5为本发明对多路音频进行混音的可编程图形处理器另一个实施例的结构示 意图。

【具体实施方式】
[0018] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下 对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使 用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提 下所获得的所有其他实施例,都属于本发明保护的范围。
[0019] 图1为本发明基于可编程图形处理器(简称GPU)对多路音频进行混音的原理示意 图。如图1所示,混音是指同时向混音设备输入多路音频流信号,并将多路音频流信号最终 混合为一路音频流信号输出的过程。
[0020] 针对目前大部分便携多媒体播放设备如个人电脑、智能手机等,配备有性能较强 大的可编程图形处理器(例如,英伟达的Geforce、Tegra系列,ATI的Radeon系列,ARM的 Mali系列,高通的Andreno系列,Vivante的gc系列,Imagenation的PowerVR系列等支持 CUDA,GLSL,OpenCL等GPU通用计算编程语言的图形芯片),但集成声卡性能相对较弱的情 况,本发明提出一种利用可编程图形处理器进行多路音频混音的方案,其优势在于借助可 编程图形处理器强大的并行运算能力,摆脱对操作系统计算能力的依赖,在操作系统计算 负荷较重的情况下,可编程图形处理器也可以实时地完成混音,从而大幅降低混音时延,提 高用户体验。另一方面,可编程图形处理器还能够对音频进行如解码、重采样、衰减等更复 杂的处理,从而在提1?混首实时性的基础上还提1? 了首频质量。下面对本发明提出的混首 方案进行详细说明。
[0021] 图2为本发明基于可编程图形处理器对多路音频进行混音的方法一个实施例的 流程示意图。如图2所示,该实施例的混音方法包括以下步骤:
[0022] 步骤102,将一段时间内要播放的N路音频数据存储至输入纹理缓冲区,将输入的 N路音频数据绑定为可编程图形处理器的纹理数据。
[0023] 假设第i路音频数据(可能经过a律或μ律压缩)为Si (j),j = l. . . kp则将每一路 长度为IX &的音频数据存储为二维纹理数组B (尺寸为NXK)的第i行的第1个至第& 个元素,其中,N表示音频路数,K表示所有音频数据的最大长度。第i路输入音频的第η个 样本对应的纹理坐标为(i,η),第η个输出音频样本点对应的纹理坐标为(1,η)。
[0024] 步骤104,可编程图形处理器同时对各路音频数据进行预处理,在预处理过程中根 据每一路音频数据的编码方式、采样率或音量,对该路音频数据进行相应的解码、重采样或 衰减中的至少一项操作。
[0025] 步骤106,可编程图形处理器将预处理后的各路音频数据叠加为一路音频信号,将 该路音频信号存储至输出纹理缓冲区,并输出到播放设备。
[0026] 根据可编程图形处理器的并行处理特性,每个输出音频样本点的计算是并行执行 的。因此,此处仅示例性地给出一个输出样本的计算方法,其他输出样本的计算方法可以参 考该个输出样本的计算方法。
[0027] 图3为本发明可编程图形处理器对各路音频数据进行预处理一个实施例的流程 示意图。如图3所示,该实施例的预处理过程包括以下步骤:
[0028] 步骤202,在对各路音频数据进行预处理之前,计算第η个输出音频样本点所需的 第i路输入音频的样本值在输入纹理缓冲区中的坐标(X,y),
[0029] x=i,
[0030] y=nXki/N,
[0031] 其中,为第i路输入音频的元素数量,i e N, x为整数,y为整数或小数,N表示 音频路数。
[0032] 步骤204,根据坐标(X,y)进行重采样操作。
[0033] 由于理缓冲区的作用类似于数组,可以根据指定的坐标访问(读/写)其中存放的 数值。但不同点在于,如果读取的坐标不是整数,可编程图形处理器会根据邻近整数坐标位 置的样本值插值得到该位置的取值。
[0034] 本发明提出的一种示例性的重采样操作包括:
[0035] (1)从输入纹理缓冲区中获取位于坐标(x,|_y」)和(χ,「>,1)两点处的样本值分别为 Sl和s2,其中,[_」表示向下取整,「1表示向上取整。
[0036] -种纹理映射方法为,假设第i路音频数据(可能经过a律或μ律压缩)SSi(j), j=l. . . h,则将每一路长度为lXki的音频数据存储为二维纹理数组B (尺寸为NXK)的第 i行的第1个至第h个元素,其中,N表示音频路数,K表示所有音频数据的最大长度。第i 路输入音频的第η个样本对应的纹理坐标为(i,n),第η个输出音频样本点对应的纹理坐标 为(1,η)。
[0037] (2)如果Si和s2未经过编码,根据公式[_y」)s2 +(「/!->')Λ·1,进行插值运算 得到(X,y)的样本值s ;
[0038] (3)如果Sl和s2经过编码,根据公式Λ' = +(「/!->,),,进行插值运算得 至|J (X,y)的样本值S,s' i为Sl解码后的样本值,s' 2为s2解码后的样本值。
[0039] 步骤206,如果Sl和s2经过编码,在重采样之前,对音频数据进行解码操作。
[0040] 本发明提出的一种示例性的解码操作包括:
[0041] (1)将a律或/和μ律解码查找表数组绑定为可编程图形处理器的纹理数据,该 纹理位于坐标(l,u)处的值为u对应的解码输出,u的取值范围为[0-255]。a律解码查找 表如表1所示,表1附于说明书最后一页。类似的,根据μ率编码前后样本值的对应关系, 可以构造 μ率的解码查找表。
[0042] (2)计算音频样本值81在&律或μ律解码查找表数组对应纹理缓冲区的坐标( Ul, Vl),Ul=l,Vl=Sl,根据坐标( Ul,Vl)通过a律或μ律解码查找表进行解码得到解码后的样本 值sV
[0043] (3)计算音频样本值82在&律或μ律解码查找表数组对应纹理缓冲区的坐标(u 2, v2),u2=l,v2=S2,根据坐标(u 2,v2)通过a律或μ律解码查找表进行解码得到解码后的样本 值 s' 2。
[0044] 步骤208,对(X,y)的样本值s进行衰减,具体包括:
[0045] 将(X,y)的样本值s乘以第i路音频的衰减因子^得到衰减后的音频样本 值,并将衰减后的音频样本值叠加至输出样本0。采用计算机程序实现的公式表示为: 〇=〇+ a s〇
[0046] 下面结合具体实例对本发明的混音方法作进一步阐述。
[0047]

【权利要求】
1. 一种基于可编程图形处理器对多路音频进行混音的方法,包括: 将一段时间内要播放的N路音频数据存储至输入纹理缓冲区,将输入的N路音频数据 绑定为可编程图形处理器的纹理数据; 可编程图形处理器同时对各路音频数据进行预处理,在预处理过程中根据每一路音频 数据的编码方式、采样率或音量,对该路音频数据进行相应的解码、重采样或衰减中的至少 一项操作; 可编程图形处理器将预处理后的各路音频数据叠加为一路音频信号,将该路音频信号 存储至输出纹理缓冲区,并输出到播放设备。
2. 根据权利要求1所述的方法,其特征在于,所述可编程图形处理器同时对各路音频 数据进行预处理之前还包括: 计算第η个输出音频样本点所需的第i路输入音频的样本值在输入纹理缓冲区中的坐 标(X,y), x=i y=nXki/N 其中,h为第i路输入音频的元素数量,i e N, x为整数,y为整数或小数。
3. 根据权利要求2所述的方法,其特征在于,所述可编程图形处理器根据每一路音频 数据的采样率,对该路音频数据进行重采样操作包括: 从输入纹理缓冲区中获取位于坐标(x,bd)和两点处的样本值分别为Sl和s2, U表示向下取整,「1表示向上取整; 如果Sl和s2未经过编码,根据公式i = ,进行插值运算得到(X, y)的样本值s ; 如果sjP 82经过编码,根据公式i = 进行插值运算得到(X, y) 的样本值S,s' i为Sl解码后的样本值,s' 2为s2解码后的样本值。
4. 根据权利要求3所述的方法,其特征在于,如果Sl和s2经过编码,在进行插值运算 之前,所述可编程图形处理器根据每一路音频数据的编码方式,对该路音频数据进行解码 操作,具体包括: 将a律或/和μ律解码查找表数组绑定为可编程图形处理器的纹理数据; 计算音频样本值81在a律或μ律解码查找表数组对应纹理缓冲区的坐标(Ul,Vl), Ul=l,Vl=Sl,根据坐标(Ul, Vl)通过a律或μ律解码查找表进行解码得到解码后的样本值 S' 1 ; 计算音频样本值82在a律或μ律解码查找表数组对应纹理缓冲区的坐标(u2, v2), u2=l,v2=s2,根据坐标(u2, v2)通过a律或μ律解码查找表进行解码得到解码后的样本值 s 2〇
5. 根据权利要求3所述的方法,其特征在于,所述可编程图形处理器根据每一路音频 数据的音量,对该路音频数据进行衰减包括: 将(X,y)的样本值s乘以第i路音频的衰减因子ai得到衰减后的音频样本值,并将 衰减后的音频样本值叠加至输出样本。
6. -种对多路音频进行混音的可编程图形处理器,包括: 纹理数据绑定模块,用于将一段时间内要播放的N路音频数据存储至输入纹理缓冲 区,将输入的N路音频数据绑定为可编程图形处理器的纹理数据; 预处理模块,用于同时对各路音频数据进行预处理,在预处理过程中根据每一路音频 数据的编码方式、采样率或音量,对该路音频数据进行相应的解码、重采样或衰减中的至少 一项操作; 叠加输出模块,用于将预处理后的各路音频数据叠加为一路音频信号,将该路音频信 号存储至输出纹理缓冲区,并输出到播放设备。
7. 根据权利要求6所述的可编程图形处理器,其特征在于,所述可编程图形处理器还 包括: 坐标计算模块,用于对各路音频数据进行预处理之前,计算第η个输出音频样本点所 需的第i路输入音频的样本值在输入纹理缓冲区中的坐标(X,y), x=i y=nXki/N 其中,h为第i路输入音频的元素数量,i e N, x为整数,y为整数或小数。
8. 根据权利要求6所述的可编程图形处理器,其特征在于,所述预处理模块包括重采 样单元,用于 从输入纹理缓冲区中获取位于坐标(x,i_y|和两点处的样本值分别为Sl和s2, U表示向下取整,「1表示向上取整; 如果Si和s2未经过编码,根据公式.V =J).v"进行插值运算得到(X, y)的样本值s ; 如果Sl和s2经过编码,根据公式s = (J-LyJ>4 +(「j|-』,),》进行插值运算得到(X,y) 的样本值s,s' i为Sl解码后的样本值,s' 2为s2解码后的样本值。
9. 根据权利要求8所述的可编程图形处理器,其特征在于,所述预处理模块包括解码 单元,用于如果81和8 2经过编码,在进行插值运算之前,将a律或/和μ律解码查找表数 组绑定为可编程图形处理器的纹理数据; 计算音频样本值81在a律或μ律解码查找表数组对应纹理缓冲区的坐标(Ul,Vl), Ul=l,Vl=Sl,根据坐标(Ul, Vl)通过a律或μ律解码查找表进行解码得到解码后的样本值 S' 1 ; 计算音频样本值82在a律或μ律解码查找表数组对应纹理缓冲区的坐标(u2, v2), u2=l,v2=s2,根据坐标(u2, v2)通过a律或μ律解码查找表进行解码得到解码后的样本值 s 2〇
10. 根据权利要求8所述的可编程图形处理器,其特征在于,所述预处理模块包括衰减 单元,用于将(X,y)的样本值s乘以第i路音频的衰减因子a i得到衰减后的音频样本值, 并将衰减后的音频样本值叠加至输出样本。
【文档编号】G10L19/008GK104143334SQ201310170251
【公开日】2014年11月12日 申请日期:2013年5月10日 优先权日:2013年5月10日
【发明者】屈振华, 龙显军, 陈珣, 万军, 马涛, 孙健, 梅平, 贺征, 李屹寰, 白冰, 郭英, 江洪, 尹梅, 刘豪, 陈宇华, 钟远晖, 余冬苹, 林涛, 许捷翰, 张海涛, 叶文超, 梁铮 申请人:中国电信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1