掌桥专利:专业的专利平台
掌桥专利
首页

一种音频处理方法、装置、设备及介质

文献发布时间:2023-06-19 09:55:50


一种音频处理方法、装置、设备及介质

技术领域

本申请涉及计算机技术领域,特别涉及一种音频处理方法、装置、设备、介质。

背景技术

在原创歌曲的创作中,需要由专业的音乐人对曲谱进行配和弦,并录制由专业的乐器演奏家演奏的主旋律以及和弦伴奏,这样对相关人员的音乐知识要求很高,且整个过程耗时长,成本高。

为解决上述问题,现有技术主要是,先将采集到的用户音频转换为MIDI(MusicalInstrument Digital Interface,乐器数字接口)文件,然后对MIDI文件进行分析,以生成和弦伴奏对应的MIDI文件。

发明人发现以上现有技术中至少存在如下问题,上述现有技术依赖MIDI文件作为输入与输出,需要使用其他方法对输入采样处理为MIDI文件。这会因为MIDI文件信息量较少、识别转换不完全准确等原因产生积累误差。同时,最后只生成MIDI文件,而MIDI文件播放依赖音频设备的性能,易产生音频音色失真的问题,从而可能达不到预期的效果,在传播过程中使得用户体验不一致。

发明内容

有鉴于此,本申请的目的在于提供一种音频处理方法、装置、设备、介质,能够生成用户哼唱音频对应的旋律节奏和和弦伴奏音频,且不易产生累计误差,使得不同用户的音乐体验一致。其具体方案如下:

为实现上述目的,第一方面,提供了一种音频处理方法,包括:

获取待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息;

基于所述音符信息、所述每分钟节拍信息确定所述待处理音频对应的和弦;

根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件;

根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,其中,所述和弦伴奏参数为用户设置的和弦伴奏生成参数;

输出所述MIDI文件及所述和弦伴奏音频。

可选地,所述获取待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,包括:

获取待处理哼唱音频;

确定所述待处理哼唱音频中各个第一音频帧的目标基音周期,并基于所述目标基音周期确定出各个第一音频帧对应的音符信息,其中,所述第一音频帧为时长等于第一预设时长的音频帧;

确定所述待处理哼唱音频中各个第二音频帧的声能,并基于所述声能确定出所述待处理哼唱音频对应的每分钟节拍信息,其中,所述第二音频帧为包括预设数量个采样点的音频帧。

可选地,所述确定所述待处理哼唱音频中各个第一音频帧的目标基音周期,包括:

利用短时自相关函数和预设清浊音检测方法确定所述待处理哼唱音频中各个第一音频帧的目标基音周期。

可选地,所述利用短时自相关函数和预设清浊音检测方法确定所述待处理哼唱音频中各个第一音频帧的目标基音周期,包括:

利用短时自相关函数确定所述待处理哼唱音频中各个第一音频帧的预选基音周期;

利用预设清浊音检测方法确定各个所述第一音频帧是否为浊音帧;

如果所述第一音频帧为浊音帧,则将所述第一音频帧对应的预选基音周期确定为所述第一音频帧对应的目标基音周期。

可选地,所述基于所述目标基音周期确定出各个第一音频帧对应的音符信息,包括:

分别基于各个所述目标基音周期确定各个所述第一音频帧的音高;

基于各个所述第一音频帧的音高确定各个所述第一音频帧对应的音符;

将各个第一音频帧对应的音符和各个第一音频帧对应的起止时间确定为各个所述第一音频帧对应的音符信息。

可选地,所述确定所述待处理哼唱音频中各个第二音频帧的声能,并基于所述声能确定出所述待处理哼唱音频对应的每分钟节拍信息,包括:

确定所述待处理哼唱音频中当前第二音频帧的声能以及当前第二音频帧对应的平均声能,其中,所述平均声能为当前第二音频帧的终止时刻之前的过去连续第二预设时长之内的各个第二音频帧的声能的平均值;

基于所述平均声能构建目标比较参数;

判断当前第二音频帧的声能是否大于所述目标比较参数;

如果当前第二音频帧的声能大于所述目标比较参数,则判定当前第二音频帧为一个节拍,直到所述待处理哼唱音频中的各个第二音频帧检测完成,得到所述待处理哼唱歌曲中的节拍总数,基于所述节拍总数确定出所述待处理哼唱音频对应的每分钟节拍信息。

可选地,所述基于所述平均声能构建目标比较参数,包括:

确定出当前第二音频帧的终止时刻之前的过去连续第二预设时长之内的各个第二音频帧的声能相对于所述平均声能的偏移量和;

基于所述偏移量和确定所述平均声能的校准因子;

基于所述校准因子对所述平均声能进行校准,得到所述目标比较参数。

可选地,所述基于所述音符信息、所述每分钟节拍信息确定所述待处理音频对应的和弦,包括:

基于所述音符信息确定出所述待处理哼唱音频的调性;

基于所述待处理哼唱音频的调性从预设和弦中确定出预选和弦;

基于所述音符信息和所述每分钟节拍信息从所述预选和弦中确定出待处理音频对应的和弦。

可选地,所述基于所述音符信息确定出所述待处理哼唱音频的调性,包括:

在预设调节参数取不同值时,确定出所述音符信息中的音符序列对应的实时调性特征;

将各个实时调性特征与预设调性特征相匹配,并将匹配度最高的实时调性特征确定为目标实时调性特征;

基于所述目标实时调性特征对应的所述预设调节参数的取值以及与所述目标实时调性特征最匹配的预设调性特征对应的预设调节参数取值与调性对应关系确定出所述待处理哼唱音频的调性。

可选地,所述基于所述音符信息和所述每分钟节拍信息从所述预选和弦中确定出待处理音频对应的和弦,包括:

基于所述每分钟节拍信息将所述音符信息中的音符按照时间序列划分为不同的小节;

将各个小节的音符分别与各个所述预选和弦进行匹配,确定出各个小节对应的和弦,以确定出所述待处理音频对应的和弦。

可选地,所述根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,包括:

判断所述和弦伴奏参数中的和弦参数是否表示常用和弦;

如果所述和弦伴奏参数中的和弦参数表示常用和弦,则根据预设常用和弦库中的常用和弦组对所述和弦进行优化,得到优化后和弦;

根据预先获取到的和弦和音符对应关系将所述优化后和弦转换为优化后音符;

根据所述和弦伴奏参数中的乐器类型参数和乐器音高参数确定出所述优化后音符中各个音符对应的音频素材信息,并按照预设混音规则对所述音频素材信息对应的音频素材进行混音;

将混合后音频写入WAV文件中,得到待处理哼唱对应的和弦伴奏音频。

可选地,所述根据预设常用和弦库中的常用和弦组对所述和弦进行优化,得到优化后和弦,包括:

基于所述音符信息确定出所述待处理哼唱音频的调性;

对所述和弦进行分组,得到不同的和弦组;

分别将当前和弦组与预设常用和弦库中的与所述调性对应的各个常用和弦组进行匹配,并将匹配度最高的常用和弦组确定为当前和弦组对应的优化后和弦组,直到确定出各个和弦组对应的优化后和弦组,得到优化后和弦。

可选地,所述根据所述和弦伴奏参数中的乐器类型参数和乐器音高参数确定出所述优化后音符中各个音符对应的音频素材信息,并按照预设混音规则对所述音频素材信息对应的音频素材进行混音,包括:

根据所述和弦伴奏参数中的乐器类型参数和乐器音高参数确定出所述优化后音符中各个音符对应的音频素材信息,其中,所述音频素材信息包括素材标识、音高、起始播放位置以及素材时长;

将所述音频素材信息按照预设混音规则放入预设发声数组中,并对当前节拍在所述预设发声数组中的音频素材信息指向的预设音频素材库中的音频素材进行混音,其中,节拍根据所述每分钟节拍信息确定。

第二方面,提供了一种音频处理装置,包括:

音频获取模块,用于获取待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息;

和弦确定模块,用于基于所述音符信息、所述每分钟节拍信息确定出所述待处理音频对应的和弦;

MIDI文件生成模块,用于根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件;

和弦伴奏生成模块,用于根据所述每分钟节拍信息、所述和弦和获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,其中,所述和弦伴奏参数为用户设置的和弦伴奏生成参数;

输出模块,用于输出所述MIDI文件及所述和弦伴奏音频。

第三方面,提供了一种电子设备,包括:

存储器和处理器;

其中,所述存储器,用于存储计算机程序;

所述处理器,用于执行所述计算机程序,以实现前述公开的音频处理方法。

第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的音频处理方法。

可见,本申请先获取待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息,然后基于所述音符信息、所述每分钟节拍信息确定所述待处理音频对应的和弦,再根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件,并根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,然后便可以输出所述MIDI文件及所述和弦伴奏音频。由此可见,本申请在获取到待处理哼唱音频之后,便可以得到对应的音乐信息,相比于前述现有技术,不需要先将待处理哼唱音频转换成MIDI文件,然后再对转化成的MIDI文件进行分析,所以也就不易造成先将音频转换成MIDI文件带来的误差累积问题。此外,不仅需要根据音乐信息生成主旋律音频对应的MIDI文件,还需要根据音乐信息以及和弦生成对应的和弦伴奏音频,相比于前述现有技术中的只是生成和弦伴奏对应的MIDI文件带来的用体验不一致问题,本申请通过既生成待处理哼唱音频主旋律对应的MIDI文件,又直接生成待处理哼唱音频对应的和弦伴奏音频,这样由于和弦伴奏音频对音频设备的性能依赖较低,能够使得不同用户的体验一致,得到预期的用户体验效果。

附图说明

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

图1为本申请提供的音频处理方案所适用的系统框架示意图;

图2为本申请公开的一种音频处理方法流程图;

图3为本申请公开的一种音频处理方法流程图;

图4为本申请公开的一种音符对照图;

图5为本申请公开的一种音符检测结果图;

图6为本申请公开的一种主音表;

图7为本申请公开的一种具体的音频处理方法流程图;

图8为一种和弦和音符对照表;

图9为一种琶音和音符对照表;

图10为本申请公开的一种具体的音频素材混合流程图;

图11a为本申请公开的一种APP应用界面;

图11b为本申请公开的一种APP应用界面;

图11c为本申请公开的一种APP应用界面;

图12为本申请公开的一种音频处理装置结构示意图;

图13为本申请公开的一种电子设备结构示意图。

具体实施方式

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

为了便于理解,先对本申请的音频处理方法所适用的系统框架进行介绍。可以理解的是,本申请实施例中并不对计算机设备的数量进行限定,其可以是多个计算机设备共同协作完成音频处理功能。在一种可能的情况中,请参考图1。由图1可知,该硬件组成框架可以包括:第一计算机设备101、第二计算机设备102。第一计算机设备101与第二计算机设备102之间通过网络103实现通信连接。

在本申请实施例中,在此不具体限定第一计算机设备101与第二计算机设备102的硬件结构,第一计算机设备101与第二计算机设备102两者进行数据交互,实现音频处理功能。进一步,本申请实施例中并不对网络103的形式进行限定,如,网络103可以是无线网络(如WIFI、蓝牙等),也可以是有线网络。

其中,第一计算机设备101和第二计算机设备102可以是同一种计算机设备,如第一计算机设备101和第二计算机设备102均为服务器;也可以是不同类型的计算机设备,如,第一计算机设备101可以是终端或智能电子设备,第二计算机设备102可以服务器。在又一种可能的情况中,可以利用计算能力强的服务器作为第二计算机设备102来提高数据处理效率及可靠性,进而提高音频处理效率。同时利用成本低、应用范围广的终端或智能电子设备作为第一计算机设备101,用于实现第二计算机设备102与用户之间的交互。

举例说明,请参考图2,终端在获取到待处理哼唱音频后,将待处理哼唱音频发送到所述终端对应的服务器,服务器在接收到所述待处理哼唱音频之后,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息,然后再基于音符信息、每分钟节拍信息确定所述待处理音频对应的和弦,接着还需要根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件,并根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频。然后便可以将生成的MIDI文件和所述和弦伴奏音频输出至终端,终端在接收到用户触发的第一播放指令时,便可以读取获取到的MIDI文件,播放对应的音频,在接收到用户触发的第二播放指令时,便可以播放获取到的和弦伴奏音频。

当然,在实际应用中,也可以由终端来完成整个前述音频处理过程,也即,通过终端的语音采集模块获取到待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息,然后再基于音符信息、每分钟节拍信息确定所述待处理音频对应的和弦,接着还需要根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件,并根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频。然后便可以将生成的MIDI文件和所述和弦伴奏音频输出至相应的路径下进行保存,在接收到用户触发的第一播放指令时,便可以读取获取到的MIDI文件,播放对应的音频,在接收到用户触发的第二播放指令时,便可以播放获取到的和弦伴奏音频。

参见图3所示,本申请实施例公开了一种音频处理方法,该方法包括:

步骤S11:获取待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息。

在具体的实施过程中,需要先获取待处理哼唱音频,其中,所述待处理哼唱音频可以为通过语音采集设备采集到的用户哼唱的音频,以得到所述待处理哼唱音频对应的音乐信息。具体的,可以先获取待处理哼唱音频,然后对获取到的待处理哼唱音频进行音乐信息检索,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息。

其中,音乐信息检索(Music Information Retrieval)包含对获取到的音频进行音高/旋律提取、自动记谱、节奏分析、和声分析、歌声信息处理、音乐搜索、音乐结构分析、音乐情感计算、音乐推荐、音乐分类、音乐生成中的自动作曲、歌声合成、数字乐器声合成等。

在实际应用中,当前计算机设备获取所述待处理哼唱音频包括通过自身输入单元获取所述待处理哼唱音频,如当前计算机设备通过语音采集模块采集所述待处理哼唱音频,或者当前计算机设备从清唱音频库中获取所述待处理哼唱音频,其中,所述清唱音频库中可以包括预先获取到的不同的用户清唱音频。当前计算机设备也可以通过网络(可以是有线网络或者是无线网络)获取其他设备发送的待处理哼唱音频,当然,本申请实施例中并不限定其他设备(如其他计算机设备)获取所述待处理哼唱音频的方式。例如,其他设备(如终端)可以接收用户通过语音输入模块输入的待处理哼唱音频。

具体的,获取所述待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,包括:获取所述待处理哼唱音频;确定所述待处理哼唱音频中各个第一音频帧的目标基音周期,并基于所述目标基音周期确定出各个第一音频帧对应的音符信息,其中,所述第一音频帧为时长等于第一预设时长的音频帧;确定所述待处理哼唱音频中各个第二音频帧的声能,并基于所述声能确定出所述待处理哼唱音频对应的每分钟节拍信息,其中,所述第二音频帧为包括预设数量个采样点的音频帧。

也即,可以先确定所述待处理哼唱音频中各个第一音频帧对应的目标基音周期,然后便可以基于所述目标基音周期确定出各个第一音频帧对应的音符信息,在此处的音频分帧方法是将连续第一预设时长的音频分为一个第一音频帧。对于基音检测一般要求一帧至少包含2个以上的周期,通常音高最低50Hz,也即周期最长为20ms,故一个所述第一音频帧的帧长一般要求大于40ms。

其中,确定所述待处理哼唱音频中各个第一音频帧的目标基音周期,包括:利用短时自相关函数和预设清浊音检测方法确定所述待处理哼唱音频中各个第一音频帧的目标基音周期。

人在发音时,根据声带震动可以将语音信号分为清音跟浊音两种,其中,浊音在时域上呈现出明显的周期性。语音信号是非平稳信号,它的特征随时间变化,但在一个很短的时间段内可以认为具有相对稳定的特征即短时平稳性。所以可以利用短时自相关函数和预设清浊音检测方法确定出所述待处理哼唱音频中各个第一音频帧的目标基音周期。

具体的,可以利用短时自相关函数确定所述待处理哼唱音频中各个第一音频帧的预选基音周期;利用预设清浊音检测方法确定各个所述第一音频帧是否为浊音帧;如果所述第一音频帧为浊音帧,则将所述第一音频帧对应的预选基音周期确定为所述第一音频帧对应的目标基音周期。也即,对于当前第一音频帧来说,可以先通过短时自相关函数确定出预选基音周期,然后利用预设清浊音检测方法确定当前第一音频帧是否为浊音帧,如果当前第一音频帧为浊音帧,则将当前第一音频帧的预选基音周期作为当前第一音频帧的目标基音周期,如果当前第一音频帧为清音帧,则将当前第一音频帧的预选基音周期确定为无效基音周期。

其中,所述利用预设清浊音检测方法确定当前第一音频帧是否为浊音帧,可以通过判断当前第一音频帧上浊音频段上的能量占清浊音频段的能量的比值是否大于或等于预设的能量比阈值来确定出当前第一音频帧是否为浊音帧,所述浊音频段通常为100Hz~4000Hz,清音频段通常为4000Hz~8000Hz,所以所述清浊音频段通常为100Hz~8000Hz。此外,也可以采用其他的清浊音检测方法,在此不做具体的限定。

相应的,在确定出各个所述第一音频帧对应的目标基音周期之后,便可以基于所述目标基音周期确定出各个第一音频帧对应的音符信息。具体的,分别基于各个所述目标基音周期确定各个所述第一音频帧的音高;基于各个所述第一音频帧的音高确定各个所述第一音频帧对应的音符;将各个第一音频帧对应的音符和各个第一音频帧对应的起止时间确定为各个所述第一音频帧对应的音符信息。

将所述基于所述目标基音周期确定出各个第一音频帧对应的音符信息通过第一运算公式表达出来为:

其中,note表示当前第一音频帧对应的音符,pitch表示当前第一音频帧对应的音高,T当前第一音频帧对应的目标基音周期。

参见图4所示为,音符(note)与钢琴上的音符、频率以及周期的对应关系。通过图4可知,例如,当音高为220Hz时,音符为第57号音符,对应到钢琴音符上为A3音符。

通常计算出来的note为小数,取最接近的整数即可。并同时记录当前音符的起止时间,当未检测到浊音时,则认为是其他干扰或者停顿,并不是有效的哼唱,这样可以得到一串离散分布的音符序列,可以以钢琴卷帘的形式表示如图5所示。

在实际应用中,所述确定所述待处理哼唱音频中各个第二音频帧的声能,并基于所述声能确定出所述待处理哼唱音频对应的每分钟节拍信息,可以具体包括:确定所述待处理哼唱音频中当前第二音频帧的声能以及当前第二音频帧对应的平均声能,其中,所述平均声能为当前第二音频帧的终止时刻之前的过去连续第二预设时长之内的各个第二音频帧的声能的平均值;基于所述平均声能构建目标比较参数;判断当前第二音频帧的声能是否大于所述目标比较参数;如果当前第二音频帧的声能大于所述目标比较参数,则判定当前第二音频帧为一个节拍,直到所述待处理哼唱音频中的各个第二音频帧检测完成,得到所述待处理哼唱歌曲中的节拍总数,基于所述节拍总数确定出所述待处理哼唱音频对应的每分钟节拍信息。

其中,基于所述平均声能构建目标比较参数,具体又可以包括:确定出当前第二音频帧的终止时刻之前的过去连续第二预设时长之内的各个第二音频帧的声能相对于所述平均声能的偏移量和;基于所述偏移量和确定所述平均声能的校准因子;基于所述校准因子对所述平均声能进行校准,得到所述目标比较参数。将上述过程用第二运算公式可以表示为:

P=C·avg(E)

C=-0.0000015var(E)+1.5142857

其中,P表示当前第二音频帧的目标比较参数,C表示当前第二音频帧的校准因子,E

以每帧1024点为例,先计算当前帧的能量如下:

然后将该帧的能量存到一个循环buffer中,记录过去1s时长的所有帧能量,以44100Hz采样率为例,则保存43帧的能量,并计算过去1s内平均能量如下:

如果当前帧能量E

P=C·avg(E)

C=-0.0000015var(E)+1.5142857

直到检测完毕,得到所述待处理哼唱音频中包括的节拍总数,将节拍总数除以所述待处理哼唱音频对应的时长,其中,所述时长以分钟为单位,即换算成一分钟的beat数即为每分钟节拍数(beats per minute,BPM)。得到了BPM后,以4/4拍为例,可以计算得到每一小节的时长为4*60/BPM。

在实际应用中,由于前1s的干扰较多,所以通常是从第1s开始的第一个第二音频帧开始检测节拍,也即,从第1s开始,每1024个采样点作为一个第二音频帧,例如,将从第1s开始的连续1024个采样点作为第一个第二音频帧,然后计算这个第二音频帧的声能以及第1s开始的第1024个采样点之前的过去1s之内各个第二音频帧的声能的平均声能,以及进行之后的操作。

步骤S12:基于所述音符信息、所述每分钟节拍信息确定所述待处理音频对应的和弦。

在确定出所述待处理哼唱音频对应的音乐信息之后,便可以基于所述音符信息、所述每分钟节拍信息确定所述待处理音频对应的和弦。

具体的,需要先基于所述音符信息确定出所述待处理哼唱音频的调性,然后基于所述待处理哼唱音频的调性从预设和弦中确定出预选和弦,再基于所述音符信息和所述每分钟节拍信息从所述预选和弦中确定出待处理音频对应的和弦。其中,所述预设和弦为预先设定的和弦,不同调性有对应的预设和弦,所述预设和弦可以支持扩展,也即可以将向所述预设和弦中增加和弦。

首先,所述基于所述音符信息确定出所述待处理哼唱音频的调性,可以具体包括:在预设调节参数取不同值时,确定出所述音符信息中的音符序列对应的实时调性特征,然后将各个实时调性特征与预设调性特征相匹配,并将匹配度最高的实时调性特征确定为目标实时调性特征,再基于所述目标实时调性特征对应的所述预设调节参数的取值以及与所述目标实时调性特征最匹配的预设调性特征对应的预设调节参数取值与调性对应关系确定出所述待处理哼唱音频的调性。

在配和弦样式前,首先要确定哼唱的调,也即调性,即需要确定哼唱的主音和调式,调式分为大调和小调,而主音有12个,总共有24个调。大调和小调每个音之间的音程关系分别如下:

也即,大调时,从主音开始两个音之间的音程关系依次为全音、全音、半音、全音、全音、全音、半音,小调时,从主音开始两个音之间的音程关系依次为全音、半音、全音、全音、半音、全音、全音。

参见图6所示为,大调的12个主音和小调的12个主音。图6表示的左列(Major Key)为大调,右列(Minor Key)为小调,其中,表中的“#”表示升一个半音,“b”表示降一个半音。也即,大调一共12个,分别是C大调、C#大调、D大调、D#大调、E大调、F大调、F#大调、G大调、G#大调、A大调、A#大调、B大调。小调一共12个,分别是A小调、A#小调、B小调、C小调、C#小调、D小调、D#小调、E小调、F小调、F#小调、G小调、G#小调。

可以采用shift表示所述预设调节参数,且shift可以取0-11,在所述预设调节参数取不同值时,确定出所述音符信息中的音符序列对应的实时调性特征。也即,在所述预设调节参数取不同值时,通过第三运算公式确定出所述音符信息中的音符序列中各个音符的模值,将所述预设调节参数在当前取值下,各个音符对应的模值作为音符信息中的音符序列对应的实时调性特征,其中,所述第三运算公式为:

M

其中,M

在所述预设调节参数取不同值时,得到对应的实时调性特征,将各个所述实时调性特征与预设调性特征相匹配,并将匹配度最高的实时调性特征确定为目标实时调性特征。其中,所述预设调性特征为C大调的调性特征(0 2 4 5 7 9 11 12)以及C小调的调性特征(0 2 3 5 7 8 10 12)。具体的,就是将各个实时调性特征分别与上述两个调性特征进行匹配,看哪一个实时调性特征中的模值落入这两个预设调性特征中的个数最多,将其确定为确定出目标实时调性特征。例如,实时调性特征S、H、X中均包括10个模值,然后实时调性特征S落入C大调的调性特征中的模值为10个,落入C小调的调性特征中的模值为5个;实时调性特征H落入C大调的调性特征中的模值为7个,落入C小调的调性特征中的模值为4个;实时调性特征X落入C大调的调性特征中的模值为6个,落入C小调的调性特征中的模值为8个。则实时调性特征S与C大调的调性特征匹配度最高,则将实时调性特征S确定出目标实时调性特征。

C大调对应的预设调节参数取值与调性对应关系为:当shift取0时,对应为C大调;当shift取1时,对应为B大调;当shift取2时,对应为A#大调;当shift取3时,对应为A大调;当shift取4时,对应为G#大调;当shift取5时,对应为G大调;当shift取6时,对应为F#大调;当shift取7时,对应为F大调;当shift取8时,对应为E大调;当shift取9时,对应为D#大调;当shift取10时,对应为D大调;当shift取11时,对应为C#大调。

C小调对应的预设调节参数取值与调性对应关系为:当shift取0时,对应为C小调;当shift取1时,对应为B小调;当shift取2时,对应为A#小调;当shift取3时,对应为A小调;当shift取4时,对应为G#小调;当shift取5时,对应为G小调;当shift取6时,对应为F#小调;当shift取7时,对应为F小调;当shift取8时,对应为E小调;当shift取9时,对应为D#小调;当shift取10时,对应为D小调;当shift取11时,对应为C#小调。

所以,便可以基于所述目标实时调性特征对应的所述预设调节参数的取值以及与所述目标实时调性特征最匹配的预设调性特征对应的预设调节参数取值与调性对应关系确定出所述待处理哼唱音频的调性。例如,上述将实时调性特征S确定出目标实时调性特征之后,由于与实时调性特征S最匹配的为C大调,所以如果实时调性特征S对应的shift取2时,该待处理哼唱音频对应为A#大调。

确定出所述待处理哼唱音频的调性之后,便可以基于所述待处理哼唱音频的调性从预设和弦中确定出预选和弦,也即,预先设置各个调性对应的预设和弦,不同的调性可以对应不同的预设和弦,然后在确定出所述待处理哼唱音频对应的调性之后,便可以根据所述待处理哼唱频频对应的调性从预设和弦中确定出预选和弦。

C大调是由7个音组成的音阶,所以C调是7个和弦。具体情况如下:

(1)、主音上的是1 3 5大三和弦。

(2)、上主音上的是2 4 6小三和弦。

(3)、中音上的是3 5 7小三和弦。

(4)、下属音上的是4 6 1大三和弦。

(5)、属音上的是5 7 2大三和弦。

(6)、下中音上的是6 1 3小三和弦。

(7)、导音上的是7 2 4减三和弦。

其中,C大调有三个大三和弦,C也即(1)、F也即(4)、G也即(5),三个小三和弦,Dm也即(2)、Em也即(3)、Am也即(6),一个减三和弦,Bdmin也即(7)。其中,m表示小三和弦,dmin表示减少和弦。

上述7个和弦中所述的主音、上主音、中音、下属音、属音、下中音以及导音的具体概念可以参考现有技术,在此不做具体解释。

而C小调和弦包括:Cm(1-b3-5)、Ddim(2-4-b6)、bE(b3-5-7)、Fm(4-b6-1)、G7(5-7-2-4)、bA(b6-1-b3)、bB(b7-b2-4)。

调性为C#小调时,预设和弦可以见下表一所示,此时不考虑减三和弦:

表一

具体的,就是预设了以C#为根音的小三和弦C#、E、G#,以F#为根音的小三和弦F#、A、C#,以G#为根音的小三和弦G#、B、D#,以及分别以E、A、B为根音的大三和弦,以及分别以E、A、B为根音的大小七和弦。

当所述待处理哼唱音频为C#小调时,便将上表中的9个和弦确定为所述待处理音频哼唱音频对应的预选和弦,然后便可以基于所述音符信息和所述每分钟节拍信息从所述预选和弦中确定出待处理音频对应的和弦,具体的,基于所述每分钟节拍信息将所述音符信息中的音符按照时间序列划分为不同的小节;将各个小节的音符分别与各个所述预选和弦进行匹配,确定出各个小节对应的和弦,以确定出所述待处理音频对应的和弦。

例如,第一小节的音符是E、F、G#、D#,对于大三和弦,音程关系是0、4、7,当所述待处理哼唱音频对应的调性为C#小调时,如果有音符落入E+0,E+4,E+7中,则计数加1,发现E(1)+4=G#,其中E(1)括号中便是当前落入大三和弦E中的音符数,说明当前小节又有一个音符落入大三和弦E,E(2)+7=B,此时可以确定第一小节中有2个音符落入大三和弦E中,统计完第一小节落入所有和弦样式的音符数,找到落入音符数最多的那个和弦样式即为该小节对应的和弦。

直到确定出待处理哼唱音频中各个小节对应的和弦,便得到了所述待处理哼唱音频对应的和弦。

步骤S13:根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件。

确定出所述待处理哼唱音频对应的和弦之后,便可以根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件。

其中,MIDI(乐器数字接口,Musical Instrument Digital Interface)。大部分可播放音频的数码产品支持播放这类文件。与波形文件不同,MIDI文件不对音频进行抽样,而是将音乐的每个音符记录为一个数字,所以与波形文件相比要小得多。MIDI标准规定了各种音调、乐器的混合及发音,通过输出装置可以将这些数字重新合成为音乐。

结合计算得到了所述待处理哼唱音频对应的BPM,即得到了节奏信息,又获取了音符序列的起止时间,即可按照MIDI的格式编码成MIDI文件。

步骤S14:根据所述每分钟节拍信息、所述和弦和获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频。

确定出所述待处理哼唱音频对应的和弦之后,便可以根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,其中,所述和弦伴奏参数为用户设置的和弦伴奏生成参数。在具体的实施过程中,所述和弦伴奏参数可以为用户选择的默认和弦伴奏生成参数,也可以为用户具体设置的和弦伴奏生成参数。

步骤S15:输出所述MIDI文件及所述和弦伴奏音频。

可以理解的是,在生成所述MIDI文件及所述和弦伴奏音频之后,便可以输出所述MIDI文件及所述和弦伴奏音频。其中,所述输出所述MIDI文件及所述和弦伴奏音频可以为将所述MIDI文件及所述和弦伴奏音频从一个设备传输到另外一个设备,或者是将MIDI文件及所述和弦伴奏音频输出到具体路径下进行存储,以及对外播放所述MIDI文件及所述和弦伴奏音频等,在此不做具体限定,可以根据具体情况确定。

可见,本申请先获取待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息,然后基于所述音符信息、所述每分钟节拍信息确定所述待处理音频对应的和弦,再根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件,并根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,然后便可以输出所述MIDI文件及所述和弦伴奏音频。由此可见,本申请在获取到待处理哼唱音频之后,便可以得到对应的音乐信息,相比于前述现有技术,不需要先将待处理哼唱音频转换成MIDI文件,然后再对转化成的MIDI文件进行分析,所以也就不易造成先将音频转换成MIDI文件带来的误差累积问题。此外,不仅需要根据音乐信息生成主旋律音频对应的MIDI文件,还需要根据音乐信息以及和弦生成对应的和弦伴奏音频,相比于前述现有技术中的只是生成和弦伴奏对应的MIDI文件带来的用体验不一致问题,本申请通过既生成待处理哼唱音频主旋律对应的MIDI文件,又直接生成待处理哼唱音频对应的和弦伴奏音频,这样由于和弦伴奏音频对音频设备的性能依赖较低,能够使得不同用户的体验一致,得到预期的用户体验效果。

参见图7所示,根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,具体可以包括:

步骤S21:判断所述和弦伴奏参数中的和弦参数是否表示常用和弦。

首先需要判断获取的和弦伴奏生成参数中的和弦参数是否表示常用和弦,如果是,则表示需要对前述确定出的和弦中的和弦进行优化,以便解决和弦中因用户哼唱错误导致的和弦不和谐问题。如果所述和弦参数表示自由和弦,则可以直接将所述和弦作为所述优化后和弦。

步骤S22:如果所述和弦伴奏参数中的和弦参数表示常用和弦,则根据预设常用和弦库中的常用和弦组对所述和弦进行优化,得到优化后和弦。

相应的,当所述和弦参数表示常用和弦时,便需要根据预设常用和弦库中的常用和弦组对所述和弦进行优化,得到优化后和弦。通过预设常用和弦库中的常用和弦组对所述和弦进行优化可以使得得到的优化后和弦中不易出现因为所述待处理哼唱音频中的走音等带来的不和谐和弦,使得最终生成的和弦伴奏音频更符合用户的听觉体验。

具体的,就是对所述和弦进行分组,得到不同的和弦组;分别将当前和弦组与预设常用和弦库中的与所述调性对应的各个常用和弦组进行匹配,并将匹配度最高的常用和弦组确定为当前和弦组对应的优化后和弦组,直到确定出各个和弦组对应的优化后和弦组,得到优化后和弦。

也即,分别将当前和弦组与预设常用和弦库中的与所述调性对应的各个常用和弦组进行匹配,得到当前和弦组与各个常用和弦组的匹配度,并将匹配度最高的常用和弦组确定为当前和弦组对应的优化后和弦组,直到确定出各个和弦组对应的优化后和弦组,得到优化后和弦。

其中,对所述和弦进行分组,得到不同的和弦组,可以具体为将所述和弦中的每四个和弦分为一个和弦组,如果没有到连续的四个和弦就出现了空和弦,则可以直接有多少个连续的和弦就将这几个和弦分为一个和弦组。

例如,和弦为C,E,F,A,C,A,B,W,G,D,C,其中W表示空和弦,则先将C,E,F,A分为一个和弦组,然后再将C,A,B分为一个和弦组,然后再将G,D,C分为一个和弦组。

参见下表二所示,常用和弦库中的常用和弦组包括大调对应的9个和弦组,以及小调对应的3个和弦组,当然,可以是包括更多或更少的常用和弦组,以及其他常用和弦组样式,在此不对具体的常用和弦组做具体限定,可以根据实际情况设置。

表二

将当前和弦组与预设常用和弦库中的与所述调性对应的各个常用和弦组进行匹配,得到当前和弦组与各个常用和弦组的匹配度。具体为,将当前和弦组合与第一个常用和弦组中的对应位置的和弦进行匹配,确定出对应的距离差,其中,所述距离差为实际距离差的绝对值,得到当前和弦组与第一个常用和弦组中的各个和弦之间的距离差和,直到将当前和弦组与所述待处理哼唱音频的调性对应的各个常用和弦匹配完毕,将最小距离差和对应的常用和弦组确定为匹配度最高的常用和弦组,也即当前和弦组对应的优化后和弦组。

例如,常用和弦组以4个和弦为一组(即4小节,16拍)。假设原始识别和弦为(W,F,G,E,B,W,F,G,C,W),W为空和弦不发声,C、D、E、F、G、A、B分别对应1、2、3、4、5、6、7,加上m之后与自身对应值相同,例如,C和Cm都是对应1。

对于F,G,E,B,假设前述确定出的调性中的调式为大调,在大调中进行匹配,计算距离差和。第1种和弦(F,G,Em,Am),距离差为(0,0,0,1),因此距离差和为1,第2种和弦(F,G,C,Am),距离差为(0,0,2,1),距离差和为3,经过对比,第1种和弦的距离差和最小,因此和弦序列将变为(W,F,G,Em,Am,W,A,F,C,W)。

跳过空拍,F,G,C与第2种大调和弦(F,G,C,Am)前三个和弦的距离差和为0,最小,则最终得到的结果为(W,F,G,Em,Am,W,F,G,C,W),距离差和同样小的取序列序号靠前的。例如,当和弦组与第2种大调和弦(F,G,C,Am)、第1种和弦(F,G,Em,Am)的距离差和都是2时,将第1种和弦(F,G,Em,Am)作为当前和弦组对应的优化后和弦组。

步骤S23:根据预先获取到的和弦和音符对应关系将所述优化后和弦转换为优化后音符。

在得到所述优化后和弦之后,还需要根据预先获取到的和弦和音符对应关系将所述优化后和弦转换为优化后音符。具体的,就是需要有预先获取到的和弦和音符对应关系,这样在得到所述优化后和弦之后,便可以根据所述和弦和音符对应关系将所述优化后和弦转换为优化后音符。

在得到所述优化后和弦之后,可以使得和弦更和谐,避免因为用户哼唱时的跑调等原因导致的和弦不和谐,使得得到的和弦伴奏听起来更符合用户的音乐体验。

其中,将普通和弦转换成钢琴音符的对应关系可以见图8所示,一个和弦对应4个音符,普通的一拍一个音符,也即一个和弦一般对应4拍。

对于通过吉他弹奏音符时,需要添加琶音,琶音和弦一般对应4到6个音符。具体的琶音转换成钢琴音符的对应关系可以见图9所示。

步骤S24:根据所述和弦伴奏参数中的乐器类型参数和乐器音高参数确定出所述优化后音符中各个音符对应的音频素材信息,并按照预设混音规则对所述音频素材信息对应的音频素材进行混音。

转换成所述优化后音符之后,还需要根据所述和弦伴奏参数中的乐器类型参数和乐器音高参数确定出所述优化后音符中各个音符对应的音频素材信息,并按照预设混音规则对所述音频素材信息对应的音频素材进行混音。

具体的,就是可以将根据所述和弦伴奏参数中的乐器类型参数和乐器音高参数确定出所述优化后音符中各个音符对应的音频素材信息,其中,所述音频素材信息包括素材标识、音高、起始播放位置以及素材时长,将所述音频素材信息按照预设混音规则放入预设发声数组中,并对当前节拍在所述预设发声数组中的音频素材信息指向的预设音频素材库中的音频素材进行混音,其中,节拍根据所述每分钟节拍信息确定。

得到前述的每分钟节拍信息(也即BPM)之后,便得到和弦伴奏音频的节奏信息,也即通过每分钟节拍信息可以确定出每分钟之内需要均匀演奏多少个音符,由于所述优化后音符为一个音符序列,各个音符是按照在时间先后顺序排列的,便可以确定出每个优化后音符对应的时间,也即可以确定出每个优化后音符的位置,正常节奏下(BPM小于等于200时)一个节拍对应一个音符,所以将对应的音频素材信息按照预设混音规则放入预设发声数组中,并对当前节拍在所述预设发声数组中的音频素材信息指向的预设音频素材库中的音频素材进行混音。

在具体的实施过程中,如果所述预设发声数组中有的音频素材信息指向音频素材的结尾,则表示这段音频素材本次混和完毕,则将对应的音频素材信息从所述预设发声数组中移除。如果优化后音符序列要结束了,则判断所述乐器类型参数对应的乐器中是否有吉他,如果是,则添加相应的琶音。

通过对预先处理过的各类乐器不同音符演奏的音频进行混音,获得近似实际弹奏的效果。实际弹奏音符不会瞬间消失,因此需要一套当前发声序列机制,通过给还未播放完的音频素材设置播放指针,存入发声数组,将其与新加入的音频素材混音并通过压限器修正后一同写入输出WAV文件,以达到更接近真实演奏的伴奏生成效果。

预设发声数组记录的为当前节拍需要混音的素材信息(主要为素材标识—每个素材内容文件对应唯一的一个标识、播放起始位置与素材长度),混音流程示例:假设用户哼唱的原始音频BPM经过识别为60,即每拍60/60=1s,以开头的4拍为例,若每拍新增一个音频素材,时长分别为2s、3s、2s、2s,设素材id分别为1,2,1,4(即第一拍与第三拍使用同一个素材)。因此第一拍时,发声数组内情况为[(1,0)],(1,0)表示素材id=1,起始位置为0,将素材id=1的素材0-1秒(起始为0,一拍持续1s,因此结束为1)的信息,经过压限器写入输出(以下简称输出);当第二拍开始时,第一个素材还有1s才结束,起始位置变为1,而第二拍的素材一开始了,此时发声数组内情况为[(1,1),(2,0)],混合素材id=1的素材1-2秒的信息和素材id=2的素材0-1秒的内容,输出;当第三拍开始时,第一拍的素材已播完,弹出发声数组,第三拍的素材id=1与第一拍一致,此时发声数组内情况为[(2,1),(1,0)],混合素材id=2的素材1-2秒的信息和素材id=1的素材0-1秒的内容,输出;当第四拍开始时,发声数组内情况为[(2,2),(1,1),(4,0)],将三个素材对应时间的内容输出;当第四拍结束时,发声数组内情况为[(4,1)],交给下一拍,其他素材信息已结束弹出。

这样采用将音频素材与音频素材信息分离的机制,通过音频素材标识与音频素材的映射表对应。此时,当伴奏中反复出现相同乐器的相同音符时仅需加载一次音频素材,避免了重复读写带来的较大读写延迟,以达到省时的目的。

在实际应用中,对不同乐器的音频素材在混音时,需要有一定的规则,也即所述预设混音规则,其中,以下规则中所说的弹奏是指音频素材信息添加到发声数组,规则如下:

吉他:吉他伴奏弹奏的基础是音频中提取的和弦样式。正常速率下,通过选择是否对常用和弦匹配,得到优化后和弦序列,而后将优化后和弦序列以音律规则转化为每个节拍的音符,以便进行混音。当BPM超过200时,将切换为副歌模式,除第1拍正常外,第2拍与第4拍中会弹奏当前和弦包含剩余所有音符,而第3拍将清除当前发声数组,加入切音与打板素材。副歌模式带来了更为欢快的模式。伴奏结尾时,一个以结尾和弦样式为基准,通过琶音转换原则获得的琶音音节序列,将最后音节拉长为时长半小节,而其他音节在前半小节匀速弹奏完毕,以达到结尾琶音的效果。

古筝:弹奏方式与正常速率下的吉他一致,但不添加琶音。

以上为和弦乐器规则,吉他为例进行解释,例如,一个小节4拍时,正常速率下一个和弦正好对应一个小节,每个和弦4个音符,因此每拍正好弹奏一个音符。

当BPM超过200(即每拍<0.3s,快节奏模式)时,设置为副歌模式,第一拍弹奏和弦的第一个音符,在第二拍则同时弹奏和弦的2、3、4个音符。第三拍弹奏打板与切音素材,并将发声数组中剩余的吉他音频素材信息全部移除,第四拍操作与第二拍一致,以此营造一种欢快的气氛。

在除空和弦以外的和弦序列弹奏结束后,将增加与最后一个非空和弦相关的琶音,该琶音为4-6个音符(与和弦类型相关,为现有技术),弹奏一个小节,以4拍的小节,6个音符的琶音为例,将前5个音符在前两拍中弹奏,即每个音符弹奏0.4拍后弹奏下一个音符,然后在第三拍开始时弹奏最后一个音符,直到该小节结束,持续2拍。

大鼓与箱鼓:鼓的节奏分为Kick与Snare两种音色。大鼓的Kick打击力度较重,Snare打击力度较轻;而箱鼓正相反。Kick音色以小节为单位,分别在第一拍的正拍,第二拍的3/4拍以及第三拍的反拍出现;Snare音色两拍一个,在第二拍正拍开始。

电音:以架子鼓中的定音鼓、踩镲与贝斯合并生成的音色。定音鼓也分为Kick与Snare两种音色。Snare规则与大鼓一致,Kick音色在每拍的正拍出现;踩镲与贝斯在每拍的反拍出现,其中贝斯弹奏的音调为吉他音的对应映射,没有映射时使用标准音。

沙锤:沙锤分为hard和soft两种音色,hard与soft音色均为一拍两个,hard在正拍上和反拍上发声,soft在1/4拍和3/4拍上发声。

以上打击乐器规则,对上述打击乐器的规则进行解释:一个4拍的小节,其延续长度可以理解为[0,4)的区间,0为第一拍开头,4为第四拍结尾。一种音色对应相应的一种素材,正拍代表节拍前半部分时,如第一拍的正拍开始时间为0,第二拍正拍开始时间为1;反拍代表一拍后半部分时,即第一拍反拍开始时间为0.5,第二拍为1.5。因此1/4拍,3/4拍等即代表素材插入时间处于一拍的0.25、0.75处,以此类推。

步骤S25:将混合后音频写入WAV文件中,得到待处理哼唱对应的和弦伴奏音频。

将对应的音频素材进行混音之后,可以将混合后音频写入WAV文件中,得到待处理哼唱对应的和弦伴奏音频。在将混合后音频写入WAV文件中之前,可以先将混合后音频通过压限器,以防止混音后出现爆音、杂音。

参见图10所示,为和弦伴奏生成流程图。首先读取用户设置参数,也即获取所述和弦伴奏生成参数,还需要获取音频相关信息,也即,前述的每分钟节拍信息、所述和弦,然后判断是否套用常用和弦,也即,判断所述和弦伴奏参数中的和弦参数是否表示常用和弦,如果是,则处理和弦序列中的空和弦并跳过,对其他的和弦与常用和弦匹配,获取改进的和弦,也即,优化后和弦,将优化后和弦转化为每拍音符时长序列,判断此拍音符是否为空,如果否,则先判断所述用户设置参数中的乐器类型参数是否包括吉他、古筝对应的参数,如果是,则再预设发声数组中添加相应的吉他、古筝信息,然后依据用户设置参数和规则在发声数据中添加相应的音频素材信息,如果此拍音符为空,则直接依据用户设置参数和规则在发声数据中添加相应的音频素材信息,混合当前节拍在发声数组中的音频素材信息指向的音源(音频素材),供压限器处理,压限器消除爆音杂音后,写入WAV文件中,判断发声数组中是否有音频素材信息指向音频素材结尾,如果是,则发声数组中去除已结束音频素材信息,如果否,则判断节拍序列是否结束,如果是,则判断对应的乐器是否有吉他,如果有,则添加琶音,然后结束,如果没有,则直接结束。

在实际的实施过程中,前述音频处理方法中可以先由终端获取待处理哼唱音频,将获取到的待处理哼唱音频发送到对应的服务器,由服务器进行后续处理,得到所述待处理哼唱音频对应的MIDI文件和和弦伴奏音频,再将生成的MIDI文件和和弦伴奏音频返回到所述终端,这样利用服务器进行处理,可以提高处理速度。

或者,前述音频处理方法中各个步骤也可以均在终端进行,当前述的整个音频处理过程都在终端进行时,可以避免由于断网时,终端连接不到对应的服务器带来的服务不可用问题。

在对所述待处理哼唱音频进行音乐信息检索时,也可以通过在服务器设备部署神经网络等技术识别音乐信息,借助网络解决终端的提取问题,也可以将神经网络小型化后部署在终端设备部署避免联网问题。

参见图11所示,为前述的音频处理方法的具体实现,以试用版APP(Application,手机软件)为例。首先通过图11a所示的首页进入之后,用户通过麦克风进行哼唱,终端设备即可通过采样得到哼唱输入的音频流。对音频流进行识别、处理,当哼唱完毕后,BPM、和弦、音符音高等相应音乐信息随即被获取,参见图11b所示,以乐谱的形式对获取到的音乐信息进行了展示。随后,参见图11c所示,用户可以根据自己的喜好选择国风、民谣、弹唱、电音四种风格,或通过自定义方式,自由选择节奏快慢、和弦模式,使用的乐器及其所占的响度,后台在获取到这些和弦生成参数之后,便可以根据这些和弦生成参数生成和弦伴奏音频,以及根据音乐信息生成用户哼唱音频对应的MIDI文件。这样将通过用户选择的参数,结合使用MIR技术获取的音乐信息,生成相应的符合原始哼唱音频的旋律节奏与音符的伴奏音频,供用户聆听。

这样用户在使用上图中的应用时,可以对麦克风随意哼唱几句,即获得相应的待处理哼唱音频。再通过简单的参数设置,用户即可体验多种乐器的伴奏效果。还可以尝试内置的不同流派或风格,也可以任意组合古筝、吉他、鼓等乐器,丰富旋律,生成最适合的伴奏。

经过后期处理,将用户哼唱音频对应生成的旋律与合成的和弦伴奏完美结合,形成优秀的音乐作品并存储,可开发出更多的使用场景,如建设用户社区,使用户可以上传各自作品进行交流;与专业人士合作,上传更多乐器风格模板等。

且上图中实现功能的操作方式简单,能充分利用到用户的碎片化时间;用户可以为喜欢音乐的广大年轻群体而不限于专业人群,受众更广;配合年轻化的界面将能吸引更多的新兴年轻群体,且通过对现有的专业音乐软件的音轨编辑方式进行调整,使得用户的交互简洁化,以达到主流非专业人士能够更快上手的目的。

参见图12所示,本申请实施例公开了一种音频处理装置,包括:

音频获取模块201,用于获取待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息;

和弦确定模块202,用于基于所述音符信息、所述每分钟节拍信息确定出所述待处理音频对应的和弦;

MIDI文件生成模块203,用于根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件;

和弦伴奏生成模块204,用于根据所述每分钟节拍信息、所述和弦和获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,其中,所述和弦伴奏参数为用户设置的和弦伴奏生成参数;

输出模块205,用于输出所述MIDI文件及所述和弦伴奏音频。

可见,本申请先获取待处理哼唱音频,得到所述待处理哼唱音频对应的音乐信息,其中,所述音乐信息包括音符信息和每分钟节拍信息,然后基于所述音符信息、所述每分钟节拍信息确定所述待处理音频对应的和弦,再根据所述音符信息和所述每分钟节拍信息生成所述待处理哼唱音频对应的MIDI文件,并根据所述每分钟节拍信息、所述和弦和预先获取到的和弦伴奏参数生成所述待处理哼唱音频对应的和弦伴奏音频,然后便可以输出所述MIDI文件及所述和弦伴奏音频。由此可见,本申请在获取到待处理哼唱音频之后,便可以得到对应的音乐信息,相比于前述现有技术,不需要先将待处理哼唱音频转换成MIDI文件,然后再对转化成的MIDI文件进行分析,所以也就不易造成先将音频转换成MIDI文件带来的误差累积问题。此外,不仅需要根据音乐信息生成主旋律音频对应的MIDI文件,还需要根据音乐信息以及和弦生成对应的和弦伴奏音频,相比于前述现有技术中的只是生成和弦伴奏对应的MIDI文件带来的用体验不一致问题,本申请通过既生成待处理哼唱音频主旋律对应的MIDI文件,又直接生成待处理哼唱音频对应的和弦伴奏音频,这样由于和弦伴奏音频对音频设备的性能依赖较低,能够使得不同用户的体验一致,得到预期的用户体验效果。

图13为本申请实施例提供的一种电子设备30的结构示意图,该用户终端具体可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。

通常,本实施例中的电子设备30包括:处理器31和存储器32。

其中,处理器31可以包括一个或多个处理核心,比如四核心处理器、八核心处理器等。处理器31可以采用DSP(digital signal processing,数字信号处理)、FPGA(field-programmable gate array,现场可编程们阵列)、PLA(programmable logic array,可编程逻辑阵列)中的至少一种硬件来实现。处理器31也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器31可以集成有GPU(graphics processing unit,图像处理器),GPU用于负责显示屏所需要显示的图像的渲染和绘制。一些实施例中,处理器31可以包括AI(artificialintelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器32可以包括一个或多个计算机可读存储介质,计算机可读存储介质可以是非暂态的。存储器32还可以包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器32至少用于存储以下计算机程序321,其中,该计算机程序被处理器31加载并执行之后,能够实现前述任一实施例中公开的音频处理方法步骤。

在一些实施例中,电子设备30还可包括有显示屏33、输入输出接口34、通信接口35、传感器36、电源37以及通信总线38。

本技术领域人员可以理解,图13中示出的结构并不构成对电子设备30的限定,可以包括比图示更多或更少的组件。

进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的音频处理方法。

其中,关于上述音频处理方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的一种音频处理方法、装置、设备、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 音频处理方法和装置、音频模型训练方法和装置、电子设备及计算机可读存储介质
  • 音频数据处理方法、音频数据处理装置、介质与电子设备
技术分类

06120112354074