一种音频数据处理方法、装置以及计算机可读存储介质

文档序号:139079 发布日期:2021-10-22 浏览:24次 >En<

阅读说明:本技术 一种音频数据处理方法、装置以及计算机可读存储介质 (Audio data processing method and device and computer readable storage medium ) 是由 聂俊江 于 2020-04-16 设计创作,主要内容包括:本申请公开了一种音频数据处理方法、装置以及计算机可读存储介质,该方法包括:获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串;对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串;将混音音频字符串输入音频播放器,基于音频播放器播放至少两个音频数据对应的混音音频数据。采用本申请,可提高针对音频数据的调整效率。(The application discloses an audio data processing method, an audio data processing device and a computer readable storage medium, wherein the method comprises the following steps: acquiring at least two pieces of audio data, and performing sound effect adjustment on initial audio character strings corresponding to the at least two pieces of audio data to obtain audio character strings corresponding to each piece of audio data; superposing the audio character strings corresponding to each audio data respectively to generate audio mixing audio character strings corresponding to at least two audio data; and inputting the mixed audio character string into an audio player, and playing the mixed audio data corresponding to at least two audio data based on the audio player. By the aid of the method and the device, adjustment efficiency for the audio data can be improved.)

一种音频数据处理方法、装置以及计算机可读存储介质

技术领域

本申请涉及数据合成的技术领域,尤其涉及一种音频数据处理方法、装置以及计算机可读存储介质。

背景技术

随着各种音频类型软件的兴起,对于音频数据的处理需求日渐增多,其中,就涉及到对多路音频数据进行混音播放的需求。

现有技术中,在对多路音频数据进行混音播放时,通常是将多路音频数据输入到多个音频播放器中进行播放,一路音频对应于一个音频播放器。当所有音频播放器同时播放所输入的每路音频数据时,即可实现对多路音频数据进行混音播放的目的。

但是,对于现有技术中对多路音频数据进行混音播放的方式而言,由于音频播放器通常只有暂停和播放的功能,因此,在对多路音频数据进行混音播放之前,需要用户预先手动地将每一路音频数据的音效调整完成(例如变声调整、音量调整等),并且音效调整的操作需要在另外的音频处理应用或者特定的音频处理页面中进行。当用户对每路音频数据调整完成之后,又需要将调整完成的音频数据再添加到混音播放页面中进行混音播放。由此可知,现有技术中对于音频数据的调整效率低,导致针对音频数据的混音播放效率也低。

发明内容

本申请提供了一种音频数据处理方法、装置以及计算机可读存储介质,可在对音频数据进行混音播放时,提高针对音频数据的调整效率。

本申请一方面提供了一种音频数据处理方法,包括:

获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串;

对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串;

将混音音频字符串输入音频播放器,基于音频播放器播放至少两个音频数据对应的混音音频数据。

其中,获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串,包括:

获取客户端提交的至少两个音频数据以及针对每个音频数据的音频处理指令;

根据每个音频数据的音频处理指令,分别对每个音频数据的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串。

其中,至少两个音频数据包括音频数据ki,i为小于或等于至少两个音频数据的总音频数量的正整数;

根据每个音频数据的音频处理指令,分别对每个音频数据的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串,包括:

解析每个音频数据的音频处理指令;

若解析出音频数据ki的音频处理指令为变声处理指令,则对音频数据ki的初始音频字符串进行变声调整,得到音频数据ki对应的音频字符串;

若解析出音频数据ki的音频处理指令为音量调节指令,则对音频数据ki的初始音频字符串进行音量调整,得到音频数据ki对应的音频字符串。

其中,至少两个音频数据包括音频数据ki,i为小于或等于至少两个音频数据的总音频数量的正整数;

根据每个音频数据的音频处理指令,分别对每个音频数据的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串,包括:

解析每个音频数据的音频处理指令;

若解析出音频数据ki的音频处理指令为背景音频类型处理指令,则获取背景音频类型处理指令对应的背景音频调整参数,根据背景音频调整参数对音频数据ki的初始音频字符串进行调整,得到音频数据ki对应的音频字符串;

若解析出音频数据ki的音频处理指令为人声音频类型处理指令,则获取人声音频类型处理指令对应的人声音频调整参数,根据人声音频调整参数对音频数据ki的初始音频字符串进行调整,得到音频数据ki对应的音频字符串。

其中,每个音频数据对应的音频字符串均存储于缓冲队列中,且每个音频字符串均包含至少两个采样时间点分别对应的编码字节;

对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串,包括:

从每个音频数据分别对应的缓冲队列中,获取每个音频数据分别对应的叠加编码字节;至少两个采样时间点分别对应的编码字节包括叠加编码字节;

对每个音频数据分别对应的叠加编码字节中,属于相同采样时间点的编码字节进行平均叠加处理,得到每个采样时间点分别对应的平均叠加编码字节;

根据每个采样时间点分别对应的平均叠加编码字节,生成混音音频字符串。

其中,从每个音频数据分别对应的缓冲队列中,获取每个音频数据分别对应的叠加编码字节,包括:

根据终端页面刷新帧率,确定叠加字节数量;混音音频字符串对应的混音音频数据为视频数据的背景音频数据;终端页面刷新帧率用于统一混音音频数据和视频数据的时间轴;

根据叠加字节数量,从每个音频数据分别对应的缓冲队列中,获取每个音频数据分别对应的叠加编码字节;每个音频数据分别对应的叠加编码字节中的编码字节的数量均为叠加字节数量。

其中,每个音频数据对应的音频字符串中均包含至少两个采样时间点分别对应的编码字节;

对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串,包括:

对每个音频数据对应的音频字符串中的至少两个编码字节中,属于相同采样时间点的编码字节进行求和叠加处理,得到每个采样时间点分别对应的求和叠加编码字节;

根据每个采样时间点分别对应的求和叠加编码字节,生成混音音频字符串。

其中,还包括:

将至少两个音频数据输入至少两个音频解码器中;一个音频数据对应于一个音频解码器;

基于至少两个音频解码器对至少两个音频数据进行解码,得到每个音频数据分别对应的初始音频字符串。

其中,还包括:

将混音音频字符串输入音频编码器中;

基于音频编码器对混音音频字符串进行音频编码,生成至少两个音频数据对应的混音音频文件,存储混音音频文件。

其中,混音音频文件为视频数据的背景音频文件;

还包括:

为混音音频文件和视频数据添加相同的索引标识;

当播放视频数据时,根据索引标识查找视频数据对应的混音音频文件;

对混音音频文件进行解码,得到混音音频文件对应的混音音频字符串;

基于混音音频字符串,同步播放视频数据和混音音频数据。

本申请一方面提供了一种音频数据处理装置,包括:

获取模块,用于获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串;

叠加模块,用于对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串;

播放模块,用于将混音音频字符串输入音频播放器,基于音频播放器播放至少两个音频数据对应的混音音频数据。

其中,获取模块,包括:

指令获取单元,用于获取客户端提交的至少两个音频数据以及针对每个音频数据的音频处理指令;

音效调整单元,用于根据每个音频数据的音频处理指令,分别对每个音频数据的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串。

其中,至少两个音频数据包括音频数据ki,i为小于或等于至少两个音频数据的总音频数量的正整数;

音效调整单元,包括:

第一解析子单元,解析每个音频数据的音频处理指令;

变声调整子单元,用于若解析出音频数据ki的音频处理指令为变声处理指令,则对音频数据ki的初始音频字符串进行变声调整,得到音频数据ki对应的音频字符串;

音量调整子单元,用于若解析出音频数据ki的音频处理指令为音量调节指令,则对音频数据ki的初始音频字符串进行音量调整,得到音频数据ki对应的音频字符串。

其中,至少两个音频数据包括音频数据ki,i为小于或等于至少两个音频数据的总音频数量的正整数;

音效调整单元,包括:

第二解析子单元,用于解析每个音频数据的音频处理指令;

背景调整子单元,用于若解析出音频数据ki的音频处理指令为背景音频类型处理指令,则获取背景音频类型处理指令对应的背景音频调整参数,根据背景音频调整参数对音频数据ki的初始音频字符串进行调整,得到音频数据ki对应的音频字符串;

人声调整子单元,用于若解析出音频数据ki的音频处理指令为人声音频类型处理指令,则获取人声音频类型处理指令对应的人声音频调整参数,根据人声音频调整参数对音频数据ki的初始音频字符串进行调整,得到音频数据ki对应的音频字符串。

其中,每个音频数据对应的音频字符串均存储于缓冲队列中,且每个音频字符串均包含至少两个采样时间点分别对应的编码字节;

叠加模块,包括:

字节获取单元,用于从每个音频数据分别对应的缓冲队列中,获取每个音频数据分别对应的叠加编码字节;至少两个采样时间点分别对应的编码字节包括叠加编码字节;

第一字节叠加单元,用于对每个音频数据分别对应的叠加编码字节中,属于相同采样时间点的编码字节进行平均叠加处理,得到每个采样时间点分别对应的平均叠加编码字节;

第一字符串生成单元,用于根据每个采样时间点分别对应的平均叠加编码字节,生成混音音频字符串。

其中,字节获取单元,包括:

数量确定子单元,用于根据终端页面刷新帧率,确定叠加字节数量;混音音频字符串对应的混音音频数据为视频数据的背景音频数据;终端页面刷新帧率用于统一混音音频数据和视频数据的时间轴;

字节获取子单元,用于据叠加字节数量,从每个音频数据分别对应的缓冲队列中,获取每个音频数据分别对应的叠加编码字节;每个音频数据分别对应的叠加编码字节中的编码字节的数量均为叠加字节数量。

其中,每个音频数据对应的音频字符串中均包含至少两个采样时间点分别对应的编码字节;

叠加模块,包括:

第二字节叠加单元,用于对每个音频数据对应的音频字符串中的至少两个编码字节中,属于相同采样时间点的编码字节进行求和叠加处理,得到每个采样时间点分别对应的求和叠加编码字节;

第二字符串生成单元,用于根据每个采样时间点分别对应的求和叠加编码字节,生成混音音频字符串。

其中,音频数据处理装置,还包括:

输入模块,用于将混音音频字符串输入音频编码器中;

编码模块,用于基于音频编码器对混音音频字符串进行音频编码,生成至少两个音频数据对应的混音音频文件,存储混音音频文件。

其中,混音音频文件为视频数据的背景音频文件;

音频数据处理装置,还包括:

标识添加模块,用于为混音音频文件和视频数据添加相同的索引标识;

文件查找模块,用于当播放视频数据时,根据索引标识查找视频数据对应的混音音频文件;

文件解码模块,用于对混音音频文件进行解码,得到混音音频文件对应的混音音频字符串;

同步播放模块,用于基于混音音频字符串,同步播放视频数据和混音音频数据。

其中,音频数据处理装置,还包括:解码输入模块和解码模块;

解码输入模块,用于将至少两个音频数据输入至少两个音频解码器中;一个音频数据对应于一个音频解码器;

解码模块,用于基于至少两个音频解码器对至少两个音频数据进行解码,得到每个音频数据分别对应的初始音频字符串。

本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行如本申请中一方面中的方法。

本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述一方面中的方法。

本申请可以获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串;对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串;将混音音频字符串输入音频播放器,基于音频播放器播放至少两个音频数据对应的混音音频数据。由此可见,本申请提出的方法在播放至少两个音频数据对应的混音音频数据时,可以通过各个音频数据的初始音频字符串实现对各个音频数据的音效调整。由于音频数据的初始音频字符串可以高效地被操控以实现对音频数据的音效调整,并且是通过音频数据的音频字符串实现对音频数据的音效的实时调整(即在对音频数据进行混音播放时,实时对音频数据进行音效调整),因此提高了针对音频数据的调整效率,进而提高了针对音频数据的混音播放效率。

附图说明

为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请提供的一种系统架构示意图;

图2是本申请提供的一种音频数据处理的场景示意图;

图3是本申请提供的一种音频数据处理方法的流程示意图;

图4是本申请提供的一种获取混音音频字符串的场景示意图;

图5是本申请提供的一种终端设备的页面示意图;

图6是本申请提供的一种音频组件的结构示意图;

图7是本申请提供的一种音频数据处理的场景示意图;

图8是本申请提供的一种音频数据处理装置的结构示意图;

图9是本申请提供的一种计算机设备的结构示意图。

具体实施方式

下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参见图1,是本申请提供的一种系统架构示意图。如图1所示,该系统架构示意图包括服务器100以及多个终端设备,多个终端设备具体包括终端设备200a、终端设备200b和终端设备200c。其中,终端设备200a、终端设备200b和终端设备200c均能通过网络与服务器100之间相互通信,终端设备可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)。此处,以终端设备200a与服务器100之间的通信为例进行说明。

请一并参见图2,是本申请提供的一种音频数据处理的场景示意图。当用户需要对多路音频(也就是多个音频,例如多个音乐)进行混音播放(也就是多个音频一起播放)时,用户可以将多路音频提交给终端设备200a来实现。如图2所示,终端设备200a的终端页面101b中显示有用户所提交(这里也可以称之为导入)多个音频,例如包括音频1、音频2、音频3和音频4。其中,用户在向终端设备200a提交多个音频时,还可以为所提交的每个音频选择音频类型,后续,可以根据每个音频的音频类型来对各个音频进行音效调整。如终端页面101b所示,终端设备200a通过响应用户的操作指令将所导入的音频1对应的类型选择为“背景音频”类型,将所导入的音频2对应的类型选择为“人声音频”类型,而未为音频3和音频4选择音频类型(则系统默认音频3和音频4的音频类型为“其他音频”类型)。

终端设备200a可以响应用户针对终端页面101b中的“提交”按钮101c的点击操作,跳转显示到终端页面102b。由于本申请在对多路音频进行混音播放时,是将多路音频合成一路音频之后进行播放,因此,用户可以在终端页面200a中的输入框102c中输入音频1、音频2和音频3合成后的音频(此处称为混音音频)的名称,此处终端设备200a在终端页面102b中获取到的用户所输入的混音音频的名称为“混音音频1”。终端设备200a可以响应用户针对终端页面102b中的“提交”按钮103c的点击操作,跳转显示到终端页面103b。终端页面103b中显示有“正在合成,请稍等…”等提示,表明正在合成上述音频1、音频2和音频3,但还未合成完成。当终端设备200a检测到音频1、音频2和音频3合成完成时,则可以从终端页面103b跳转显示到终端页面104b。

在本申请中,可以在对音频1、音频2和音频3进行混音播放时,同步生成对音频1、音频2和音频3进行合成之后的混音音频文件。因此,在终端页面104b中包括两个按钮,一个按钮为“点击播放”按钮104c,一个按钮为“点击导出”按钮105c。终端设备200a可以响应用户针对终端设备200a的终端页面104b中的“点击播放”按钮104c的点击操作,跳转显示到终端页面105b,并播放混音音频1。终端设备200a还可以响应用户针对终端页面104b中的“点击导出”按钮105c的点击操作,跳转显示到终端页面106b,并导出混音音频1对应的音频文件,该音频文件可以是mp3(一种音频压缩技术)格式的。

需要进行说明的是,上述终端设备播放混音音频1时,不是通过混音音频1对应的音频文件进行播放的,只是终端设备可以同步播放混音音频1,并生成混音音频1对应的音频文件。下面同样以图2对上述过程的实现所涉及到的技术手段进行阐释:

如图2所示,音频101a可以是上述音频1,音频102a可以是上述音频2,音频103a可以是上述音频3,音频104a可以是上述音频4。可以将上述音频101a、音频102a、音频103a和音频104a输入到解码器中进行解码,一个音频对应于一个解码器。此处,可以将音频101a输入到解码器105a中进行解码,得到音频101a对应的初始音频字符串1;可以将音频102a输入到解码器106a中进行解码,得到音频102a对应的初始音频字符串2;可以将音频103a输入到解码器107a中进行解码,得到音频103a对应的初始音频字符串3;可以将音频104a输入到解码器108a中进行解码,得到音频104a对应的初始音频字符串4。其中,本申请中的解码器(包括上述解码器105a、解码器106a、解码器107a以及解码器108a)可以是PCM(脉冲编码调制)解码器,因此,通过解码器对音频进行解码所得到的音频的初始音频字符串可以是PCM字符串(由字符0和字符1构成)。

更多的,由于上述音频101a、音频102a、音频103a和音频104a在提交时,可以为各个音频选择对应的音频类型(包括上述“背景音频”类型、“人声音频”类型以及“其他音频”类型),因此,后续可以根据各个音频所选择的音频类型对应地自动对各个音频进行音效调整(音效调整的方式可以是预先已经设置好的)。例如,可以将“背景音频”类型的音频的音量调节到50%,并设置为“全景声”的音效;将“人声音频”类型的音频的音量调节到70%,并设置为“人声加强”的音效;将“其他音频”类型的音频的音量调节到50%,并保持为“原声”的音效。其中,可以理解的是,对各个音频进行音效调整就是对应调整各个音频的初始字符串。因此,可以对“背景音频”类型的音频101a的初始音频字符串1进行调整,得到音频101a对应的调整后的初始音频字符串1(此处称之为音频字符串1);可以对“人声音频”类型的音频102a的初始音频字符串2进行调整,得到音频102a对应的调整后的初始音频字符串2(此处称之为音频字符串2);可以对“其他音频”类型的音频103a的初始音频字符串3进行调整,得到音频103a对应的调整后的初始音频字符串3(此处称之为音频字符串3);可以对“其他音频”类型的音频104a的初始音频字符串4进行调整,得到音频104a对应的调整后的初始音频字符串4(此处称之为音频字符串4)。

接着,可以将上述所得到的音频字符串1、音频字符串2、音频字符串3和音频字符串4输入到混音器109a中进行叠加(叠加的方式可以参见下述步骤S102),即可得到混音音频字符串112a。可以将混音音频字符串输入到音频播放器110a(音频播放器110a可以将PCM字符串还原成声音)中,即可播放对上述音频101a、音频102a、音频103a和音频104a进行合成之后的混音音频1。还可以将混音音频字符串112a输入到音频编码器111a中,即可得到对上述音频101a、音频102a、音频103a和音频104a进行合成之后的混音音频1对应的混音音频文件,该混音音频文件可以是mp3格式,mp4格式或者其他格式。

其中,需要进行说明的是,上述过程中通过音频101a、音频102a、音频103a和音频104a得到混音音频字符串112a的过程可以是服务器100来执行,也可以是终端设备200a自行执行。若是得到混音音频字符串112a的过程是服务器所执行的,则具体过程为:终端设备200a可以将所获取到的用户提交的音频101a、音频102a、音频103a和音频104a发送至服务器100,服务器100可以通过上述过程对音频101a、音频102a、音频103a和音频104a进行处理,得到混音音频字符串112a。接着,服务器100可以将所得到的混音音频字符串112a返回给终端设备200a,终端设备200a可以将服务器100所发送的混音音频字符串输入到音频播放器110a中即可播放上述混音音频1。若是得到混音音频字符串112a的过程是终端设备200a所执行的,则具体过程为:终端设备200a可以直接对用户所提交的音频101a、音频102a、音频103a和音频104a进行处理,得到混音音频字符串112a。在得到混音音频字符串112a之后,终端设备200a可以直接将混音音频字符串11a输入到音频播放器110a(音频播放器110a由终端设备200a所持有)中进行播放。

可选的,上述通过混音音频字符串112a得到混音音频文件的过程可以是服务器100完成的,也可以是终端设备200a完成的。若是该过程是由服务器100完成,则具体过程为:服务器100可以将混音音频字符串112a输入到音频编码器111a(此时音频编码器111a由服务器100所持有)中,得到混音音频文件,服务器100可以将所得到的混音音频文件给到终端设备200a,继而终端设备200a可以将所获取到的混音音频文件导出给到用户。若该过程是由终端设备200a完成,则终端设备200a可以直接将混音音频字符串112a输入到音频编码器111a(此时音频编码器111a由终端设备200a所持有),得到混音音频文件,并直接导出给到用户。

由上可知,本申请所提供的方法,可以在对多路音频对应的混音音频进行播放时,同步生成对多路音频进行合成后的混音音频文件,降低了开发人员对多路音频同步播放以及合成的开发难度。并且,在对多路音频进行混音播放时,可以实时对各路音频进行音效调整,该音效调整是通过调整音频的初始音频字符串实现,也就是上述调整音频的初始音频字符串以得到音频最终的音频字符串的过程,提高了针对音频的调整灵活性。

请参见图3,是本申请提供的一种音频数据处理方法的流程示意图,如图3所示,该方法可以包括:

步骤S101,获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串;

具体的,本实施例中以终端设备作为执行主体为例进行说明,可以理解的是,执行主体也可以是服务器。其中,多路音频数据也就是多个音频数据,例如多个音乐,多个录音等,本申请中的多个指的是至少两个,一个音频数据可以指一个音乐。当用户想要对多路音频数据进行混音播放(也就是同步播放)时,用户可以将该多路音频数据提交给终端设备,通过终端设备实现对多路音频数据的混音播放。在此描述几种需要对多个音频数据进行混音播放的场景,但对多个音频数据进行混音播放的场景并不限于以下所描述的几种场景。第一种,在一个竞技游戏中,除了有游戏的背景音乐之外,还会有游戏人物的技能释放声音,因此,游戏的背景音乐和游戏人物的技能释放声音各对应于一个音频数据,就是两个音频数据,该两个音频数据是同时播放的,即该两个音频数据需要进行混音播放。可以理解的是,在第一种场景中,游戏的背景音乐也可以有多个,此处仅以一个为例进行说明。第二种,在短视频应用中,一个短视频的背景音频可以包括一首歌(也可以是多首歌)以及上传该短视频的用户说话的声音,该首歌以及上传短视频的用户说话的声音也各对应于一个音频数据,共两个音频数据,该两个音频数据也需要进行混音播放。

终端设备在获取到用户所提交的多个音频数据时,首先,需要通过解码器对该多个音频数据进行解码。具体为:终端设备可以将该多个音频数据输入到多个音频解码器中,一个音频数据对应于一个音频解码器,即一个音频数据输入到一个音频解码器中进行解码。进而可以通过各个音频解码器分别得到所输入的每个音频数据的初始音频字符串。其中,音频解码器可以是PCM解码器,通过PCM解码器对音频数据进行解码,所得到的音频数据的初始音频字符串为PCM字节流,PCM字节流是通过二进制01的连续信号来表示的。

其中,通过PCM解码器对音频数据进行解码,也就是将音频数据数字化,这涉及到对音频数据的采样、量化以及编码三个流程。对音频数据进行采样也就是对音频数据在时间轴上的能量(单位:焦耳,即J)进行采样,以得到在各个采样时间点上音频数据的能量幅值(也可以称之为音频数据的响度),可以将每秒钟对音频数据的采样次数称为音频数据的采样率。对音频数据进行采样之后,可以对采样得到的信号(指采样得到的各个采样时间点上的能量幅值,一个能量幅值对应于一个信号)进行量化,量化可以指将采样到的全部信号的值(此处指能量幅值)控制在某个值域上。量化之后,需要对量化后的信号进行PCM编码。对信号进行PCM编码,也就是将各个信号用字节表示出来,例如用二进制的字节表示。其中,用于表示信号的字节的数量可以是1个也可以是2个,当用1个字节来表示1个信号时,信号的位数为8位,即1个字节为8bit(比特);当用2个字节来表示1个信号时,信号的位数为16位,即16bit。信号的位数可以称之为对音频数据的采样深度,也可以称之为信号的精度,信号的位数越多,最终所得到的音频数据的初始音频字符串也就更准确。对于信号的位数的选择还需要根据实际应用场景决定,对此不作限制。可选的,在对音频数据进行采样的过程中,可以通过单声道采样(即0声道),也可以通过双声道采样(包括0声道和1声道),通过双声道采样所得到的信号较之于通过单声道采样所得到的信号在声音的表现形式上将更具立体感(即空间感)。采样过程中,是采用单声道采样还是采用双声道采样也需要根据实际应用场景决定,对此不作限制。

举个例子,当对某个音频数据进行采样之后得到3个采样时间点对应的能量幅值,分别为能量幅值1、能量幅值2和能量幅值3,并且,信号的位数是8,那么对该音频数据进行解码所得到的初始音频字符串就为00000001 0000001000000011,其中,00000001表示能量幅值1,00000010表示能量幅值2,00000011表示能量幅值3。

下面对如何对音频数据的初始音频字符串进行音效调整进行描述:上述终端设备获取到的多个音频数据可以是用户通过客户端所提交的,该客户端可以是音乐应用软件、音乐客户端、视频软件或者视频客户端等。用户在通过客户端向终端设备提交各个音频数据时,还可以向终端设备提交针对每个音频数据的音频处理指令。后续,终端设备可以根据每个音频数据的音频处理指令分别对每个音频数据进行音效调整。对每个音频数据进行音效调整,是通过调整每个音频数据的初始音频字符串来实现的,可以将调整完成的每个音频数据的初始音频字符串称之为每个音频数据的音频字符串。对音频数据进行音效调整的具体过程如下:

其中,可以将终端设备获取到的用户所提交的音频数据记为ki,i为正整数,且小于或者等于用户所提交的音频数据的总音频数量。例如,当终端设备获取到用户所提交的3个音频数据,则i取值可以为1、2和3,该3个音频数据可以表示为k1、k2和k3。音频数据的音频处理指令包括两种类型的指令,一种为用户具体指定的需要对各个音频数据进行音效调整的指令,例如可以包括变声处理指令和音量调节指令等,其中变声处理指令可以指将音频数据变为男音、女音或者童音等,音量调节指令可以指将音频数据的音量调节为50%的音量或者100%的音量等。另一种为用户选定的各个音频数据的音频类型的指令,例如可以包括背景音频类型处理指令和人声音频类型处理指令,其中背景音频类型处理指令表示用户将音频数据的音频类型选定为“背景音频”类型,人声音频类型处理指令表示用户将音频数据的音频类型选定为“人声音频”的类型。终端设备可以根据各个音频数据的音频类型来对各个音频数据进行对应的音效调整。其中,终端设备根据各个音频数据的音频类型对各个音频数据进行对应的音效调整的方式,可以是开发人员预先设定的。例如,终端设备可以根据预先设定的调整参数将“背景音频”类型的音频数据的音量调整为50%的音量,音效调整为全景声的音效。还例如,终端设备可以根据预先设定的调整参数将“人声音频”类型的音频数据的音量调整为80%的音量,音效调整为人声加强的音效。其中,上述调整参数可以是开发人员预先设定的,该调整参数指示了如何对音频数据进行音效调整,该调整参数可以包括音量的大小参数和音效类别参数等。其中音量的大小可以指0到100%之间的任意数值,音效类别可以包括“原声”的音效类别、“人声加强”的音效类别和“全景声”的音效类别等。

具体过程为:终端设备可以对音频数据ki的音频处理指令进行解析,当解析出音频数据ki的音频处理指令为上述变声处理指令时,终端设备可以对音频数据ki的初始音频字符串进行变声调整,通过变声调整所达到的效果可以是将音频数据ki由原本的男声调整为女声,或者由原本的女声调整为童声等,继而可以得到音频数据ki对应的调整后的初始音频字符串,可以将音频数据ki对应的调整后的初始音频字符串称之为音频数据ki的音频字符串。

当终端设备解析出音频数据ki的音频处理指令为上述音量调节指令时,终端设备可以对音频数据ki的初始音频字符串进行音量调整,通过音量调整所达到的效果可以是将音频数据ki的音量调整到0到100%之间任意数值的音量大小,继而也可以得到音频数据ki的音频字符串。

当终端设备解析出音频数据ki的音频处理指令为上述背景音频类型处理指令时,终端设备可以获取背景音频类型处理指令对应的背景音频调整参数,该背景音频调整参数可以是开发人员预先设定的,例如,该背景音频调整参数可以包括音量以及音效类别的标识信息等。终端设备可以根据所获取到的背景音频调整参数,对音频处理指令为背景音频类型处理指令的音频数据ki的初始音频字符串进行调整,得到音频数据ki对应的音频字符串。其中,通过背景音频调整参数对音频数据ki的初始音频字符串进行调整,所达到的效果可以是将音频数据ki的音量调节到50%,音效调整为全景声的音效。

当终端设备解析出音频数据ki的音频处理指令为上述人声音频类型处理指令时,终端设备可以获取人声音频类型处理指令对应的人声音频调整参数,该人声音频调整参数也可以是开发人员预先设定的,例如,该人声音频调整参数可以包括音量以及音效类别的标识信息等。终端设备可以根据所获取到的人声音频调整参数,对音频处理指令为人声音频类型处理指令的音频数据ki的初始音频字符串进行调整,得到音频数据ki对应的音频字符串。其中,通过人声音频调整参数音频数据ki的初始音频字符串进行调整,所达到的效果可以是将音频数据ki的音量调节到80%,音效调整为人声加强的音效。

举个例子,对某个音频数据的初始音频字符串00000001 00000010 00000011进行调整后,得到的音频字符串可以是00000011 00000001 00010001。

终端设备可以将通过上述过程所得到的每个音频数据的音频字符串添加到缓冲队列中,一个音频字符串对应于一个缓冲队列。添加方法为:终端设备可以根据各个音频字符串生成字节缓冲区,然后将所生成的每个字节缓冲区加入到对应的缓冲队列中,即可实现将各个音频数据的音频字符串添加到对应的缓冲队列中。该缓冲队列可以是生产消费模式的队列,生产消费模式的缓冲队列的特性就是可以持续向缓冲队列中添加字节,后续,当从缓冲队列中取出字节时,被取出的字节就不再存在于缓冲队列中了。可以理解为,缓冲队列中就存储了音频数据的音频字符串,并且一个音频字符串包括至少两个采样时间点分别对应的编码字节,一个编码字节可以是8位,也可以是16位。例如若某个音频数据的音频字符串为00000001 00000010 00000011,则该音频字符串包括编码字节00000001、编码字节00000010以及编码字节00000011。

步骤S102,对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串;

具体的,终端设备可以从每个音频数据分别对应的缓冲队列中的音频字符串中,获取到每个音频数据的音频字符串,终端设备可以对所获取到的每个音频数据的音频字符串进行叠加,得到混音音频字符串,该混音音频字符串就是对所有音频数据的音频字符串进行叠加之后的PCM字节流。

其中,对每个音频数据的音频字符串进行叠加的方式可以是:每个音频字符串都包括相同的采样时间点对应的编码字节,例如假设采样时间点包括采样时间点1、采样时间点2和采样时间点3,音频字符串包括音频数据1对应的音频字符串1、音频数据2对应的音频字符串2以及音频数据3对应的音频字符串3,那么音频字符串1中包括采样时间点1对应的编码字节、采样时间点2对应的编码字节以及采样时间点3对应的编码字节,音频字符串2中也包括采样时间点1对应的编码字节、采样时间点2对应的编码字节以及采样时间点3对应的编码字节,音频字符串3中还包括采样时间点1对应的编码字节、采样时间点2对应的编码字节以及采样时间点3对应的编码字节。

终端设备可以将每个音频数据对应的音频字符串中属于相同采样时间点(例如都属于采样时间点1、都属于采样时间点2或者都属于采样时间点3等)的编码字节进行求和叠加处理,得到每个采样时间点分别对应的求和叠加编码字节。其中,求和叠加处理也就是对编码字节进行求和处理,换句话说,就是将属于相同采样时间点的编码字节全部加起来。终端设备可以根据每个采样时间点分别对应的求和叠加编码字节,生成混音音频字符串。举个例子,当属于相同采样时间点的编码字节包括编码字节00000001(表示1)、编码字节00000010(表示2)和编码字节00000011(表示3)共3个编码字节,则对该3个编码字节进行求和叠加处理,得到的求和叠加编码字节就为00000110(表示6,因为1+2+3等于6)。

终端设备还可以将每个音频数据对应的音频字符串中属于相同采样时间点的编码字节进行平均叠加处理,得到每个采样时间点分别对应的平均叠加编码字节。其中,平均叠加处理是指将属于相同采样时间点的编码字节进行求和之后,再取平均值。终端设备可以根据每个采样时间点分别对应的平均叠加编码字节,生成混音音频字符串。举个例子,当属于相同采样时间点的编码字节包括编码字节00000001(表示1)、编码字节00000010(表示2)和编码字节00000011(表示3)共3个编码字节,则对该3个编码字节进行平均叠加处理,得到的平均叠加编码字节就为00000010(表示2,因为(1+2+3)/3等于2)。

可选的,对音频数据的音频字符串进行叠加的方式除了上述平均叠加处理的方式(可以称之为基于平均调整算法的方式)以及求和叠加处理的方式(可以称之为基于求和调整算法的方式)之外,还可以采用基于归一化混音算法的方式、基于饱和混音算法的方式或者基于线性叠加混音算法的方式等,具体采用哪种叠加方式,可以根据实际应用场景决定,对此不做限制。

更多的,上述混音音频字符串对应的混音音频数据可以是视频数据(可以是任意一个视频)的背景音频数据。对于终端设备而言,终端设备有自己的终端页面刷新帧率的最大值,因此,若是需要将视频数据与其背景音频数据进行同步播放,就需要统一视频数据和混音音频数据的时间轴,所以可以通过终端页面刷新帧率的最大值,从每个音频数据的缓冲队列中获取每个音频数据分别对应的叠加编码字节,以统一视频数据和混音音频数据的时间轴。具体过程为:

可以将终端页面刷新帧率的最大值记为Z(Z通常为1/60秒),将音频数据的采样率记为C,将音频数据的采样深度记为S,将声道数记为D,则可以得到叠加字节数量等于Z*C*S*D。该叠加字节数量是在最大的终端页面刷新帧率对应的时间段(例如可以是1/60秒)内,缓冲队列中被添加的字节的最大数量。因此,终端设备可以每隔时间Z从每个缓冲队列中均取出Z*C*S*D个字节进行叠加。换句话说,终端设备从每个缓冲队列中取出的编码字节的字节数量均等于叠加字节数量,可以将终端设备从每个缓冲队列中取出的编码字节均称之为叠加编码字节。每个缓冲队列中取出的叠加编码字节的字节数量相同,且每个缓冲队列中取出的叠加编码字节所对应的采样时间点也是一样的。举个例子,假如采样时间点一共包括采样时间点1、采样时间点2、采样时间点3、采样时间点4、采样时间点5以及采样时间点6,那么每个缓冲队列中的叠加编码字节对应的采样时间点都可以包括采样时间点1、采样时间点2和采样时间点3,或者包括采样时间点4、采样时间点5以及采样时间点6。当终端设备从缓冲队列中取出叠加编码字节之后,被取出的叠加编码字节就可以从缓冲队列中删除。

终端设备可以对从每个缓冲队列中取出的叠加编码字节进行叠加,叠加的方式可以是上述平均叠加处理的方式,也可以是上述求和叠加处理的方式等,叠加之后可以得到上述混音音频字符串。可以理解的是,当终端设备单次将从缓冲队列中取出的叠加编码字节进行叠加时,所得到的混音音频字符串是对每个音频数据的部分的音频字符串进行叠加之后的字符串。而当终端设备不断从各个缓冲队列中取出叠加编码字节进行叠加,将每次叠加的结果合在一起才是对每个音频数据的完整的音频字符串进行叠加之后的字符串。当终端设备直接对每个音频数据的音频字符串进行叠加时,所得到的混音音频字符串也是对每个音频数据的完整的音频字符串进行叠加之后的字符串。

终端设备可以多次从缓冲队列中取出叠加编码字节进行叠加,例如每隔时间Z,从每个缓冲队列中均取出数量为上述叠加字节数量的编码字节进行叠加,直到每个音频数据分别对应的完整的音频字符串中的所有编码字节均被取出并叠加完成为止。此种情况下,就会连续地生成多个混音音频字符串,每次从各个缓冲队列中取出叠加编码字节进行叠加后,就会得到一个混音音频字符串。

请参见图4,是本申请提供的一种获取混音音频字符串的场景示意图。如图4所示,音频数据1的音频字符串为音频字符串101d(即00000001 0000001100000010),音频数据2的音频字符串为音频字符串102d(即00000010 00000010 00000001),音频数据3的音频字符串为音频字符串103d(即00000011 00000001 00000011)。音频字符串101d中包括编码字节104d(即00000001,表示1)、编码字节105d(即00000011,表示3)和编码字节106d(即00000010,表示2);音频字符串102d中包括编码字节107d(即00000010,表示2)、编码字节108d(即00000010,表示2)和编码字节109d(即00000001,表示1);音频字符串103d包括编码字节110d(即00000011,表示3)、编码字节111d(即00000001,表示1)和编码字节112d(即00000011,表示3)。其中,音频字符串101d中的编码字节104d、音频字符串102d中的编码字节107d和音频字符串103d中的编码字节110d对应于同一个采样时间点,即都对应于采样时间点1。音频字符串101d中的编码字节105d、音频字符串102d中的编码字节108d和音频字符串103d中的编码字节111d对应于同一个采样时间点,即都对应于采样时间点2。音频字符串101d中的编码字节106d、音频字符串102d中的编码字节109d和音频字符串103d中的编码字节112d对应于同一个采样时间点,即都对应于采样时间点3。

终端设备可以将上述对应于同一个采样时间点1的编码字节104d、编码字节107d和编码字节110d进行求和叠加处理,得到求和叠加编码字节113d(即00000110,表示6,因为1+2+3等于6);终端设备可以将上述对应于同一个采样时间点2的编码字节105d、编码字节108d和编码字节111d进行求和叠加处理,得到求和叠加编码字节115d(即00000110,表示6,因为3+2+1等于6);终端设备可以将上述对应于同一个采样时间点3的编码字节106d、编码字节109d和编码字节112d进行求和叠加处理,得到求和叠加编码字节114d(即00000110,表示6,因为2+1+3等于6)。接着,终端设备可以通过所得到的求和叠加编码字节113d、求和叠加编码字节114d和求和叠加编码字节115d,生成上述音频数据1、音频数据2以及音频数据3对应的混音音频数据的混音音频字符串116d。

一个音频数据的音频字符串为一条PCM字节流,通过上述过程即可将多个音频数据对应的多条PCM字节流叠加得到一条PCM字节流,该条PCM字节流即为混音音频字符串。并且,在本申请中,可以通过相关的混音算法,实现对多条PCM字节流的一次叠加,其中一次叠加是指通过一个叠加处理的操作即可叠加,例如上述过程的通过平均叠加处理的操作进行叠加或者通过求和叠加处理的操作进行叠加等。因此,即使需要叠加的PCM字节流的条数较多,也不会影响到针对多条PCM字节流的叠加效率。换句话说,由于对音频数据的音频字符串的叠加次数越多,音频数据的质量也会下降,而本申请只需要进行一次叠加,因此通过本申请所提供的叠加方法,可以在保证音频数据的音频质量的前提下,提高针对多个音频数据的合成效率。

步骤S103,将混音音频字符串输入音频播放器,基于音频播放器播放至少两个音频数据对应的混音音频数据;

具体的,由于音频播放器可以将PCM字节流还原成声音输入到扬声器进行播放,因此,终端设备可以将上述所生成的混音音频字符串输入到音频播放器中,即可通过音频播放器播放上述多个音频数据对应的混音音频数据。此外,由于音频编码器可以将PCM字节流编码成音频文件,因此,终端设备还可以将上述混音音频字符串输入到音频编码器中,即可通过音频编码器得到上述多个音频数据对应的混音音频数据的混音音频文件,该混音音频文件即为对上述多个音频数据进行合成之后所得到的最终的音频文件,该音频文件可以是mp3格式、mp4格式或者其他音频格式。终端设备可以存储所生成的混音音频文件。

当混音音频字符串是对从缓冲字节中取出的数量为叠加字节数量的叠加编码字节进行叠加得到,则会连续得到多个混音音频字符串,可以根据该多个混音音频字符串的生成时间依次将该多个混音音频字符串输入到音频播放器中进行播放。其中,每生成一个混音音频字符串就可以将该混音音频字符串输入到音频播放器中进行播放,当对生成的所有混音音频字符串全部播放完成,才是对多个音频数据对应的完整的混音音频数据播放完成。其中,还可以根据所生成的多个混音音频字符串的生成时间,依次将该多个混音音频字符串输入到音频编码器中进行合成。每生成一个混音音频字符串就可以将该混音音频字符串输入到音频编码器中进行合成,当对所生成的所有混音音频字符串全部合成完成之后,即可得到多个音频数据对应的完整的混音音频文件。

更多的,当用户对音频播放器所播放的上述多个音频数据对应的混音音频数据不满意时,还可以重新向终端设备提交针对各个音频数据的音频处理指令,终端设备可以根据用户重新提交的各个音频数据的音频处理指令再次对各个音频数据进行音效调整,并重新得到调整后的混音音频字符串,其中,重新对音频数据进行音效调整可以指对音频数据的前一次调整的基础上再次进行调整,也可以指对音频数据的初始音频字符串进行重新调整。后续,终端设备可以通过重新调整后的混音音频字符串,重新播放上述多个音频数据的混音音频数据,并且重新输出上述多个音频数据的混音音频文件。

其中,上述混音音频文件可以用作为视频数据的背景音频文件。因此,终端设备在存储混音音频文件时,可以为混音音频文件和视频数据添加相同的索引标识,例如都添加索引标识1。后续,当终端设备需要播放视频数据时,可以根据视频数据的索引标识找到具有相同索引标识的混音音频文件,继而终端设备可以通过解码器对所查找到的混音音频文件进行解码,还原得到混音音频文件对应的上述混音音频字符串。之后,终端设备可以将还原出的混音音频字符串输入到音频播放器播放对应的混音音频数据,并同步播放视频数据,也就是将混音音频数据和视频数据进行同步播放。

请参见图5,是本申请提供的一种终端设备的页面示意图。当需要合成短视频的背景音频数据时,也可以通过本申请所提供的方法来合成。首先,终端设备100e可以获取到用户所导入的需要进行合成的多个音频数据,具体操作为:如图5所示,终端设备100e可以响应终端页面101e中的“导入”按钮101f的点击操作,跳转显示到终端页面102e。在终端页面102e中包括两个按钮,一个按钮为“本地导入”按钮102f,另一个按钮“下载导入”按钮103f。当需要合成的多个音频数据是存储于终端设备100e本地的,则终端设备100e可以响应用户针对终端页面102e中的“本地导入”按钮102f的点击操作,从终端设备100e的本地音频中选取需要进行合成的音频数据。若需要合成的多个音频数据未存储于终端设备100e本地,表明需要在网页上或者音频类型应用中搜索并下载需要合成的多个音频数据,则终端设备100e可以响应用户针对终端页面102e中的“下载导入”按钮103f的点击操作,跳转显示到包含音频下载网页的终端页面或者跳转显示到包含某个音频类型应用中的音频下载页面的终端页面,使得用户可以在所显示的终端页面中搜索并实时下载需要进行合成的音频数据。

此处,如图5所示,终端设备100e可以响应终端页面102e中的“本地导入”按钮102f的点击操作,跳转显示到终端页面103e,在终端页面103e中显示有终端设备100e中的本地音频列表,该本地音频列表中包括终端设备100e的多个本地音频数据,具体可以包括音频数据1、音频数据2、音频数据3、音频数据4、音频数据5、音频数据6、音频数据7和音频数据8。用户可以在终端页面103e中的本地音频列表中选择需要进行合成的音频数据,终端设备100e可以响应用户针对终端页面103e中的本地音频列表中的音频数据的选择操作,并在被选中的音频数据后面显示“√”。如图5所示,此处被选中的需要合成的音频数据包括音频数据1、音频数据2和音频数据5。终端设备100e可以响应用户针对终端页面103e中的“确定”按钮104f的点击操作,跳转显示到终端页面104e。

终端页面104e中显示有被用户选中的需要进行合成的音频数据1、音频数据2和音频数据5。在终端页面104e中还支持用户为每个被选中的音频数据选择音频处理指令,此处用户为音频数据1选中了“变声”的音频处理指令108f(等同于上述变声处理指令),表明需要对音频数据1进行变声处理,例如可以将音频数据1中的男声调整为女生等。用户为音频数据2选中了“音量调节”的音频处理指令109f(等同于上述音量调节指令),表明用户可以指定音频数据2的音量,例如为音频数据2指定50%的音量或者100%的音量等。用户为音频数据5选择了“音效类别调整”的音频处理指令110f,表明用户可以指定音频数据5的音效类别,例如可以是全景声的音效类别或者人声加强的音效类别等。

终端设备100e可以响应用户针对终端页面104a中的“开始合成”按钮105f的点击操作,开始对上述音频数据1、音频数据2和音频数据5进行合成,合成的过程可以参见上述步骤S101-步骤S105,并且合成的过程中也会根据各个音频数据的音频处理指令来调整各个音频数据的初始音频字符串,合成之后可以得到音频数据1、音频数据2和音频数据5对应的混音音频字符串。终端设备100e对上述音频数据1、音频数据2和音频数据5合成完成之后,可以跳转显示到终端页面105e。终端页面105e可以响应用户针对终端页面105e中的“点击播放视频数据”按钮106f的点击操作,开始同步播放视频数据以及通过上述音频数据1、音频数据2和音频数据5所合成的视频数据的背景音频数据。该背景音频数据即为上述所生成的混音音频字符串所对应的混音音频数据,该背景音频数据是通过将混音音频字符串输入到音频播放器进行播放。终端设备100e还可以响应用户针对终端页面105e中的“点击下载混音音频文件”按钮107f的点击操作,生成上述混音音频字符串对应的混音音频文件,并将该混音音频文件存储在终端设备100e的本地内存空间中。

请参见图6,是本申请提供的一种音频组件的结构示意图。如图6所示,音频解码器(AudioDecoder)中包括解包器(MediaExtractor)、脉冲解码器(MediaCodec,即上述PCM解码器)、声音预处理器(Processer)以及数据缓冲队列(ByteBufferQueue,即上述缓冲队列)。一个音频数据对应于一个音频解码器。其中,解包器用于读取所输入的音频数据的格式,脉冲解码器可以将读取出的不同格式的音频数据解码成原始的PCM字节流,该原始的PCM字节流非常适合对音频数据的实时操控,操控的目的可以是对音频数据进行音效调整,因此,对音频数据的操控效率也会很高。通过解包器读取出音频数据的格式之后,可以通过脉冲解码器对音频数据进行解码,得到音频数据的初始音频字符串。接着,可以将音频数据的初始音频字符串输入到声音预处理器中,通过声音预处理器对音频数据的初始音频字符串进行音效调整,得到音频数据的音频字符串。可以将所得到的音频数据的音频字符串添加到数据缓冲队列中进行存储。

如图6所示,在通过每个音频数据分别对应的音频解码器得到每个音频数据分别对应的音频字符串之后,可以将每个音频数据的音频字符串输入到混音器(AudioMixer)中进行叠加,得到混音音频字符串。可以将该混音音频字符串输入到音频播放器(AudioTtack)中,播放对所有音频数据进行合成之后的混音音频数据,也可以将混音音频字符串输入到音频编码器(AudioEncoder)中,生成对所有音频数据进行合成之后的混音音频文件。

请参见图7,是本申请提供的一种音频数据处理的场景示意图。假设需要合成的音频数据一共有n个,其中n的取值根据实际应用场景决定,对此不作限制。该n个音频数据具体包括音频数据1、音频数据2、……和音频数据n。首先可以将音频数据1、音频数据2、……和音频数据n对应输入到n个脉冲解码器中进行解码,得到每个音频数据对应的初始音频字符串。上述n个脉冲解码器具体包括脉冲解码器1、脉冲解码器2、……和脉冲解码器n,通过解码所得到的音频数据的初始音频字符串具体包括音频数据1对应的初始音频字符串1、音频数据2对应的初始音频字符串2、……和音频数据n对应的初始音频字符串n。接着可以对各个音频数据的初始音频字符串进行音效调整,音效调整可以包括音量调节、变声调整和音效类别的调整等,音效调整后即可得到每个音频数据对应的音频字符串,具体包括音频数据1对应的音频字符串1、音频数据2对应的音频字符串2、……和音频数据n对应的音频字符串n。可以将每个音频数据的音频字符串添加到对应的缓冲队列中进行存储,此处具体将音频字符串1添加到缓冲队列1中、将音频字符串2添加到缓冲队列2中、……以及将音频字符串n添加到缓冲队列n中。接着,可以从各个音频数据分别对应的缓冲队列中获取每个音频数据的音频字符串,并将获取到的每个音频数据的音频字符串添加到混音器中进行叠加,得到混音音频字符串。继而,就可以将混音音频字符串输入到音频播放器中,以实现对上述n个音频数据对应的混音音频数据的播放,同时可以将混音音频字符串输入到音频编码器中,以生成混音音频数据对应的混音音频文件。

本申请可以获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串;对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串;将混音音频字符串输入音频播放器,基于音频播放器播放至少两个音频数据对应的混音音频数据。由此可见,本申请提出的方法在播放至少两个音频数据对应的混音音频数据时,可以通过各个音频数据的初始音频字符串实现对各个音频数据的音效调整。由于音频数据的初始音频字符串可以高效地被操控以实现对音频数据的音效调整,并且是通过音频数据的音频字符串实现对音频数据的音效的实时调整(即在对音频数据进行混音播放时,实时对音频数据进行音效调整),因此在提高了针对音频数据的调整灵活性的同时,还提高了针对音频数据的调整效率,进而提高了针对音频数据的混音播放效率。

请参见图8,是本申请提供的一种音频数据处理装置的结构示意图。该音频数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该音频数据处理装置为一个应用软件;该音频数据处理装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该音频数据处理装置1可以包括:获取模块101、叠加模块102和播放模块103;

获取模块101,用于获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串;

叠加模块102,用于对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串;

播放模块103,用于将混音音频字符串输入音频播放器,基于音频播放器播放至少两个音频数据对应的混音音频数据。

其中,获取模块101、叠加模块102和播放模块103的具体功能实现方式请参见图3对应的实施例中的步骤S101-步骤S103,这里不再进行赘述。

其中,获取模块101,包括:指令获取单元1011和音效调整单元1012;

指令获取单元1011,用于获取客户端提交的至少两个音频数据以及针对每个音频数据的音频处理指令;

音效调整单元1012,用于根据每个音频数据的音频处理指令,分别对每个音频数据的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串。

其中,指令获取单元1011和音效调整单元1012的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。

其中,至少两个音频数据包括音频数据ki,i为小于或等于至少两个音频数据的总音频数量的正整数;

音效调整单元1012,包括:第一解析子单元10121、变声调整子单元10122和音量调整子单元10123;

第一解析子单元10121,解析每个音频数据的音频处理指令;

变声调整子单元10122,用于若解析出音频数据ki的音频处理指令为变声处理指令,则对音频数据ki的初始音频字符串进行变声调整,得到音频数据ki对应的音频字符串;

音量调整子单元10123,用于若解析出音频数据ki的音频处理指令为音量调节指令,则对音频数据ki的初始音频字符串进行音量调整,得到音频数据ki对应的音频字符串。

其中,第一解析子单元10121、变声调整子单元10122和音量调整子单元10123的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。

其中,至少两个音频数据包括音频数据ki,i为小于或等于至少两个音频数据的总音频数量的正整数;

音效调整单元1012,包括:第二解析子单元10124、背景调整子单元10125和人声调整子单元10126;

第二解析子单元1024,用于解析每个音频数据的音频处理指令;

背景调整子单元1025,用于若解析出音频数据ki的音频处理指令为背景音频类型处理指令,则获取背景音频类型处理指令对应的背景音频调整参数,根据背景音频调整参数对音频数据ki的初始音频字符串进行调整,得到音频数据ki对应的音频字符串;

人声调整子单元1026,用于若解析出音频数据ki的音频处理指令为人声音频类型处理指令,则获取人声音频类型处理指令对应的人声音频调整参数,根据人声音频调整参数对音频数据ki的初始音频字符串进行调整,得到音频数据ki对应的音频字符串。

其中,第二解析子单元10124、背景调整子单元10125和人声调整子单元10126的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。

其中,每个音频数据对应的音频字符串均存储于缓冲队列中,且每个音频字符串均包含至少两个采样时间点分别对应的编码字节;

叠加模块102,包括:字节获取单元1021、第一字节叠加单元1022和第一字符串生成单元1023;

字节获取单元1021,用于从每个音频数据分别对应的缓冲队列中,获取每个音频数据分别对应的叠加编码字节;至少两个采样时间点分别对应的编码字节包括叠加编码字节;

第一字节叠加单元1022,用于对每个音频数据分别对应的叠加编码字节中,属于相同采样时间点的编码字节进行平均叠加处理,得到每个采样时间点分别对应的平均叠加编码字节;

第一字符串生成单元1023,用于根据每个采样时间点分别对应的平均叠加编码字节,生成混音音频字符串。

其中,字节获取单元1021、第一字节叠加单元1022和第一字符串生成单元1023的具体功能实现方式请参见图3对应的实施例中的步骤S102,这里不再进行赘述。

其中,字节获取单元1021,包括:数量确定子单元10211和字节获取子单元10212;

数量确定子单元10211,用于根据终端页面刷新帧率,确定叠加字节数量;混音音频字符串对应的混音音频数据为视频数据的背景音频数据;终端页面刷新帧率用于统一混音音频数据和视频数据的时间轴;

字节获取子单元10212,用于据叠加字节数量,从每个音频数据分别对应的缓冲队列中,获取每个音频数据分别对应的叠加编码字节;每个音频数据分别对应的叠加编码字节中的编码字节的数量均为叠加字节数量。

其中,数量确定子单元10211和字节获取子单元10212的具体功能实现方式请参见图3对应的实施例中的步骤S102,这里不再进行赘述。

其中,每个音频数据对应的音频字符串中均包含至少两个采样时间点分别对应的编码字节;

叠加模块102,包括:第二字节叠加单元1024和第二字符串生成单元1025;

第二字节叠加单元1024,用于对每个音频数据对应的音频字符串中的至少两个编码字节中,属于相同采样时间点的编码字节进行求和叠加处理,得到每个采样时间点分别对应的求和叠加编码字节;

第二字符串生成单元1025,用于根据每个采样时间点分别对应的求和叠加编码字节,生成混音音频字符串。

其中,第二字节叠加单元1024和第二字符串生成单元1025的具体功能实现方式请参见图3对应的实施例中的步骤S102,这里不再进行赘述。

其中,音频数据处理装置1,还包括:输入模块104和编码模块105;

输入模块104,用于将混音音频字符串输入音频编码器中;

编码模块105,用于基于音频编码器对混音音频字符串进行音频编码,生成至少两个音频数据对应的混音音频文件,存储混音音频文件。

其中,输入模块104和编码模块105的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。

其中,混音音频文件为视频数据的背景音频文件;

音频数据处理装置1,还包括:标识添加模块106、文件查找模块107、文件解码模块108和同步播放模块109;

标识添加模块106,用于为混音音频文件和视频数据添加相同的索引标识;

文件查找模块107,用于当播放视频数据时,根据索引标识查找视频数据对应的混音音频文件;

文件解码模块108,用于对混音音频文件进行解码,得到混音音频文件对应的混音音频字符串;

同步播放模块109,用于基于混音音频字符串,同步播放视频数据和混音音频数据。

其中,标识添加模块106、文件查找模块107、文件解码模块108和同步播放模块109的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。

其中,音频数据处理装置1,还包括:解码输入模块110和解码模块111;

解码输入模块110,用于将至少两个音频数据输入至少两个音频解码器中;一个音频数据对应于一个音频解码器;

解码模块111,用于基于至少两个音频解码器对至少两个音频数据进行解码,得到每个音频数据分别对应的初始音频字符串。

其中,解码输入模块110和解码模块111的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。

本申请可以获取至少两个音频数据,对至少两个音频数据分别对应的初始音频字符串进行音效调整,得到每个音频数据分别对应的音频字符串;对每个音频数据分别对应的音频字符串进行叠加,生成至少两个音频数据对应的混音音频字符串;将混音音频字符串输入音频播放器,基于音频播放器播放至少两个音频数据对应的混音音频数据。由此可见,本申请提出的方法在播放至少两个音频数据对应的混音音频数据时,可以通过各个音频数据的初始音频字符串实现对各个音频数据的音效调整。由于音频数据的初始音频字符串可以高效地被操控以实现对音频数据的音效调整,并且是通过音频数据的音频字符串实现对音频数据的音效的实时调整(即在对音频数据进行混音播放时,实时对音频数据进行音效调整),因此提高了针对音频数据的调整效率,进而提高了针对音频数据的混音播放效率。

请参见图9,是本申请提供的一种计算机设备的结构示意图。如图9所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。

在图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3对应实施例中对音频数据处理方法的描述。应当理解,本申请中所描述的计算机设备1000也可执行前文图8所对应实施例中对音频数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。

此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的音频数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3对应实施例中对音频数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。

以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖范围。

33页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:控制信号的发送方法、接收方法及相关设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类