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

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

【技术实现步骤摘要】
一种基于Android系统唱歌软件中音频合成的方法和电子设备


[0001]本专利技术涉及移动应用开发和流媒体
,具体涉及一种基于Android系统唱歌软件中音频合成的方法和电子设备。

技术介绍

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

技术实现思路

[0009]本专利技术针对现有技术中的不足,提供一种基于Android系统唱歌软件中音频合成的方法和电子设备,能在唱歌结束后快速输出混音文件,且保证伴奏和人声的同步。
[0010]为实现上述目的,本专利技术采用以下技术方案:
[0011]一种基于Android系统唱歌软件中音频合成的方法,包括以下步骤:
[0012]S1、获取音频源文件,并对源文件进行解码获得左右声道音频文件,分别为伴奏音频文件source_left.pcm和人声音频文件source_right.pcm;
[0013]S2、开启唱歌模式;播放伴奏音频文件并录取声音,通过回调函数得到伴奏数据流palyerData和录音数据流recordData;并采用双阀启停同步方法使伴奏数据流palyerData与录音数据流recordData的音轨时长一致;
[0014]S3、对步骤S2获得的伴奏数据流palyerData和录音数据流recordData进行定容切分;
[0015]S4、通过前置算法处理单元对步骤S3定容切分后的录音数据流recordData进行降噪和回音消除处理,得到处理后的录音数据流denoiseRecordData;
[0016]S5、开启响应式责任链录混同步机制,对步骤S3定容切分后的伴奏数据流palyerData和步骤S4得到的处理后的录音数据流denoiseRecordData进行混音,输出混音文件mix.pcm;
[0017]S6、退出唱歌模式,开启后台Service服务,通过后置算法处理单元提取步骤S5得到的混音文件mix.pcm,并执行用户属性配置处理,输出设定格式的最终音频文件。
[0018]作为优选,步骤S2所述的双阀启停同步方法为:在录音线程和播放线程中各设置独立的线程阀,所述录音线程用于录取声音,所述播放线程用于播放伴奏音频文件并回调伴奏数据;设置在录音线程和播放线程中的线程阀默认都是关闭状态,阻止回调函数回传数据;当录音线程和播放线程中线程阀仅在均接收到回调函数获取的首帧数据时,两个线程阀同时打开,允许回调函数回传数据;当唱歌模式结束时,两个线程阀同时关闭。
[0019]作为优选,步骤S3所述定容切分是按照设定的PCM数据粒度length进行切分。
[0020]作为优选,所述PCM数据粒度length为1024的偶数倍。
[0021]作为优选,步骤S4所述的前置算法单元包括预处理模块、降噪执行器模块和回音消除执行器模块;所述预处理模块用于将步骤S3定容切分后的录音数据流recordData进行byte到short的数据类型转换;所述降噪执行器模块通过自适应增益平均的谱减算法去除预处理模块转换后的数据中的噪声数据;所述回音消除执行器模块通过自适应滤波算法去除预处理模块转换后的数据中的回音数据。
[0022]作为优选,所述前置算法单元的处理过程为:
[0023]S401、初始化三个模块;设置各个模块的相关参数;
[0024]S402、通过预处理模块对步骤S3定容切分后的录音数据流recordData进行格式转换;
[0025]S403、将经步骤S402转换后的数据交给降噪执行器模块和回音消除执行器模块均
处理一遍;
[0026]S404、将经步骤S403处理后的数据进行格式逆转得到处理后的录音数据流denoiseRecordData,通过JNI接口回调该数据流。
[0027]作为优选,步骤S5所述的响应式责任链录混同步机制包括录音责任链池、伴奏责任链池和混音责任链池;所述录音责任链池用于将步骤S4得到的处理后的录音数据流denoiseRecordData依次传递给混音责任链池;所述伴奏责任链池本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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进行b...

【专利技术属性】
技术研发人员:张秀良程炳华陆爱霖闫卫张芯苑
申请(专利权)人:金陵科技学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1