一种音频修正方法及装置的制造方法
【专利摘要】本发明实施例提供了一种音频修正方法及装置,其中方法包括:获取第一音频数据;获取第一音高曲线,所述第一音高曲线为所述第一音频数据的音高曲线;根据第二音高曲线,对所述第一音高曲线依次进行音阶修正及调性修正,以得到修正后的第一音高曲线,其中所述第二音高曲线为与所述第一音频数据相对应的第二音频数据的音高曲线;将修正后的第一音高曲线转换回音频信号,以得到修正后的第一音频数据。以歌曲为例,本发明实施例可以使修正后的用户演唱歌曲音高曲线与原唱歌曲音高曲线的走势保持一致,并且用户演唱歌曲音高曲线的起伏相比修正前更接近原唱歌曲,从而大大提升了用户演唱歌曲的节奏感和听感,提升了对歌曲等音频数据的修正效果。
【专利说明】
一种音频修正方法及装置
技术领域
[0001 ]本发明涉及音频数据处理技术,尤其涉及一种音频修正方法及装置。
【背景技术】
[0002] 人们在工作及生活中,有时会遇到需要录制音频的场景,例如音频可以是演奏的 音乐,或者是演唱的歌曲,等等。以歌曲为例,随着移动互联网的快速发展,各种唱歌类APP (应用软件)逐渐兴起,对于普通用户来说,将自己录制的歌曲分享到社交网站已成为一种 新的社交方式。不过普通用户由于缺乏专业的歌唱训练,往往无法很好的完成整首歌曲的 演唱,例如可能会出现曲调唱错、节奏跟不上等问题,这些问题都会影响所录歌曲的听感。 因此在所录歌曲发布之前,对所录歌曲进行修正以提升歌曲听感,已成为用户的一种迫切 需求。
[0003] 歌曲自身往往带有重复性的特点,例如同一句歌词既在歌曲高潮中出现,也在歌 曲结尾中出现,也就是说一首歌曲内通常会出现歌词相同或相近的两个或多个部分,所以 在一种现有技术中,可以分析用户所录歌曲与原唱歌曲之间的差异,在相同歌词或相近歌 词的地方,使用用户演唱较好(也即与原唱歌曲差异较小)的那部分去替换用户演唱较差的 那部分,从而得到修正后的用户演唱歌曲。
[0004] 然而发明人在实现本发明的过程中发现,如果歌词相同或相近的部分都没唱好, 则这种修正无法完成,而且,即使有唱的比较好的歌词相同或相近的部分可以用来替换其 他部分,现有方法在修正用户演唱歌曲时,也并未考虑用户的听感,这是因为即使在歌词相 同或相近的地方,歌曲的音高或节奏也有可能不一样,如果采取现有技术这种直接替换的 方式,则容易导致修正后的歌曲听起来会比较奇怪,也即听感及节奏感较差。可见现有技术 目前并不能对歌曲等音频进行很好的修正。
【发明内容】
[0005] 本发明提供一种音频修正方法及装置,以提升对歌曲等音频数据的修正效果。
[0006] 根据本发明实施例的第一方面,提供一种音频修正方法,所述方法包括:
[0007] 获取第一音频数据;
[0008] 获取第一音高曲线,所述第一音高曲线为所述第一音频数据的音高曲线;
[0009] 根据第二音高曲线,对所述第一音高曲线依次进行音阶修正及调性修正,以得到 修正后的第一音高曲线,其中所述第二音高曲线为与所述第一音频数据相对应的第二音频 数据的音高曲线;
[0010]将修正后的第一音高曲线转换回音频信号,以得到修正后的第一音频数据。
[0011] 可选的,所述获取第一音高曲线,包括:
[0012] 对所述第一音频数据进行分帧;
[0013] 提取分帧后得到的每帧数据的基频;
[0014] 将提取的每帧数据的基频转换为音高值;
[0015] 以各音高值作为曲线上的点得到所述第一音高曲线。
[0016] 可选的,所述对所述第一音频数据进行分帧,包括:
[0017] 根据所述第一音频数据的节奏进行分帧;
[0018] 或者,
[0019]以固定时长为单位进行分帧。
[0020] 可选的,所述根据第二音高曲线,对所述第一音高曲线进行音阶修正,包括:
[0021] 按照预设方式将所述第一音高曲线划分为多个片段,每个片段包含一个或多个音 高连续段;
[0022] 通过获取每个片段与所述第二音高曲线相应部分在音高值上的差别、每个片段内 各音高连续段与所述第二音高曲线相应部分在音高值上的差别,确定每个片段内各音高连 续段偏离所述第二音高曲线的程度,以及,
[0023] 根据每个片段内各音高连续段偏离所述第二音高曲线的程度,对需要调整的音高 连续段进行音阶调整,以使调整后的第一音高曲线与所述第二音高曲线在音阶上满足预设 关系。
[0024]可选的,所述预设关系为:
[0025] 调整后的第一音高曲线与所述第二音高曲线在相同的音阶范围内,
[0026] 或者,
[0027]调整后的第一音高曲线与所述第二音高曲线相差固定的音阶。
[0028] 可选的,所述通过获取每个片段与所述第二音高曲线相应部分在音高值上的差 另IJ、每个片段内各音高连续段与所述第二音高曲线相应部分在音高值上的差别,确定每个 片段内各音高连续段偏离所述第二音高曲线的程度,包括:
[0029] 对于每个片段,计算当前片段的第一均值以及当前片段内每个音高连续段的第二 均值,其中第一均值为当前片段上各帧与第二音高曲线相应帧的音高差的总均值,第二均 值为音高连续段上的各帧与第二音高曲线相应帧的音高差的均值;
[0030] 基于音高连续段的第二均值与第一均值的比值,确定音高连续段偏离所述第二音 高曲线的程度。
[0031] 可选的,所述根据每个片段内各音高连续段偏离所述第二音高曲线的程度,对需 要调整的音高连续段进行音阶调整,包括:
[0032] 对于每个音高连续段,根据当前音高连续段偏离所述第二音高曲线的程度与预设 阈值的关系,确定是否需要对当前音高连续段进行音阶调整;
[0033] 当需要对当前音高连续段进行音阶调整时,向偏离的反方向调整当前音高连续段 的音阶,直至当前音高连续段与所述第二音高曲线在音阶上满足所述预设关系。
[0034]可选的,所述根据第二音高曲线,对所述第一音高曲线进行调性修正,包括:
[0035]获取第二音符折线,所述第二音符折线为对所述第二音频数据进行调性规整后得 到的音符折线;
[0036]根据所述第二音符折线中每个折线段与所述第一音高曲线的高低位置关系,对所 述第一音高曲线进行调性规整以得到第一音符折线;
[0037]对所述第一音符折线进行平滑处理,将平滑处理后得到的曲线作为修正后的第一 首尚曲线。
[0038]可选的,所述获取第二音符折线,包括:
[0039]获取所述第二音频数据的调性;
[0040] 通过计算所述第二音高曲线中每帧与临近音符在音高上的距离,将每帧的音高规 整到距离最近的音符上以得到所述第二音符折线,其中所述第二音频数据的调性中未出现 的音符不作为所述临近音符。
[0041] 可选的,所述根据所述第二音符折线中每个折线段与所述第一音高曲线的高低位 置关系,对所述第一音高曲线进行调性规整以得到第一音符折线,包括:
[0042]当第一音高曲线在第二音符折线的折线段以下或以上时,将第一音高曲线相应部 分变换为折线段,此时第一音高曲线的折线段的音高值根据第二音符折线的折线段对应的 第一音高曲线相应部分的中间帧音高值、第二音符折线的折线段对应的音高值以及第一音 高曲线相应部分中的音高最大值而确定;
[0043]当第一音高曲线穿过第二音符折线的折线段时,将第一音高曲线相应部分变换为 折线段,此时第一音高曲线的折线段的音高值为第二音符折线的折线段对应的音高值。 [0044]可选的,得到修正后的第一音频数据之后,所述方法还包括:
[0045] 将修正后的第一音频数据反馈给用户。
[0046] 可选的,所述第一音频数据为用户所唱歌曲,所述第二音频数据为与所述第一音 频数据对应的原唱歌曲;或者,所述第一音频数据为用户所演奏的纯音乐,所述第二音频数 据为与第一音频数据对应的示范音乐。
[0047] 可选的,当所述第一音频数据为用户所唱歌曲时,所述第一音频数据和所述第二 音频数据均为清唱歌曲;当所述第一音频数据为用户所演奏的纯音乐时,所述第一音频数 据和所述第二音频数据均为使用单一乐器所演奏的音乐。
[0048] 可选的,当所述第一音频数据为用户所唱歌曲时,对所述第一音高曲线依次进行 音阶修正及调性修正之前,所述方法还包括:
[0049] 根据歌词语义将所述第一音高曲线中音高连续段的起始点与所述第二音高曲线 中音高连续段的起始点对齐。
[0050] 根据本发明实施例的第二方面,提供一种音频修正装置,所述装置包括:
[0051] 音频数据获取模块,用于获取第一音频数据;
[0052] 音高曲线获取模块,用于获取第一音高曲线,所述第一音高曲线为所述第一音频 数据的音高曲线;
[0053]音阶修正模块,用于根据第二音高曲线,对所述第一音高曲线进行音阶修正,其中 所述第二音高曲线为与所述第一音频数据相对应的第二音频数据的音高曲线;
[0054]调性修正模块,用于根据第二音高曲线,对完成了音阶修正的第一音高曲线进行 调性修正,以得到修正后的第一音高曲线;
[0055] 音频数据还原模块,用于将修正后的第一音高曲线转换回音频信号,以得到修正 后的第一音频数据。
[0056] 可选的,所述音高曲线获取模块包括:
[0057]分帧子模块,用于对所述第一音频数据进行分帧;
[0058]基频提取子模块,用于提取分帧后得到的每帧数据的基频;
[0059]音高值转换子模块,用于将提取的每帧数据的基频转换为音高值;
[0060]曲线生成子模块,用于以各音高值作为曲线上的点得到所述第一音高曲线。
[0061 ]可选的,所述对所述第一音频数据进行分帧,包括:
[0062]根据所述第一音频数据的节奏进行分帧;或者,以固定时长为单位进行分帧。
[0063]可选的,所述音阶修正模块包括:
[0064] 片段划分子模块,用于按照预设方式将所述第一音高曲线划分为多个片段,每个 片段包含一个或多个音高连续段;
[0065] 音阶调整子模块,用于通过获取每个片段与所述第二音高曲线相应部分在音高值 上的差别、每个片段内各音高连续段与所述第二音高曲线相应部分在音高值上的差别,确 定每个片段内各音高连续段偏离所述第二音高曲线的程度,以及,根据每个片段内各音高 连续段偏离所述第二音高曲线的程度,对需要调整的音高连续段进行音阶调整,以使调整 后的第一音高曲线与所述第二音高曲线在音阶上满足预设关系。
[0066]可选的,所述预设关系为:
[0067] 调整后的第一音高曲线与所述第二音高曲线在相同的音阶范围内,或者,调整后 的第一音高曲线与所述第二音高曲线相差固定的音阶。
[0068] 可选的,所述通过获取每个片段与所述第二音高曲线相应部分在音高值上的差 另IJ、每个片段内各音高连续段与所述第二音高曲线相应部分在音高值上的差别,确定每个 片段内各音高连续段偏离所述第二音高曲线的程度,包括:
[0069] 对于每个片段,计算当前片段的第一均值以及当前片段内每个音高连续段的第二 均值,其中第一均值为当前片段上各帧与第二音高曲线相应帧的音高差的总均值,第二均 值为音高连续段上的各帧与第二音高曲线相应帧的音高差的均值;
[0070] 基于音高连续段的第二均值与第一均值的比值,确定音高连续段偏离所述第二音 高曲线的程度。
[0071] 可选的,所述根据每个片段内各音高连续段偏离所述第二音高曲线的程度,对需 要调整的音高连续段进行音阶调整,包括:
[0072] 对于每个音高连续段,根据当前音高连续段偏离所述第二音高曲线的程度与预设 阈值的关系,确定是否需要对当前音高连续段进行音阶调整;
[0073] 当需要对当前音高连续段进行音阶调整时,向偏离的反方向调整当前音高连续段 的音阶,直至当前音高连续段与所述第二音高曲线在音阶上满足所述预设关系。
[0074]可选的,所述调性修正模块包括:
[0075] 第二音符折线获取子模块,用于获取第二音符折线,所述第二音符折线为对所述 第二音频数据进行调性规整后得到的音符折线;
[0076] 第一音符折线生成子模块,用于根据所述第二音符折线中每个折线段与所述第一 音高曲线的高低位置关系,对所述第一音高曲线进行调性规整以得到第一音符折线;
[0077]平滑子模块,用于对所述第一音符折线进行平滑处理,将平滑处理后得到的曲线 作为修正后的第一音高曲线。
[0078]可选的,所述获取第二音符折线,包括:
[0079]获取所述第二音频数据的调性;
[0080]通过计算所述第二音高曲线中每帧与临近音符在音高上的距离,将每帧的音高规 整到距离最近的音符上以得到所述第二音符折线,其中所述第二音频数据的调性中未出现 的音符不作为所述临近音符。
[0081] 可选的,所述根据所述第二音符折线中每个折线段与所述第一音高曲线的高低位 置关系,对所述第一音高曲线进行调性规整以得到第一音符折线,包括:
[0082] 当第一音高曲线在第二音符折线的折线段以下或以上时,将第一音高曲线相应部 分变换为折线段,此时第一音高曲线的折线段的音高值根据第二音符折线的折线段对应的 第一音高曲线的中间帧音高值、第二音符折线的折线段对应的音高值以及第一音高曲线相 应部分中的音高最大值而确定;
[0083] 当第一音高曲线穿过第二音符折线的折线段时,将第一音高曲线相应部分变换为 折线段,此时第一音高曲线的折线段的音高值为第二音符折线的折线段对应的音高值。 [0084] 可选的,所述装置还包括:
[0085]反馈模块,用于将修正后的第一音频数据反馈给用户。
[0086] 可选的,所述第一音频数据为用户所唱歌曲,所述第二音频数据为与所述第一音 频数据对应的原唱歌曲;或者,所述第一音频数据为用户所演奏的纯音乐,所述第二音频数 据为与第一音频数据对应的示范音乐。
[0087] 可选的,当所述第一音频数据为用户所唱歌曲时,所述第一音频数据和所述第二 音频数据均为清唱歌曲;当所述第一音频数据为用户所演奏的纯音乐时,所述第一音频数 据和所述第二音频数据均为使用单一乐器所演奏的音乐。
[0088] 可选的,当所述第一音频数据为用户所唱歌曲时,所述装置还包括:
[0089]对齐模块,用于在对所述第一音高曲线进行音阶修正及调性修正之前,根据歌词 语义将所述第一音高曲线中音高连续段的起始点与所述第二音高曲线中音高连续段的起 始点对齐。
[0090] 本发明的实施例提供的技术方案可以包括以下有益效果:
[0091] 在本发明实施例中,并不是对音频数据进行简单的替换,而是从音频数据的音高 曲线入手,分别从音阶层面及调性层面对用户演唱歌曲等音频数据的音高曲线进行修正。 音阶层面的修正可以将用户演唱歌曲音高曲线规整到与原唱歌曲音高曲线相同音阶范围 内或相差一或多个音阶,而调性层面的修正则可以针对用户演唱歌曲音高曲线的起伏进行 修正。本发明实施例中的方案可以使修正后的用户演唱歌曲音高曲线与原唱歌曲音高曲线 的走势保持一致,并且用户演唱歌曲音高曲线的起伏相比修正前更接近原唱歌曲,从而大 大提升了用户演唱歌曲的节奏感和听感,提升了对歌曲等音频数据的修正效果。
[0092] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不 能限制本发明。
【附图说明】
[0093]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施 例,并与说明书一起用于解释本发明的原理。
[0094] 图1是根据本发明一示例性实施例示出的一种音频修正方法的流程图;
[0095] 图2是根据本发明一示例性实施例示出的应用场景示意图;
[0096] 图3是根据本发明一示例性实施例示出的应用场景示意图;
[0097] 图4是根据本发明一示例性实施例示出的一种音频修正方法的流程图;
[0098] 图5是根据本发明一示例性实施例示出的一种音频修正方法的流程图;
[0099] 图6是根据本发明一示例性实施例示出的一种音频修正方法的流程图;
[0100]图7是根据本发明一示例性实施例示出的一种音频修正方法的流程图;
[0101] 图8是根据本发明一示例性实施例示出的音高曲线示意图;
[0102] 图9是根据本发明一示例性实施例示出的一种音频修正方法的流程图;
[0103] 图10是根据本发明一示例性实施例示出的一种音频修正方法的流程图;
[0104] 图11是根据本发明一示例性实施例示出的音高曲线示意图;
[0105] 图12是根据本发明一示例性实施例示出的音高曲线示意图;
[0106] 图13是根据本发明一示例性实施例示出的音高曲线示意图;
[0107] 图14是根据本发明一示例性实施例示出的音高曲线示意图;
[0108] 图15是根据本发明一示例性实施例示出的一种音频修正方法的流程图;
[0109] 图16是根据本发明一示例性实施例示出的应用场景示意图;
[0110] 图17是根据本发明一示例性实施例示出的一种音频修正装置的示意图;
[0111] 图18是根据本发明一示例性实施例示出的一种音频修正装置的示意图;
[0112] 图19是根据本发明一示例性实施例示出的一种音频修正装置的示意图;
[0113]图20是根据本发明一示例性实施例示出的一种音频修正装置的示意图;
[0114] 图21是根据本发明一示例性实施例示出的一种音频修正装置的示意图;
[0115] 图22是根据本发明一示例性实施例示出的一种音频修正装置的示意图。
【具体实施方式】
[0116] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及 附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例 中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附 权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
[0117] 图1是根据本发明一示例性实施例示出的一种音频修正方法的流程图。作为示例, 该方法可用于手机、平板电脑、个人电脑等终端设备,也可用于服务器等。
[0118] 参见图1所示,该方法可以包括如下步骤:
[0119]步骤SlOl,获取第一音频数据。
[0120] 本实施例中所述的音频主要是指与音乐相关的音频,如纯音乐或者演唱的歌曲 等。作为示例,本实施例中所述的第一音频数据可以为用户所唱歌曲,本实施例中所述的第 二音频数据可以为用户所唱歌曲对应的原唱歌曲;或者,所述第一音频数据可以为用户所 演奏的纯音乐,所述第二音频数据可以为与第一音频数据对应的示范音乐。
[0121] 音乐是由不同频率的机械波复合而成,为了更符合人的听感,采用音高来描述音 乐的频率。音高与人耳感知成线性关系,在现代音乐中,音高使用十二平均律来表示,音高 对应的音符记为(:,0#,0,0#4"#,6,6#44#,8,其中"#"表示升半音。在演唱过程中,演 唱者演唱歌曲的音高曲线的走势应该与乐谱中对应音符序列表示的音高曲线的走势一致, 这样演唱出的歌曲音准才准确。同时除了音准之外,节奏也会影响到演唱歌曲的听感,如果 演唱者演唱时的气息不平稳、有时唱的快、有时唱的慢,与乐谱节奏不对应,则会造成演唱 歌曲听起来较奇怪,没有节奏感。普通用户由于未经过专业训练,所唱歌曲很可能出现上面 这些问题,可以使用本实施例方法进行修正。
[0122] 举例来讲,本实施例方法可以以应用软件(APP)的方式提供给用户,用户将该APP 安装到手机上之后,在将所录的用户演唱歌曲发布之前,可以使用该APP对用户演唱歌曲进 行修正,或者说是润色,然后再对外发布(例如上传到社交网站上)。作为示例可参见图2所 示,在图2中,用户可以在该APP的界面中通过点击"录制歌曲"按钮来录制歌曲,通过"润色 歌曲"按钮来对所录歌曲进行修正。
[0123] 另外对所录歌曲的修正可以在用户的手机上直接进行,也可以将所唱歌曲发送给 云端的服务器,参见图3所述,由服务器进行修正,然后再将修正后的歌曲发回给用户的手 机,对此本实施例并不进行限制。
[0124] 步骤S102,获取第一音高曲线,所述第一音高曲线为所述第一音频数据的音高曲 线。
[0125] 对于具体如何获取第一音高曲线本实施例并不进行限制,本领域技术人员可以根 据不同需求\不同场景而自行设计,可以在此处使用的这些设计都没有背离本发明的精神 和保护枢围。
[0126] 步骤S103,根据第二音高曲线,对所述第一音高曲线依次进行音阶修正及调性修 正,以得到修正后的第一音高曲线,其中所述第二音高曲线为与所述第一音频数据相对应 的第二音频数据的音高曲线。
[0127] 第二音频数据是修正第一音频数据的基准,例如当第一音频数据为用户所唱歌曲 时,则第二音频数据可以是对应的原唱歌曲。
[0128] 作为示例,原唱歌曲通常可以是由专业歌手演唱的歌曲。而为了提升修正效果,优 选的,所述用户所唱歌曲和所述原唱歌曲均为清唱歌曲。当然在其他情况下,如歌曲含有伴 奏的情况下,可以先对歌曲进行预处理,以去掉伴奏或减弱伴奏,对于预处理的方式本实施 例并不进行限制。原唱歌曲的音高曲线可以预先提取,也可以和用户演唱歌曲音高曲线一 同提取,具体提取方法可以与用户演唱歌曲音高曲线的提取方法相同。类似的,当所述第一 音频数据为用户所演奏的纯音乐时,所述第一音频数据和所述第二音频数据优选均为使用 单一乐器所演奏的音乐。
[0129] 需要说明的是,在本实施例中,以歌曲为例,默认用户所唱歌曲与原唱歌曲在时间 上相差不远,即用户所唱歌曲不抢唱太多,也不唱慢太多,即基本上在时间上是对齐的。而 对于与原唱歌曲在时间上相差过多的用户演唱歌曲,可以通过语义的方法将用户演唱歌曲 的音高连续段与原唱歌曲的音高连续段的起始点对齐。换句话说,在本实施例或本发明其 他某些实施例中,对所述第一音高曲线依次进行音阶修正及调性修正之前,所述方法还可 以包括:
[0130] 根据歌词语义将所述第一音高曲线中音高连续段的起始点与所述第二音高曲线 中音高连续段的起始点对齐。
[0131] 当然本领域技术人员也可以根据不同需求\不同场景而自行设计其他对齐方法, 对此本实施例并不进行限制。
[0132] 步骤S104,将修正后的第一音高曲线转换回音频信号,以得到修正后的第一音频 数据。
[0133] 作为示例,具体转换时,可以将修正后的第一音高曲线先转换为基频,然后通过逆 傅里叶变换得到相应的音频信号,将音高修正前的音频信号进行高通滤波处理得到共振峰 加强后的音频信号,为了重新引入修正后的声道特性,将共振峰加强后的音频信号与逆傅 里叶变换后的音频信号进行混叠,最终得到修正后的第一音频数据。
[0134] 参见图4所示,在本实施例或本发明其他某些实施例中,所述获取第一音高曲线, 可以包括:
[0135] 步骤S401,对所述第一音频数据进行分帧。
[0136] 作为示例,所述对所述第一音频数据进行分帧,可以包括:
[0137] 根据所述第一音频数据的节奏进行分帧,或者,以固定时长为单位进行分帧。
[0138] 具体来讲,所述分帧可以使用基于beat tracking的分帧方法,将用户歌曲数据分 为一系列小的beat帧,baet帧根据歌曲的节奏划分,从而可以避免固定时长分帧时出现帧 长不足一段节奏或跨越多个节奏等情况。当然,也可以采用其它的分帧方法,如固定时长分 帧方法,如40ms作为一帧对歌曲数据进行分帧。
[0139] 步骤S402,提取分帧后得到的每帧数据的基频。
[0140]为了能够较好的从乐理角度对用户歌曲进行修正,本实施例根据基频与音高的转 换关系,将每帧音频数据的基频值转换为音高,从而得到用户演唱歌曲音高曲线。
[0141] 具体来讲,可以采用动态规划方法提取每帧歌曲数据的基频。为了避免计算自相 关函数时共振峰的干扰,可以首先对歌曲数据进行低通滤波,再计算分帧后每帧音频数据 傅里叶变换的自相关函数;然后根据每帧音频数据自相关函数计算结果,选择局部极大值 作为每帧音频数据的侯选基频值;最后选择多帧音频数据的侯选基频值进行动态规划,根 据动态规划得到的最优路径,确定每帧音频数据的基频值。
[0142] 步骤S403,将提取的每帧数据的基频转换为音高值。
[0143] 根据乐理知识,将基频转换为音高可以通过如下公式进行计算:
[0144]
⑴
[0145] 其中,fo为中心音符C所对应的频率,取值为440Hz,co、C1为固定常数,F为每帧音频 数据的基频值,s为转换后的音高值。
[0146] 步骤S404,以各音高值作为曲线上的点得到所述第一音高曲线。
[0147] 将各音高值连接起来,便可以得到第一音高曲线。
[0148] 音阶即以全音、半音按照固定音程组织顺序排列的一串音,排列形式为梯形,如七 声音阶;所述调性即多个音按照一定的关系(高低关系、稳定与不稳定的关系)联结在一起, 构成以某一音为中心的体系。音高反映了人耳对音高的线性感知程度,根据乐理知识,通过 音高值可以得到音高所在音阶及相应的音符,如音高值S = I时,表示中心音阶的音符D,记 为S = 1 = J4,其中苑的上标表示音阶编号,下标表示具体音符,则当S = -11时, S = -11 = .1-1.2 = *? -12 = Sfl1,W表示比中心音阶低一个八度的音符D;同理,当s = 13时, S = 13 =1 + 12 = ?+12 = # ,兄表示比中心音阶高一个八度的音符D。
[0149] 音阶反应了音高的整体趋势,一首歌曲的音阶会在不同时刻发生变化,一般歌曲 的主歌部分通常以叙事为主,音阶较低,而歌曲的副歌部分通常感情较丰富,音阶较高。经 过训练的专业歌手通常能较好的控制整首歌曲的音阶,而普通用户经常无法做到这点,经 常会出现音阶忽高忽低的情况,因此,需要对用户演唱歌曲进行音阶规整。音阶层面的修 正,主要是根据原唱歌曲的音高曲线,修正用户演唱歌曲音高曲线所在音阶范围,使修正后 的用户演唱歌曲与原唱歌曲保持在相同的音阶范围内或相差一或多个音阶,如用户演唱歌 曲整体比原唱歌低一个音阶或高一个音阶。
[0150] 对音阶进行修正的过程可参见图5所示,在本实施例或本发明其他某些实施例中, 所述根据第二音高曲线,对所述第一音高曲线进行音阶修正,可以包括:
[0151] 步骤S501,按照预设方式将所述第一音高曲线划分为多个片段,每个片段包含一 个或多个音高连续段。
[0152] 对于预设方式的具体内容本实施例并不进行限制,以歌曲为例,可以根据歌词以 句为单位选择歌曲片段,每次可以选择一句或多句作为一个片段。一般中间不停顿就认为 是一个音高连续段,一个片段可以包含一到多个音高连续段。
[0153] 步骤S502,通过获取每个片段与所述第二音高曲线相应部分在音高值上的差别、 每个片段内各音高连续段与所述第二音高曲线相应部分在音高值上的差别,确定每个片段 内各音高连续段偏离所述第二音高曲线的程度,以及,
[0154] 根据每个片段内各音高连续段偏离所述第二音高曲线的程度,对需要调整的音高 连续段进行音阶调整,以使调整后的第一音高曲线与所述第二音高曲线在音阶上满足预设 关系。
[0155] 作为示例,所述预设关系可以为:
[0156] 调整后的第一音高曲线与所述第二音高曲线在相同的音阶范围内,
[0157] 或者,
[0158] 调整后的第一音高曲线与所述第二音高曲线相差固定的音阶。
[0159] 参见图6所示,在具体实施时,所述通过获取每个片段与所述第二音高曲线相应部 分在音高值上的差别、每个片段内各音高连续段与所述第二音高曲线相应部分在音高值上 的差别,确定每个片段内各音高连续段偏离所述第二音高曲线的程度,可以包括:
[0160] 步骤S601,对于每个片段,计算当前片段的第一均值以及当前片段内每个音高连 续段的第二均值,其中第一均值为当前片段上各帧与第二音高曲线相应帧的音高差的总均 值,第二均值为音高连续段上的各帧与第二音高曲线相应帧的音高差的均值。
[0161] 步骤S602,基于音高连续段的第二均值与第一均值的比值,确定音高连续段偏离 所述第二音高曲线的程度。
[0162] 参见图7所示,在具体实施时,所述根据每个片段内各音高连续段偏离所述第二音 高曲线的程度,对需要调整的音高连续段进行音阶调整,可以包括:
[0163] 步骤S701,对于每个音高连续段,根据当前音高连续段偏离所述第二音高曲线的 程度与预设阈值的关系,确定是否需要对当前音高连续段进行音阶调整。
[0164] 步骤S702,当需要对当前音高连续段进行音阶调整时,向偏离的反方向调整当前 音高连续段的音阶,直至当前音高连续段与所述第二音高曲线在音阶上满足所述预设关 系。
[0165] 下面对图5~图7所涉及的具体计算过程进行进一步说明:
[0166] 1)首先计算第一均值和第二均值。
[0167] 第二均值,即第一音高曲线的音高连续段上的各帧与第二音高曲线相应帧的音高 差的均值,可以通过如下公式进行计算:
[0168]
(2)
[0169] 其中,/^:_%表示第一音高曲线当前片段与第二音高曲线相应片段中第i个音高 连续段的音高差的均值,S〃U表示当前片段内第i个音高连续段内第j帧的音高值,S〃U表示 第二音高曲线上与S〃U相对应的帧的音高值,&1与匕分别表示当前片段内第i个音高连续段 的帧起始及帧结束位置。
[0170] 第一均值,即当前片段上各帧与第二音高曲线相应帧的音高差的总均值,可以通 过如下公式进行计算:
[0171]
(3;)
[0172] 其中,μ?表示当前片段上各帧与第二音高曲线上相应帧的音高差的总均值,k表 示当前片段内音高连续段的总数,其他参数含义同上文。
[0173] 2)然后计算每个片段中每个音高连续段偏离第二音高曲线的程度。
[0174] 笛一构估乜笛一构估的比值可以通过如下公式计算:
[0175] (4)
[0176] 其中,Dev1表示第二均值与第一均值的比值,用于指示第一音高曲线当前片段内 第i个音高连续段相比于当前片段内所有音高连续段偏离第二音高曲线的程度。
[0177] 3)再根据音高连续段偏离第二音高曲线的程度判断当前片段内每个音高连续段 是否需要进行音阶规整,判断结果使用I 1表示,具体判断方法可以通过下式: 1234
CS) 2 其中,I1 = I表示第i个音高连续段需要进行音阶规整,I1 = O表示第i个音高连续段 不需要进行音阶规整。Ctcilerance为音阶规整容忍度,也即预设阈值,C tcileranc^l,具体取值可 以根据应用需求或实验结果而定。 3 4)最后,当需要对当前音高连续段进行音阶调整时,向偏离的反方向调整当前音 高连续段的音阶,直至当前音高连续段与所述第二音高曲线在音阶上满足所述预设关系。 4 音阶调整方向包含正向音阶调整和反向音阶调整两种,可以通过下式确定当前片 段内第i个音高连续段的音阶调整方向Diri:
[0182]
(6)
[0183]如果Diri >0,说明第一音高曲线中的该音高连续段所在音阶高于第二音高曲线 中相应的音高连续段所在音阶,则该音高连续段所在音阶需要降低,即对该音高连续段进 行反向音阶规整,具体规整时,每次降低一个音阶后,重新计算降低音阶后的该音高连续段 偏离第二音高曲线的程度,判断是否需要再次进行音阶规整,具体判断方法与式(5)相同, 持续该过程直到不需要进行音阶规整为止;
[0184] 如果Diri<0,说明第一音高曲线中的该音高连续段所在音阶低于第二音高曲线 中相应的音高连续段所在音阶,则该音高连续段所在音阶需要增加,即对该音高连续段进 行正向音阶规整,具体规整时,每次增加一个音阶后,重新计算增加音阶后的该音高连续段 偏离第二音高曲线的程度,判断是否需要再次进行音阶规整,具体判断方法与式(5)相同, 持续该过程直到不需要进行音阶规整为止。
[0185] 最终规整后的第一音高曲线与作为标准的第二音高曲线保持在相同的音阶范围 内或相差固定的音阶,一般第一音高曲线与第二音高曲线最多相差2个音阶。
[0186] 作为示例,对音阶的规整可参见图8所示,在图8中以歌曲为例,横轴表示歌曲的帧 数,纵轴表示每帧的音高值,I表示原唱歌曲片段的音高曲线,II和III分别表示比原唱歌曲 片段高一个音阶和低一个音阶的音高曲线。图8中原唱音高曲线I保持在了同一个音阶范围 内,而对于普通用户,在歌曲的转折部分,用户对于音阶走势的表现经常出现明显偏差,如 图中,对音高曲线I,用户演唱的音高曲线经常会是曲线IV和曲线VII的组合,或者曲线VI和 曲线VII的组合(VII表示用户演唱歌曲片段副歌部分音高曲线),这两种情况下,用户演唱 音高连续段偏离原唱歌曲片段的程度较大,超过了音阶规整的容忍度,因此,需要进行音阶 规整,最终规整后的结果为用户演唱音高曲线组合为曲线V和曲线VII的组合,与原唱歌曲 保持在相同的音阶范围内。
[0187] 对第一音高曲线进行音阶规整之后,第一音高曲线相对符合第二音高曲线的趋 势,但在音高曲线的起伏上可能还存在一些差异,为了减小这些差异,需要从调性层面对第 一音高曲线继续进行修正。
[0188] 因此参见图9所示,在本实施例或本发明其他某些实施例中,所述根据第二音高曲 线,对所述第一音高曲线进行调性修正,可以包括:
[0189] 步骤S901,获取第二音符折线,所述第二音符折线为对所述第二音频数据进行调 性规整后得到的音符折线。
[0190]步骤S902,根据所述第二音符折线中每个折线段与所述第一音高曲线的高低位置 关系,对所述第一音高曲线进行调性规整以得到第一音符折线。
[0191] 步骤S903,对所述第一音符折线进行平滑处理,将平滑处理后得到的曲线作为修 正后的第一首尚曲线。
[0192] 作为示例,参见图10所示,在本实施例或本发明其他某些实施例中,所述获取第二 音符折线,可以包括:
[0193] 步骤S1001,获取所述第二音频数据的调性。
[0194] 例如具体实现时,可以首先利用预先训练构建的调性检测模型对第二音频数据进 行调性检测,得到其调性,其中调性检测模型可以通过预先收集大量音频如歌曲等数据训 练得到,如采用贝叶斯模型描述调性检测模型。
[0195]步骤S1002,通过计算所述第二音高曲线中每帧与临近音符在音高上的距离,将每 帧的音高规整到距离最近的音符上以得到所述第二音符折线,其中所述第二音频数据的调 性中未出现的音符不作为所述临近音符。
[0196]以歌曲为例,如采用调性检测模型检测原唱歌曲的调性为C大调,在C大调歌曲中 既无升调音符也无降调音符;然后根据调性检测结果对原唱歌曲进行调性规整,具体规整 时,先计算音高曲线中每帧音高与临近音符音高的距离,将每帧音高规整到距离较近的音 符上,需要说明的是,当前歌曲调性中不出现的音符不作为临近音符。
[0197] 作为示例可参见图11所示,图11中实线为原唱音高曲线,横轴为歌曲的帧数,纵轴 为每帧对应音符。在原唱音高曲线第100帧处的音高值距离音符Gb较近,如果原唱歌曲为C 大调,而Gb音符在C大调中不出现,故计算距离时Gb忽略。经计算I 却|<| Siw-W I,其中 S100表示原唱歌曲音高曲线第100帧处的音高值,巧表示中心音阶的G音符,g表示中心音 阶的F音符,因此,S1qq被规整为;。这样依次对原唱歌曲音高曲线的每帧音高值进行规整, 得到规整后的音符折线,如图11中虚线所示。
[0198] 在本实施例或本发明其他某些实施例中,所述根据所述第二音符折线中每个折线 段与所述第一音高曲线的高低位置关系,对所述第一音高曲线进行调性规整以得到第一音 符折线,可以包括:
[0199] 当第一音高曲线在第二音符折线的折线段以下或以上时,将第一音高曲线相应部 分变换为折线段,此时第一音高曲线的折线段的音高值根据第二音符折线的折线段对应的 第一音高曲线相应部分的中间帧音高值、第二音符折线的折线段对应的音高值以及第一音 高曲线相应部分中的音高最大值而确定;
[0200] 当第一音高曲线穿过第二音符折线的折线段时,将第一音高曲线相应部分变换为 折线段,此时第一音高曲线的折线段的音高值为第二音符折线的折线段对应的音高值。
[0201] 将第二音高曲线规整为一段段折线段的目的是使第一音高曲线可以根据第二音 高曲线的各折线段也规整为一段段折线段。折线段的关键在于该折线段有多"高",也即对 应多少音高值。那么下面就对如何确定第一音高曲线的各折线段的音高值,也即如何根据 所述第二音符折线中每个折线段与所述第一音高曲线的高低位置关系,对所述第一音高曲 线进行调性规整以得到第一音符折线所涉及的具体计算过程进行进一步说明:
[0202]假设W '是第二音符折线中的一个折线段,W '对应的音符为音符X,第一音高曲线中 与W'相对应的曲线段为V,V的帧起始和帧结束的位置分别为Pl和ql,曲线段V最终将会被规 整为折线段W"。
[0203] 1)首先确定基础值。所要得到的第一音高曲线的折线段的音高值,也即W"的音高 值,是通过在一个基础值上提升或降低某音高值而得到的。在这里以曲线段为V的中间帧音 高值作为该基础值,即基础值为s (Pi+qi)/2。
[0204] 2)然后计算需要提升或降低的音高值。又分为三种情况:
[0205] 情况1:曲线段V在W'之下。此时需要提升的音高值可以通过下式计算:
[0206]
(7)
[0207]其中,Supl表示需要提升的音高值。S_unt为控制因子,具体取值可以实际应用需求 或实验结果取值,如取值为〇. 5。if表示音阶为y的音符X对应折线的音高值,也即第二音符 折线的折线段对应的音高值。81表示第一音高曲线第1帧的音高值。max 表示曲线段V中 的音高最大值,也即第一音高曲线相应部分中的音高最大值。
[0208]情况2:曲线段V在W'之上。此时需要提升的音高值(此时实际为降低音高值,故需 要提升的音高值为负)可以通过下式计算:
[0209]
.(8.)
[0210] 其中,Sup2表示需要提升的音高值(实际为负值)。
[0211 ]情况3:曲线段V穿过W'。此时不需要提升也不需要降低音高值。
[0212] 3)最后基于基础值及需要提升或降低的音高值得到W"的音高值。
[0213] 对千曲錄势下成少卜的情况,根据以下公式计算:
[0214]
[0215] 其中,Sf。搬t为W"的音高值,之下时Sup取Supl,之上时S up取Sup2。
[0216]而对于曲线段V穿过W'的情况,则W"的音高值直接取W'的音高值即可。
[0217] 需要说明的是,以歌曲为例,如果音阶修正时将用户演唱歌曲音高曲线规整到与 原唱歌曲音高曲线相差一或多个音阶,则在对用户演唱歌曲音高曲线进行调性规整前,需 要先将得到的原唱歌曲的音符折线上移或下移到与用户演唱歌曲音高曲线相同的音阶范 围内。如音阶修正后,用户演唱歌曲音高曲线比原唱歌曲音高曲线低一个音阶,则在对用户 演唱歌曲音高曲线进行调性规整前,需要将原唱歌曲音高曲线相应音符折线下移一个音 阶。
[0218] 下面再结合图12对第一音高曲线进行调性规整的过程进行举例说明。在图12中, 以歌曲为例,横轴为歌曲的帧数,纵轴为每帧对应音符,曲线为用户演唱歌曲音高曲线,虚 折线为原唱歌曲音高曲线调性规整后得到的音符折线,实折线为用户演唱歌曲音高曲线调 性规整后的得到折线。
[0219] 例如:用户演唱歌曲音高曲线的第20帧至第65帧在原唱歌曲音符G对应折线以下, 需要对用户演唱歌曲音高曲线对应音高值提升,根据提升后的音高值对用户演唱歌曲音高 曲线进行调性规整,如第20帧到第65帧的实折线。
[0220]又例如:用户演唱歌曲音高曲线的第66帧至第92帧在原唱歌曲音符F对应折线以 上,需要对用户演唱歌曲音高曲线进行反向提升,根据反向提升后的音高值对用户演唱歌 曲音高曲线进行调性规整,如第66帧至第92帧的实折线。
[0221] 再例如:用户演唱歌曲音高曲线的第159帧至212帧,用户演唱歌曲音高曲线穿过 原唱音符F对应折线,则直接将该段用户演唱歌曲音高曲线规整为原唱音符F对应折线,如 图中第159帧至212帧的实折线。
[0222] 得到了第一音符折线(即用户演唱歌曲音高曲线调性规整后的折线)后,如何对第 一音符折线进行平滑处理本实施例并不进行限制。例如可以通过如下方式:
[0223] 可以采用插值的方法将第一音符折线平滑成曲线,插值方法可以为多项式插值、 样条插值及其思想类似的插值方法。将插值后的音高值连接起来,即得到平滑后的第一音 尚曲线。
[0224] 作为示例可参见图13。图13中以歌曲为例,横轴为歌曲的帧数,纵轴表示每帧的音 尚值,虚折线为原唱歌曲首尚曲线调性规整后的首符折线,实折线为用户演唱歌曲首尚曲 线调性规整后的折线,曲线为根据实折线,使用插值方法得到平滑曲线,即用户演唱歌曲调 性规整后的音高曲线。
[0225] 作为示例图14展示出了原唱音高曲线与修正后的用户演唱音高曲线的对比,横轴 为歌曲的帧数,纵轴表不每帧的首尚值,虚线为原唱歌曲首尚曲线,实线为首阶修正和调性 修正后的音高曲线,由图中可以看出音阶修正将用户演唱歌曲音高曲线修正到与原唱歌曲 音高曲线相同的音阶范围内,再经过调性修正使用户演唱歌曲音高曲线的起伏更明显,同 时更接近原唱歌曲音高曲线,从而使修正后的用户演唱歌曲具有更好的节奏感。
[0226] 此外,参见图15所示,得到修正后的第一音频数据之后,所述方法还可以包括:
[0227] 步骤S1501,将修正后的第一音频数据反馈给用户。
[0228] 参见图16所示,用户可以点击"试听歌曲"按钮,从而听到修正也即润色后的所录 歌曲。
[0229] 在本实施例中,并不是对音频数据进行简单的替换,而是从音频数据的音高曲线 入手,分别从音阶层面及调性层面对用户演唱歌曲等音频数据的音高曲线进行修正。音阶 层面的修正可以将用户演唱歌曲音高曲线规整到与原唱歌曲音高曲线相同的音阶范围内 或相差一或多个音阶,而调性层面的修正则可以针对用户演唱歌曲音高曲线的起伏进行修 正。本发明实施例中的方案可以使修正后的用户演唱歌曲音高曲线与原唱歌曲音高曲线的 走势保持一致,并且用户演唱歌曲音高曲线的起伏相比修正前更接近原唱歌曲,从而大大 提升了用户演唱歌曲的节奏感和听感,提升了对歌曲等音频数据的修正效果。
[0230] 下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实 施例中未披露的细节,请参照本发明方法实施例。
[0231] 图17是根据本发明一示例性实施例示出的一种音频修正装置的示意图。参见图17 所示,该装置可以包括:
[0232] 音频数据获取模块1701,用于获取第一音频数据;
[0233] 音高曲线获取模块1702,用于获取第一音高曲线,所述第一音高曲线为所述第一 首频数据的首尚曲线;
[0234]音阶修正模块1703,用于根据第二音高曲线,对所述第一音高曲线进行音阶修正, 其中所述第二音高曲线为与所述第一音频数据相对应的第二音频数据的音高曲线;
[0235]调性修正模块1704,用于根据第二音高曲线,对完成了音阶修正的第一音高曲线 进行调性修正,以得到修正后的第一音高曲线;
[0236]音频数据还原模块1705,用于将修正后的第一音高曲线转换回音频信号,以得到 修正后的第一音频数据。
[0237] 参见图18所示,在本实施例或本发明其他某些实施例中,所述音高曲线获取模块 可以包括:
[0238] 分帧子模块1801,用于对所述第一音频数据进行分帧;
[0239] 基频提取子模块1802,用于提取分帧后得到的每帧数据的基频;
[0240] 音高值转换子模块1803,用于将提取的每帧数据的基频转换为音高值;
[0241] 曲线生成子模块1804,用于以各音高值作为曲线上的点得到所述第一音高曲线。
[0242] 在本实施例或本发明其他某些实施例中,所述对所述第一音频数据进行分帧,可 以包括:
[0243] 根据所述第一音频数据的节奏进行分帧;或者,以固定时长为单位进行分帧。
[0244] 参见图19所示,在本实施例或本发明其他某些实施例中,所述音阶修正模块可以 包括:
[0245] 片段划分子模块1901,用于按照预设方式将所述第一音高曲线划分为多个片段, 每个片段包含一个或多个音高连续段;
[0246] 音阶调整子模块1902,用于通过获取每个片段与所述第二音高曲线相应部分在音 高值上的差别、每个片段内各音高连续段与所述第二音高曲线相应部分在音高值上的差 另IJ,确定每个片段内各音高连续段偏离所述第二音高曲线的程度,以及,根据每个片段内各 音高连续段偏离所述第二音高曲线的程度,对需要调整的音高连续段进行音阶调整,以使 调整后的第一音高曲线与所述第二音高曲线在音阶上满足预设关系。
[0247] 在本实施例或本发明其他某些实施例中,所述预设关系为:
[0248] 调整后的第一音高曲线与所述第二音高曲线在相同的音阶范围内,或者,调整后 的第一音高曲线与所述第二音高曲线相差固定的音阶。
[0249] 在本实施例或本发明其他某些实施例中,所述通过获取每个片段与所述第二音高 曲线相应部分在音高值上的差别、每个片段内各音高连续段与所述第二音高曲线相应部分 在音高值上的差别,确定每个片段内各音高连续段偏离所述第二音高曲线的程度,可以包 括:
[0250] 对于每个片段,计算当前片段的第一均值以及当前片段内每个音高连续段的第二 均值,其中第一均值为当前片段上各帧与第二音高曲线相应帧的音高差的总均值,第二均 值为音高连续段上的各帧与第二音高曲线相应帧的音高差的均值;
[0251] 基于音高连续段的第二均值与第一均值的比值,确定音高连续段偏离所述第二音 高曲线的程度。
[0252] 在本实施例或本发明其他某些实施例中,所述根据每个片段内各音高连续段偏离 所述第二音高曲线的程度,对需要调整的音高连续段进行音阶调整,可以包括:
[0253] 对于每个音高连续段,根据当前音高连续段偏离所述第二音高曲线的程度与预设 阈值的关系,确定是否需要对当前音高连续段进行音阶调整;
[0254] 当需要对当前音高连续段进行音阶调整时,向偏离的反方向调整当前音高连续段 的音阶,直至当前音高连续段与所述第二音高曲线在音阶上满足所述预设关系。
[0255] 参见图20所示,在本实施例或本发明其他某些实施例中,所述调性修正模块可以 包括:
[0256]第二音符折线获取子模块2001,用于获取第二音符折线,所述第二音符折线为对 所述第二音频数据进行调性规整后得到的音符折线;
[0257]第一音符折线生成子模块2002,用于根据所述第二音符折线中每个折线段与所述 第一音高曲线的高低位置关系,对所述第一音高曲线进行调性规整以得到第一音符折线; [0258]平滑子模块2003,用于对所述第一音符折线进行平滑处理,将平滑处理后得到的 曲线作为修正后的第一音高曲线。
[0259]在本实施例或本发明其他某些实施例中,所述获取第二音符折线,可以包括:
[0260]获取所述第二音频数据的调性;
[0261] 通过计算所述第二音高曲线中每帧与临近音符在音高上的距离,将每帧的音高规 整到距离最近的音符上以得到所述第二音符折线,其中所述第二音频数据的调性中未出现 的音符不作为所述临近音符。
[0262] 在本实施例或本发明其他某些实施例中,所述根据所述第二音符折线中每个折线 段与所述第一音高曲线的高低位置关系,对所述第一音高曲线进行调性规整以得到第一音 符折线,可以包括:
[0263] 当第一音高曲线在第二音符折线的折线段以下或以上时,将第一音高曲线相应部 分变换为折线段,此时第一音高曲线的折线段的音高值根据第二音符折线的折线段对应的 第一音高曲线的中间帧音高值、第二音符折线的折线段对应的音高值以及第一音高曲线相 应部分中的音高最大值而确定;
[0264] 当第一音高曲线穿过第二音符折线的折线段时,将第一音高曲线相应部分变换为 折线段,此时第一音高曲线的折线段的音高值为第二音符折线的折线段对应的音高值。
[0265] 参见图21所示,在本实施例或本发明其他某些实施例中,所述装置还可以包括: [0266]反馈模块2101,用于将修正后的第一音频数据反馈给用户。
[0267] 在本实施例或本发明其他某些实施例中,所述第一音频数据为用户所唱歌曲,所 述第二音频数据为与所述第一音频数据对应的原唱歌曲;或者,所述第一音频数据为用户 所演奏的纯音乐,所述第二音频数据为与第一音频数据对应的示范音乐。
[0268] 在本实施例或本发明其他某些实施例中,当所述第一音频数据为用户所唱歌曲 时,所述第一音频数据和所述第二音频数据均为清唱歌曲;当所述第一音频数据为用户所 演奏的纯音乐时,所述第一音频数据和所述第二音频数据均为使用单一乐器所演奏的音 乐。
[0269] 参见图22所示,在本实施例或本发明其他某些实施例中,当所述第一音频数据为 用户所唱歌曲时,所述装置还可以包括:
[0270]对齐模块2201,用于在对所述第一音高曲线进行音阶修正及调性修正之前,根据 歌词语义将所述第一音高曲线中音高连续段的起始点与所述第二音高曲线中音高连续段 的起始点对齐。
[0271] 在本实施例中,并不是对音频数据进行简单的替换,而是从音频数据的音高曲线 入手,分别从音阶层面及调性层面对用户演唱歌曲等音频数据的音高曲线进行修正。音阶 层面的修正可以将用户演唱歌曲音高曲线规整到与原唱歌曲音高曲线相同的音阶范围内 或相差一或多个音阶,而调性层面的修正则可以针对用户演唱歌曲音高曲线的起伏进行修 正。本发明实施例中的方案可以使修正后的用户演唱歌曲音高曲线与原唱歌曲音高曲线的 走势保持一致,并且用户演唱歌曲音高曲线的起伏相比修正前更接近原唱歌曲,从而大大 提升了用户演唱歌曲的节奏感和听感,提升了对歌曲等音频数据的修正效果。
[0272] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法 的实施例中进行了详细描述,此处将不做详细阐述说明。
[0273] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其 它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或 者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识 或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的 权利要求指出。
[0274]应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并 且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
【主权项】
1. 一种音频修正方法,其特征在于,所述方法包括: 获取第一音频数据; 获取第一音高曲线,所述第一音高曲线为所述第一音频数据的音高曲线; 根据第二音高曲线,对所述第一音高曲线依次进行音阶修正及调性修正,以得到修正 后的第一音高曲线,其中所述第二音高曲线为与所述第一音频数据相对应的第二音频数据 的首尚曲线; 将修正后的第一音高曲线转换回音频信号,以得到修正后的第一音频数据。2. 根据权利要求1所述的方法,其特征在于,所述获取第一音高曲线,包括: 对所述第一音频数据进行分帧; 提取分帧后得到的每帧数据的基频; 将提取的每帧数据的基频转换为音高值; 以各音高值作为曲线上的点得到所述第一音高曲线。3. 根据权利要求2所述的方法,其特征在于,所述对所述第一音频数据进行分帧,包括: 根据所述第一音频数据的节奏进行分帧; 或者, 以固定时长为单位进行分帧。4. 根据权利要求1所述的方法,其特征在于,所述根据第二音高曲线,对所述第一音高 曲线进行音阶修正,包括: 按照预设方式将所述第一音高曲线划分为多个片段,每个片段包含一个或多个音高连 续段; 通过获取每个片段与所述第二音高曲线相应部分在音高值上的差别、每个片段内各音 高连续段与所述第二音高曲线相应部分在音高值上的差别,确定每个片段内各音高连续段 偏离所述第二音高曲线的程度,以及, 根据每个片段内各音高连续段偏离所述第二音高曲线的程度,对需要调整的音高连续 段进行音阶调整,以使调整后的第一音高曲线与所述第二音高曲线在音阶上满足预设关 系。5. 根据权利要求4所述的方法,其特征在于,所述预设关系为: 调整后的第一音高曲线与所述第二音高曲线在相同的音阶范围内, 或者, 调整后的第一音高曲线与所述第二音高曲线相差固定的音阶。6. 根据权利要求4所述的方法,其特征在于,所述通过获取每个片段与所述第二音高曲 线相应部分在音高值上的差别、每个片段内各音高连续段与所述第二音高曲线相应部分在 音高值上的差别,确定每个片段内各音高连续段偏离所述第二音高曲线的程度,包括: 对于每个片段,计算当前片段的第一均值以及当前片段内每个音高连续段的第二均 值,其中第一均值为当前片段上各帧与第二音高曲线相应帧的音高差的总均值,第二均值 为音高连续段上的各帧与第二音高曲线相应帧的音高差的均值; 基于音高连续段的第二均值与第一均值的比值,确定音高连续段偏离所述第二音高曲 线的程度。7. 根据权利要求4所述的方法,其特征在于,所述根据每个片段内各音高连续段偏离所 述第二音高曲线的程度,对需要调整的音高连续段进行音阶调整,包括: 对于每个音高连续段,根据当前音高连续段偏离所述第二音高曲线的程度与预设阈值 的关系,确定是否需要对当前音高连续段进行音阶调整; 当需要对当前音高连续段进行音阶调整时,向偏离的反方向调整当前音高连续段的音 阶,直至当前音高连续段与所述第二音高曲线在音阶上满足所述预设关系。8. 根据权利要求1所述的方法,其特征在于,所述根据第二音高曲线,对所述第一音高 曲线进行调性修正,包括: 获取第二音符折线,所述第二音符折线为对所述第二音频数据进行调性规整后得到的 首符折线; 根据所述第二音符折线中每个折线段与所述第一音高曲线的高低位置关系,对所述第 一音高曲线进行调性规整以得到第一音符折线; 对所述第一音符折线进行平滑处理,将平滑处理后得到的曲线作为修正后的第一音高 曲线。9. 根据权利要求8所述的方法,其特征在于,所述获取第二音符折线,包括: 获取所述第二音频数据的调性; 通过计算所述第二音高曲线中每帧与临近音符在音高上的距离,将每帧的音高规整到 距离最近的音符上以得到所述第二音符折线,其中所述第二音频数据的调性中未出现的音 符不作为所述临近音符。10. 根据权利要求8所述的方法,其特征在于,所述根据所述第二音符折线中每个折线 段与所述第一音高曲线的高低位置关系,对所述第一音高曲线进行调性规整以得到第一音 符折线,包括: 当第一音高曲线在第二音符折线的折线段以下或以上时,将第一音高曲线相应部分变 换为折线段,此时第一音高曲线的折线段的音高值根据第二音符折线的折线段对应的第一 音高曲线相应部分的中间帧音高值、第二音符折线的折线段对应的音高值以及第一音高曲 线相应部分中的音高最大值而确定; 当第一音高曲线穿过第二音符折线的折线段时,将第一音高曲线相应部分变换为折线 段,此时第一音高曲线的折线段的音高值为第二音符折线的折线段对应的音高值。11. 根据权利要求1所述的方法,其特征在于,得到修正后的第一音频数据之后,所述方 法还包括: 将修正后的第一音频数据反馈给用户。12. 根据权利要求1~11任一项所述的方法,其特征在于,所述第一音频数据为用户所 唱歌曲,所述第二音频数据为与所述第一音频数据对应的原唱歌曲;或者,所述第一音频数 据为用户所演奏的纯音乐,所述第二音频数据为与第一音频数据对应的示范音乐。13. 根据权利要求12所述的方法,其特征在于,当所述第一音频数据为用户所唱歌曲 时,所述第一音频数据和所述第二音频数据均为清唱歌曲; 当所述第一音频数据为用户所演奏的纯音乐时,所述第一音频数据和所述第二音频数 据均为使用单一乐器所演奏的音乐。14. 根据权利要求12所述的方法,其特征在于,当所述第一音频数据为用户所唱歌曲 时,对所述第一音高曲线依次进行音阶修正及调性修正之前,所述方法还包括: 根据歌词语义将所述第一音高曲线中音高连续段的起始点与所述第二音高曲线中音 高连续段的起始点对齐。15. -种音频修正装置,其特征在于,所述装置包括: 音频数据获取模块,用于获取第一音频数据; 音高曲线获取模块,用于获取第一音高曲线,所述第一音高曲线为所述第一音频数据 的首尚曲线; 音阶修正模块,用于根据第二音高曲线,对所述第一音高曲线进行音阶修正,其中所述 第二音高曲线为与所述第一音频数据相对应的第二音频数据的音高曲线; 调性修正模块,用于根据第二音高曲线,对完成了音阶修正的第一音高曲线进行调性 修正,以得到修正后的第一音高曲线; 音频数据还原模块,用于将修正后的第一音高曲线转换回音频信号,以得到修正后的 第一音频数据。16. 根据权利要求15所述的装置,其特征在于,所述音高曲线获取模块包括: 分帧子模块,用于对所述第一音频数据进行分帧; 基频提取子模块,用于提取分帧后得到的每帧数据的基频; 音高值转换子模块,用于将提取的每帧数据的基频转换为音高值; 曲线生成子模块,用于以各音高值作为曲线上的点得到所述第一音高曲线。17. 根据权利要求16所述的装置,其特征在于,所述对所述第一音频数据进行分帧,包 括: 根据所述第一音频数据的节奏进行分帧;或者,以固定时长为单位进行分帧。18. 根据权利要求15所述的装置,其特征在于,所述音阶修正模块包括: 片段划分子模块,用于按照预设方式将所述第一音高曲线划分为多个片段,每个片段 包含一个或多个音高连续段; 音阶调整子模块,用于通过获取每个片段与所述第二音高曲线相应部分在音高值上的 差别、每个片段内各音高连续段与所述第二音高曲线相应部分在音高值上的差别,确定每 个片段内各音高连续段偏离所述第二音高曲线的程度,以及,根据每个片段内各音高连续 段偏离所述第二音高曲线的程度,对需要调整的音高连续段进行音阶调整,以使调整后的 第一音高曲线与所述第二音高曲线在音阶上满足预设关系。19. 根据权利要求18所述的装置,其特征在于,所述预设关系为: 调整后的第一音高曲线与所述第二音高曲线在相同的音阶范围内,或者,调整后的第 一音高曲线与所述第二音高曲线相差固定的音阶。20. 根据权利要求18所述的装置,其特征在于,所述通过获取每个片段与所述第二音高 曲线相应部分在音高值上的差别、每个片段内各音高连续段与所述第二音高曲线相应部分 在音高值上的差别,确定每个片段内各音高连续段偏离所述第二音高曲线的程度,包括: 对于每个片段,计算当前片段的第一均值以及当前片段内每个音高连续段的第二均 值,其中第一均值为当前片段上各帧与第二音高曲线相应帧的音高差的总均值,第二均值 为音高连续段上的各帧与第二音高曲线相应帧的音高差的均值; 基于音高连续段的第二均值与第一均值的比值,确定音高连续段偏离所述第二音高曲 线的程度。21. 根据权利要求18所述的装置,其特征在于,所述根据每个片段内各音高连续段偏离 所述第二音高曲线的程度,对需要调整的音高连续段进行音阶调整,包括: 对于每个音高连续段,根据当前音高连续段偏离所述第二音高曲线的程度与预设阈值 的关系,确定是否需要对当前音高连续段进行音阶调整; 当需要对当前音高连续段进行音阶调整时,向偏离的反方向调整当前音高连续段的音 阶,直至当前音高连续段与所述第二音高曲线在音阶上满足所述预设关系。22. 根据权利要求15所述的装置,其特征在于,所述调性修正模块包括: 第二音符折线获取子模块,用于获取第二音符折线,所述第二音符折线为对所述第二 音频数据进行调性规整后得到的音符折线; 第一音符折线生成子模块,用于根据所述第二音符折线中每个折线段与所述第一音高 曲线的高低位置关系,对所述第一音高曲线进行调性规整以得到第一音符折线; 平滑子模块,用于对所述第一音符折线进行平滑处理,将平滑处理后得到的曲线作为 修正后的第一音高曲线。23. 根据权利要求22所述的装置,其特征在于,所述获取第二音符折线,包括: 获取所述第二音频数据的调性; 通过计算所述第二音高曲线中每帧与临近音符在音高上的距离,将每帧的音高规整到 距离最近的音符上以得到所述第二音符折线,其中所述第二音频数据的调性中未出现的音 符不作为所述临近音符。24. 根据权利要求22所述的装置,其特征在于,所述根据所述第二音符折线中每个折线 段与所述第一音高曲线的高低位置关系,对所述第一音高曲线进行调性规整以得到第一音 符折线,包括: 当第一音高曲线在第二音符折线的折线段以下或以上时,将第一音高曲线相应部分变 换为折线段,此时第一音高曲线的折线段的音高值根据第二音符折线的折线段对应的第一 音高曲线的中间帧音高值、第二音符折线的折线段对应的音高值以及第一音高曲线相应部 分中的音高最大值而确定; 当第一音高曲线穿过第二音符折线的折线段时,将第一音高曲线相应部分变换为折线 段,此时第一音高曲线的折线段的音高值为第二音符折线的折线段对应的音高值。25. 根据权利要求15所述的装置,其特征在于,所述装置还包括: 反馈模块,用于将修正后的第一音频数据反馈给用户。26. 根据权利要求15~25任一项所述的装置,其特征在于,所述第一音频数据为用户所 唱歌曲,所述第二音频数据为与所述第一音频数据对应的原唱歌曲;或者,所述第一音频数 据为用户所演奏的纯音乐,所述第二音频数据为与第一音频数据对应的示范音乐。27. 根据权利要求26所述的装置,其特征在于,当所述第一音频数据为用户所唱歌曲 时,所述第一音频数据和所述第二音频数据均为清唱歌曲; 当所述第一音频数据为用户所演奏的纯音乐时,所述第一音频数据和所述第二音频数 据均为使用单一乐器所演奏的音乐。28. 根据权利要求26所述的装置,其特征在于,当所述第一音频数据为用户所唱歌曲 时,所述装置还包括: 对齐模块,用于在对所述第一音高曲线进行音阶修正及调性修正之前,根据歌词语义 将所述第一音高曲线中音高连续段的起始点与所述第二音高曲线中音高连续段的起始点 对齐。
【文档编号】G10L21/013GK106057208SQ201610425682
【公开日】2016年10月26日
【申请日】2016年6月14日
【发明人】李飞吾, 杨溥, 潘青华
【申请人】科大讯飞股份有限公司