一种基于Android系统唱歌软件中音频合成的方法和电子设备

未命名 08-15 阅读:120 评论:0

一种基于android系统唱歌软件中音频合成的方法和电子设备
技术领域
1.本发明涉及移动应用开发和流媒体技术领域,具体涉及一种基于android系统唱歌软件中音频合成的方法和电子设备。


背景技术:

2.现如今,android系统是最受欢迎的智能手机操作系统之一,随着文化生活水平的提高,用户对音视频等多媒体应用有了强烈的需求,android平台的k歌软件可以让用户在任何地方,在任何时候,都可以唱歌,满足了普通大众追求属于自己好声音的心理。
3.目前,在android系统上,音频的录制和合成,经过多个系统模块,分别是脉冲编码调制(pcm)语音采集,算法处理,编码压缩,解码处理,语音播放。其中,语音处理动作包含了混音、噪音消除、回音消除、美声变音、音频增益(agc)等算法处理;音频的编解码包含硬/软编解码两种方式,编码的目的是为了较大程度保持原来的音质的情况下将文件资源大小压缩到更小的程度,例如mp3,而解码是为了从中提取数据给mediacodec得到pcm数据用来播放等操作。
4.因此,android智能手机的唱歌实现步骤:首先,从文件服务器下载得到源音频文件,该文件可以是分离的伴奏音频和人声音频pcm格式文件,但是为了优化下载资源容量,减少流量负担,大多采用mp3等编码的音频文件,经过解码输出左声道原唱和右声道伴奏的pcm音频文件,便于唱歌中声道切换以及伴奏和人声的混合;其次,开始唱歌时,通过android系统底层的播放组件audiotrack来播放右声道伴奏,录音组件audiorecorder负责同步录入用户的声音得到用户的人声pcm音频文件;然后,待唱歌结束后,将源文件中右声道伴奏pcm音频文件和用户通过麦克风(mic)录入的人声pcm的音频文件进行算法混音,由于采样率、通道数、采样精度一致,混音可以实现为对应信号的采样音频数据线性叠加;最后,将混音的pcm音频文件经过降噪、回音消除、音频美化变声、音频增益等处理,由pcm编码器转码处理后得到mp3或其他格式目标音频文件,便于存储和播放及其他定制需求。
5.但现有技术存在以下问题:
6.1.在用户唱歌结束后,由mic输出录制的pcm人声音频文件,需要与右声道伴奏文件混音,得到混音件,再将混音件经过降噪、回音消除、音频增益、美声变声等处理后,进一步编码压缩,得到目标音频文件,整个过程非常耗时,用户在唱歌后无法及时地获得并播放目标音频,须经过漫长等待后才能响应用户需求,用户体验感较差。
7.2.目标音频文件生成中,存在频繁pcm文件流的持久化i/o操作,对内存消耗较大,存在内存溢出风险,更影响app自身的性能。
8.3.播放伴奏音频的同时会采用回调函数实时提取伴奏数据流,在刚播放伴奏音频时,从调用播放api到声音的播放及数据流提取,系统存在延迟,但是开始录音到通过回调函数提取录音数据流的延迟低于提取伴奏数据流的延迟,这就会导致同时开始播放伴奏和录音,但是录音数据流会提前开始存储,会比伴奏数据流多出一段(也就是录音数据流的音
轨时长大于伴奏数据流的音轨时长),这将导致在后续混音阶段,按照首帧数据节点混音,人声出现的时间节点相对于伴奏就会滞后。


技术实现要素:

9.本发明针对现有技术中的不足,提供一种基于android系统唱歌软件中音频合成的方法和电子设备,能在唱歌结束后快速输出混音文件,且保证伴奏和人声的同步。
10.为实现上述目的,本发明采用以下技术方案:
11.一种基于android系统唱歌软件中音频合成的方法,包括以下步骤:
12.s1、获取音频源文件,并对源文件进行解码获得左右声道音频文件,分别为伴奏音频文件source_left.pcm和人声音频文件source_right.pcm;
13.s2、开启唱歌模式;播放伴奏音频文件并录取声音,通过回调函数得到伴奏数据流palyerdata和录音数据流recorddata;并采用双阀启停同步方法使伴奏数据流palyerdata与录音数据流recorddata的音轨时长一致;
14.s3、对步骤s2获得的伴奏数据流palyerdata和录音数据流recorddata进行定容切分;
15.s4、通过前置算法处理单元对步骤s3定容切分后的录音数据流recorddata进行降噪和回音消除处理,得到处理后的录音数据流denoiserecorddata;
16.s5、开启响应式责任链录混同步机制,对步骤s3定容切分后的伴奏数据流palyerdata和步骤s4得到的处理后的录音数据流denoiserecorddata进行混音,输出混音文件mix.pcm;
17.s6、退出唱歌模式,开启后台service服务,通过后置算法处理单元提取步骤s5得到的混音文件mix.pcm,并执行用户属性配置处理,输出设定格式的最终音频文件。
18.作为优选,步骤s2所述的双阀启停同步方法为:在录音线程和播放线程中各设置独立的线程阀,所述录音线程用于录取声音,所述播放线程用于播放伴奏音频文件并回调伴奏数据;设置在录音线程和播放线程中的线程阀默认都是关闭状态,阻止回调函数回传数据;当录音线程和播放线程中线程阀仅在均接收到回调函数获取的首帧数据时,两个线程阀同时打开,允许回调函数回传数据;当唱歌模式结束时,两个线程阀同时关闭。
19.作为优选,步骤s3所述定容切分是按照设定的pcm数据粒度length进行切分。
20.作为优选,所述pcm数据粒度length为1024的偶数倍。
21.作为优选,步骤s4所述的前置算法单元包括预处理模块、降噪执行器模块和回音消除执行器模块;所述预处理模块用于将步骤s3定容切分后的录音数据流recorddata进行byte到short的数据类型转换;所述降噪执行器模块通过自适应增益平均的谱减算法去除预处理模块转换后的数据中的噪声数据;所述回音消除执行器模块通过自适应滤波算法去除预处理模块转换后的数据中的回音数据。
22.作为优选,所述前置算法单元的处理过程为:
23.s401、初始化三个模块;设置各个模块的相关参数;
24.s402、通过预处理模块对步骤s3定容切分后的录音数据流recorddata进行格式转换;
25.s403、将经步骤s402转换后的数据交给降噪执行器模块和回音消除执行器模块均
处理一遍;
26.s404、将经步骤s403处理后的数据进行格式逆转得到处理后的录音数据流denoiserecorddata,通过jni接口回调该数据流。
27.作为优选,步骤s5所述的响应式责任链录混同步机制包括录音责任链池、伴奏责任链池和混音责任链池;所述录音责任链池用于将步骤s4得到的处理后的录音数据流denoiserecorddata依次传递给混音责任链池;所述伴奏责任链池用于将经步骤s3定容切分后的伴奏数据流palyerdata依次传递给混音责任链池;所述混音责任链池基于响应式接收并缓存接收录音责任链池和伴奏责任链池传递的数据流,并通过自适应混音加权法对两个传入次序相同的数据流依次进行混音。
28.作为优选,所述后置算法处理单元包括执行器、音频增益模块、变声模块和编码模块,所述执行器用于提取混音文件mix.pcm;所述音频增益模块采用自适应数字增益策略对执行器提取的音频数据进行增益;所述变声模块采用fmod对执行器提取的音频数据进行变声;所述编码模块对经音频增益模块或变声模块处理后的音频数据进行编码转换,输出设定格式的最终音频文件。
29.一种计算机可读存储介质,存储有计算机程序,所述计算机程序使计算机执行上述任一项所述的基于android系统唱歌软件中音频合成的方法。
30.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现上述任一项所述的基于android系统唱歌软件中音频合成的方法
31.本发明的有益效果是:
32.1、通过双阀启停同步方法,也就是在录音线程和播放线程各设置一个独立的线程阀,用于控制数据流的传入,只有当两个线程都有首帧数据流传入时,才会同时打开两个线程阀,只要有一个线程的首帧数据未传入,两个线程阀就都处于关闭状态,阻止回调函数提取的数据传入,这样录音相对于伴奏提前开始提取的那部分多余数据就不会传入,只有当落后的播放线程的回调函数也提取到首帧数据时,两个线程阀才会同时打开,允许数据传入,保证了伴奏和录音的音轨时长同步,不会出现后续混音时人声相对伴奏滞后的情况。
33.2、通过前置算法处理单元在唱歌过程中就对录音数据流进行降噪和回音消除,以及响应式责任链录混同步机制在唱歌过程中对录音数据流和伴奏数据流进行混音,实现了边唱边混的功能,充分利用了唱歌阶段的时间片资源,大大提升了后期处理效率,避免在唱歌结束后将唱歌文件再提取到内存中进行降噪、回音消除和混音,之后再存为混音文件(这过程中涉及到频繁且持久化的i/o操作(比如音频文件的写入、读取、再混音输出等一系列文件i/o操作),对内存消耗较大,不仅耗时,其存在内存溢出风险),在用户唱歌结束后,绝大部分混音已经完成,只需要等待很短的时间就可以得到最终的混音文件,不仅提升了用户体验,而且也避免了多余的i/o操作,避免了内存溢出风险,提升了app自身的性能。
34.3、通过将录音数据流和伴奏数据流先进行定容切分,再进行后续的处理过程,减小了单次的数据处理量,提升了处理效率。
附图说明
35.图1是本发明的流程示意图;
36.图2是响应式责任链录混同步机制的处理结构示意图。
具体实施方式
37.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.如图1所示,本发明提供一种基于android系统唱歌软件中音频合成的方法,
39.本发明实施例是一个完整的应用程序单元,包括了音源文件下载、解码分离、录放同步(也就是保证伴奏和录音同时开始,保持两者音轨时长一致,避免任一方提前开始),操作顺序依次为:
40.步骤s1、获取音频文件,本步骤具体包括以下分步骤:
41.步骤s101、下载源mp3音频文件(需注意mp3音频文件仅是本实施例的情况,实际并不局限于此格式,可以是任意格式的音频文件)。
42.其中,由于在计算机可读存储介质存储pcm音频文件占用过多存储资源,过度占用带宽不利于终端下载,因此音源采用编码后的格式文件,包含但不限于mp3格式;同时,终端介质存储的源mp3格式音频经过aes加密,待分离时进行解密后由播放组件装载。
43.具体地,本发明实施例通过http协议将加密后的源mp3音频文件下载至指定的存储目录。
44.步骤s102、解码分离出左右声道pcm音频。
45.具体地,解码器前置预处理单元完成源mp3的aes解密,进一步的,由高精度mpeg音频解码器完成pcm解码,由分离器输出左右声道音频文件source_left.pcm和source_right.pcm,其中,source_left.pcm为伴奏音频文件,source_right.pcm为人声音频文件。
46.步骤s2、开启唱歌模式,本步骤具体包括以下分步骤:
47.步骤s201、播放器读取左声道伴奏,同时录音准备。
48.具体地,将s102步骤提取出伴奏pcm数流(也就是伴奏音频文件source_left.pcm)传递给音频播放组件,同时初始化录音组件,设置采样率和位数参数以及提取码流的回调函数。
49.步骤s202:开启伴奏播放。
50.具体地,使用基于android系统播放组件audiotrack扩展实现的自定义播放器,播放source_left.pcm伴奏音频文件,并通过回调函数实时回调提取伴奏数据流palyerdata,格式为数据byte[]数组。
[0051]
步骤s203:开启mic录音。
[0052]
具体地,使用录音组件audiorecorder录入声音,并在回调函数中提取录音数据流recorddata。
[0053]
需注意,步骤202和步骤203实际不分顺序,顺序可以颠倒或者同步进行,分开仅为了表述方便,易于理解。
[0054]
步骤s204、双阀启停同步方法控制录放同步。
[0055]
具体地,在录音线程和播放线程中各设置独立的线程阀;设置在录音线程和播放
线程中的线程阀默认都是关闭状态,阻止回调函数回传数据;当录音线程和播放线程中线程阀仅在均接收到回调函数获取的首帧数据时,两个线程阀同时打开,允许回调函数回传数据,也就是当只有一个(或者一个都没有)线程阀接收到回调函数获取的首帧数据时,两个线程阀依旧保持关闭状态,只有当两个线程阀都接收到回调函数获取的首帧数据时,才会同时打开两个线程阀;当唱歌模式结束时,两个线程阀同时关闭。
[0056]
这就避免了录音线程或者播放线程中的任一个因为启动时长较久,导致另一个线程先获取音频数据,最终导致两个线程获取的音频数据音轨时长不一致,而最终混音时,是按照首帧数据对齐后开始混音的,如果音轨时长不一致,先获取的那个音频数据(也就是音轨时长更长的那个)反而在混音后会出现滞后的情况,正常情况下,都是录音线程能更早获得音频数据,会出现人声滞后的情况,通过本发明的双阀启停同步方法能解决该问题,保证录音音频数据和伴奏音频数据的音轨时长一致。
[0057]
步骤s3、对步骤s2获得的伴奏数据流palyerdata和录音数据流recorddata进行定容切分。
[0058]
设置混音的pcm数据粒度length,length为4096(具体数值可以根据实际情况来设置),按照数据粒度length对伴奏数据流palyerdata和录音数据流recorddata进行定容切分,假设这两个数据流的总长度为totalsize,那么需要将两个数据流都切分的段数n通过以下公式确定
[0059][0060]
也就是当totalsize和length可以整除的时候,切分的段数n就为两者的商;当totalsize和length不能整除的时候,切分的段数n为两者的商取整再加1,就是最后多余的那部分(前面都切分完后,长度达不到数据粒度length的那部分)单独切分为一段。
[0061]
步骤s4、通过前置算法处理单元对步骤s3定容切分后的录音数据流recorddata进行降噪和回音消除处理,得到处理后的录音数据流denoiserecorddata。
[0062]
具体地,前置算法处理单元包括预处理模块、降噪执行器模块和回音消除执行器模块,所述预处理模块用于将步骤s3定容切分后的录音数据流recorddata进行byte到short的数据类型转换;所述降噪执行器模块用于去除预处理模块转换后的数据中的噪声数据;所述回音消除执行器模块用于去除预处理模块转换后的数据中的回音数据。
[0063]
具体过程如下:
[0064]
s401、初始化三个模块;设置各个模块的相关参数;
[0065]
s402、开启异步线程池,预处理模块对mic音频(也就是步骤s3定容切分后的录音数据流recorddata)转格式处理,mic音频码流数据byte[]数组需要在java层执行byte到short的数据类型转换;
[0066]
s403、将经步骤s402转换后的数据交给降噪执行器模块和回音消除执行器模块均处理一遍;
[0067]
降噪的方法,具体实现步骤:降噪通过自适应增益平均的谱减算法,将带噪语音谱减去噪声谱,在增益函数中通过引入线性相位避免非因果滤波的问题,同时对增益函数在时间上做平滑处理。
[0068]
回音消除的方法,具体实现步骤:具体使用自适应滤波算法,对多路径回声进行估
计,不断优化滤波器系数,当估计值逼近真实,从mic输入信号中减去回声估计值,完成回音消除的算法处理。
[0069]
s404、将经步骤s403处理后的数据进行格式逆转得到处理后的录音数据流denoiserecorddata,通过jni接口回调该数据流。
[0070]
前置算法处理单元执行器都是通过模块初始化,将持续接收的录音数据流recorddata转换后的short[]流数据通过jni接口处理函数的底层c/c++算法处理;最后执行short[]到byte[]的数据类型转化,也就是将经降噪执行器模块和回音消除执行器模块处理后的short[]流数据进行格式逆转化,通过jni接口回处理后的录音数据流denoiserecorddata。
[0071]
步骤s5、开启响应式责任链录混同步机制,对步骤s3定容切分后的伴奏数据流palyerdata和步骤s4得到的处理后的录音数据流denoiserecorddata进行混音,输出混音文件mix.pcm;
[0072]
具体地,如图2所示,响应式责任链录混同步机制包括录音责任链池、伴奏责任链池和混音责任链池,所述录音责任链池用于将步骤s4得到的处理后的录音数据流denoiserecorddata依次发送给混音责任链池;所述伴奏责任链池用于将经步骤s3定容切分后的伴奏数据流palyerdata依次发送给混音责任链池;所述混音责任链池基于响应式接收并缓存录音责任链池和伴奏责任链池发送的数据流,并对其进行混音;
[0073]
所述录音责任链池和伴奏责任链池分别包括录音发布器和伴奏发布器;所述混音责任链池包括缓冲池和混音订阅器。
[0074]
基于i/0处理响应式责任链录混同步机制具体为:在录音发布器和伴奏发布器中的回调函数将提取的音频码流数据响应式发布给混音订阅器,i/o处理通过缓冲池暂存,其目的是为了有效防止新进数据覆盖待执行数据,混音线程通过响应式订阅来执行混音操作,可以保证录音和伴奏的数据被责任链有效处理,使执行逻辑前后在不同的线程中,提高了系统i/o吞吐效率。
[0075]
所述录音责任链池和伴奏责任链池按照接收的先后顺序依次将数据流传递给混音责任链池;混音责任链池中的缓冲池,将传入次序相同的两组数据编为一组,后续依次对同组数据进行混音;比如将录音和伴奏责任链池传入混音责任链池的数据按照顺序依次进行编号,两个责任链池传入缓冲池中编号相同的数据流就编为一组,后续混音责任链池也是对编号相同的两个数据流(录音数据流和伴奏数据流)进进行混音,以保证伴奏和人声在时间节点上相互匹配;
[0076]
所述混音责任链池用于接收录音责任链池和伴奏责任链池传递的数据流,并通过自适应混音加权法对两个同步传入(按照上段说的,就是编号相同的)的数据流进行混音;混音处理方法是通过jni层实现,底层的c/c++算法提高混音运行效率,具体混音采用衰减因子的自适应混音加权法,溢出边界最大值设置为2^15-1,最小值设置为-2^15,当音频数据溢出时,衰减因子变小,而当数据无溢出时,让衰减因子逐渐增大,其目的为了让音频数据变化相对平滑,通过平滑衰减因子保证声强不会出现快速衰减,确保较小的失真度。
[0077]
最终输出混音文件mix.pcm。
[0078]
步骤s6、退出唱歌模式,开启后台service服务,通过后置算法处理单元提取步骤s5得到的混音文件mix.pcm,并执行用户属性配置处理,输出设定格式的最终音频文件;具
体包括以下步骤:
[0079]
步骤s601:唱歌结束,退出唱歌模式,作品实时播放试听(可选步骤,也可不试听)。
[0080]
具体地,用户可触发试听操作,使用基于android系统audiotrack组件扩展的自定义播放组件完成对最终混音件mix.pcm的播放试听。
[0081]
步骤s602:后置算法处理;
[0082]
具体地,根据用户通过操作界面的定制化选择生成音频处理动作的属性配置,作为输入参数执行后置算法处理单元,所述后置算法处理单元包括执行器、音频增益模块、变声模块和编码模块(需注意,本实施例中后置算法处理单元包括了音频增益模块和变声模块对音频数据进行属性配置,实际情况并不局限这两个模块,可以根据实际属性配置需求设置对应的模块),所述执行器用于提取混音文件mix.pcm;所述音频增益模块采用自适应数字增益策略对音频进行增益;所述变声模块采用fmod对音频文件进行变声;所述编码模块对经音频增益模块或变声模块处理后的音频文件进行编码转换。
[0083]
执行器提取mix.pcm混音件完成音频美化功能,属性配置中包含了音频增益和变声美声等算法处理,具体地利用jni接口处理函数的底层c/c++算法来完成程序实现;
[0084]
进一步地,音频的增益采用自适应数字增益策略,调整离散数字信号的采样点幅值,并基于反馈机制调节,会根据前序处理效果动态调节数字增益参数,优化增益效果。
[0085]
进一步地,变音的实现方法是基于fmod实现变音,将源文件source编译出一个库文件,输出libchange.so,通过用户主动触发定制需求。
[0086]
具体执行哪个以及多少个属性配置,根据用户在操作界面的定制化选择为准。
[0087]
对经属性配置后的音频数据进行编码:
[0088]
具体地,将算法(音频的增益采用自适应数字增益策略或fmod或其他属性配置对应的算法)处理后的pcm裸数据,进行重采样、编码,安装ffmpeg库,并安装与其相匹配且必要的lame解码库,采样频率为44100hz,格式为pcm_16位,设置必要参数后获取mp3编码器并打开,配置重采样器上下文,打开源pcm文件,循环读入帧,开始编码转换,转码输出最终音频mp3格式文件,最后释放资源,转码完成;
[0089]
步骤603(可选步骤,可进行也可不进行,比如仅将音频文件存储在本地,不作上传):上传作品音频文件至服务器存储;
[0090]
具体地,通过http协议将最终编码后的mp3格式文件上传至文件服务器存储。
[0091]
在本技术所公开的实施例中,计算机存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序。计算机存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。计算机存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0092]
本实施例还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序使计算机执行上述任一所述的基于android系统唱歌软件中音频合成的方法。
[0093]
本实施例还提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现上述任一所述的基于
android系统唱歌软件中音频合成的方法
[0094]
本领域普通技术人员可以意识到,结合本技术所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0095]
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

技术特征:
1.一种基于android系统唱歌软件中音频合成的方法,其特征在于,包括以下步骤:s1、获取音频源文件,并对源文件进行解码获得左右声道音频文件,分别为伴奏音频文件source_left.pcm和人声音频文件source_right.pcm;s2、开启唱歌模式;播放伴奏音频文件并录取声音,通过回调函数得到伴奏数据流palyerdata和录音数据流recorddata;并采用双阀启停同步方法使伴奏数据流palyerdata与录音数据流recorddata的音轨时长一致;s3、对步骤s2获得的伴奏数据流palyerdata和录音数据流recorddata进行定容切分;s4、通过前置算法处理单元对步骤s3定容切分后的录音数据流recorddata进行降噪和回音消除处理,得到处理后的录音数据流denoiserecorddata;s5、开启响应式责任链录混同步机制,对步骤s3定容切分后的伴奏数据流palyerdata和步骤s4得到的处理后的录音数据流denoiserecorddata进行混音,输出混音文件mix.pcm;s6、退出唱歌模式,开启后台service服务,通过后置算法处理单元提取步骤s5得到的混音文件mix.pcm,并执行用户属性配置处理,输出设定格式的最终音频文件。2.根据权利要求1所述的基于android系统唱歌软件中音频合成的方法,其特征在于:步骤s2所述的双阀启停同步方法为:在录音线程和播放线程中各设置独立的线程阀,所述录音线程用于录取声音,所述播放线程用于播放伴奏音频文件并回调伴奏数据;设置在录音线程和播放线程中的线程阀默认都是关闭状态,阻止回调函数回传数据;当录音线程和播放线程中线程阀仅在均接收到回调函数获取的首帧数据时,两个线程阀同时打开,允许回调函数回传数据;当唱歌模式结束时,两个线程阀同时关闭。3.根据权利要求1所述的基于android系统唱歌软件中音频合成的方法,其特征在于:步骤s3所述定容切分是按照设定的pcm数据粒度length进行切分。4.根据权利要求3所述的基于android系统唱歌软件中音频合成的方法,其特征在于:所述pcm数据粒度length为1024的偶数倍。5.根据权利要求1所述的基于android系统唱歌软件中音频合成的方法,其特征在于:步骤s4所述的前置算法单元包括预处理模块、降噪执行器模块和回音消除执行器模块;所述预处理模块用于将步骤s3定容切分后的录音数据流recorddata进行byte到short的数据类型转换;所述降噪执行器模块通过自适应增益平均的谱减算法去除预处理模块转换后的数据中的噪声数据;所述回音消除执行器模块通过自适应滤波算法去除预处理模块转换后的数据中的回音数据。6.根据权利要求5所述的基于android系统唱歌软件中音频合成的方法,其特征在于:所述前置算法单元的处理过程为:s401、初始化三个模块;设置各个模块的相关参数;s402、通过预处理模块对步骤s3定容切分后的录音数据流recorddata进行格式转换;s403、将经步骤s402转换后的数据交给降噪执行器模块和回音消除执行器模块均处理一遍;s404、将经步骤s403处理后的数据进行格式逆转得到处理后的录音数据流denoiserecorddata,通过jni接口回调该数据流。7.根据权利要求1所述的基于android系统唱歌软件中音频合成的方法,其特征在于:
步骤s5所述的响应式责任链录混同步机制包括录音责任链池、伴奏责任链池和混音责任链池;所述录音责任链池用于将步骤s4得到的处理后的录音数据流denoiserecorddata依次传递给混音责任链池;所述伴奏责任链池用于将经步骤s3定容切分后的伴奏数据流palyerdata依次传递给混音责任链池;所述混音责任链池基于响应式接收并缓存接收录音责任链池和伴奏责任链池传递的数据流,并通过自适应混音加权法对两个传入次序相同的数据流依次进行混音。8.根据权利要求1所述的基于android系统唱歌软件中音频合成的方法,其特征在于:所述后置算法处理单元包括执行器、音频增益模块、变声模块和编码模块,所述执行器用于提取混音文件mix.pcm;所述音频增益模块采用自适应数字增益策略对执行器提取的音频数据进行增益;所述变声模块采用fmod对执行器提取的音频数据进行变声;所述编码模块对经音频增益模块或变声模块处理后的音频数据进行编码转换,输出设定格式的最终音频文件。9.一种计算机可读存储介质,存储有计算机程序,其特征在于:所述计算机程序使计算机执行如权利要求1-8任一项所述的基于android系统唱歌软件中音频合成的方法。10.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时,实现如权利要求1-8任一项所述的基于android系统唱歌软件中音频合成的方法。

技术总结
本发明提供了一种基于Android系统唱歌软件中音频合成的方法,属于移动应用开发和流媒体技术领域,包括以下步骤:S1、获取音频源文件,并进行解码获得左右声道音频文件;S2、播放伴奏音频并录取声音;采用双阀启停同步方法使伴奏数据流与录音数据流的音轨时长一致;S3、对伴奏数据流和录音数据流进行定容切分;S4、通过前置算法处理单元对录音数据流进行降噪和回音消除处理,得到处理后的录音数据流;S5、开启响应式责任链录混同步机制,对伴奏数据流和录音数据流进行混音,输出混音文件;S6、退出唱歌模式,通过后置算法处理单元执行用户属性配置处理,输出设定格式的音频文件;本发明能能在唱歌结束后快速输出混音文件,且保证伴奏和人声的同步。和人声的同步。和人声的同步。


技术研发人员:张秀良 程炳华 陆爱霖 闫卫 张芯苑
受保护的技术使用者:金陵科技学院
技术研发日:2023.05.15
技术公布日:2023/8/14
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐