音频信号的旋律检测方法、装置以及电子设备与流程

文档序号:18089158发布日期:2019-07-06 10:40阅读:361来源:国知局
音频信号的旋律检测方法、装置以及电子设备与流程

本发明涉及音频处理领域,具体而言,本发明涉及一种音频信号的旋律检测方法、装置以及电子设备。



背景技术:

在日常生活中,歌唱是一种重要的文化活动和娱乐方式。随着这种娱乐方式的发展,为了能够对用户演唱的歌曲进行分类或根据用户喜好进行自动和弦匹配等,就需要对用户演唱的歌曲进行旋律识别。但是对于未经专业音乐训练的用户来说,演唱中不可避免的会出现轻微的音高不准(走调)的情况。此时,就会对音乐旋律的准确识别带来挑战。

现有的技术方案是对用户演唱的歌曲进行语音识别,主要通过识别用户演唱歌曲的音频信号中的歌词,并根据识别到的歌词在数据库中进行匹配,得到用户演唱歌曲的旋律信息。但考虑到实际情况中,用户可能只是哼唱出了一个旋律,没有明确的歌词,或者只是用1~2个字的简单歌词重复,没有实际的歌词意义,此时原有的基于语音识别的方法就会失败。此外,用户也可能演唱的是自己创作的一段旋律,此时原有的数据库匹配方法也不再适用。



技术实现要素:

本发明的目的旨在能解决上述的技术缺陷。不要求用户准确演唱出明确的歌词,用户仅哼唱出一个旋律即可。同时也可以应对用户是非专业歌手存在轻微走调的情况。都可以给出对用户所演唱内容的一个比较准确的旋律估计。

为实现上述目的,本发明提供了一种音频信号的旋律检测方法,包括如下步骤:

按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值;

根据所述音高值所属的频率范围确定各个音频段对应的音名;

利用各个音频段的音名对所述音频信号的调式进行估计,获取所述音频信号的音阶;

根据各个音频段的音高值在所述音阶中的频率区间,确定所述音频信号的旋律。

在一种实施例的音频信号的旋律检测方法中,所述按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值的步骤,包括:

根据设定的节拍类型确定各个音频段的持续时间;

根据所述持续时间将音频信号分割为若干音频段;其中,上述音频段为根据节拍确定的小节;

将每一个所述音频段等分为若干音频小段;

分别检测各个所述音频小段中各帧音频子信号的基音频率;

将所述音频小段中持续稳定多帧音频子信号的基音频率的均值作为音高值。

在一种实施例的音频信号的旋律检测方法中,所述将所述音频小段中持续稳定多帧音频子信号的基音频率的均值作为音高值的步骤之后,还包括:

计算每个音频小段中所述音高值的稳定持续时间;

当所述稳定持续时间小于设定的门限时,将对应音频小段的音高值设置为零。

在一种实施例的音频信号的旋律检测方法中,所述根据所述音高值所属的频率范围确定各个音频段对应的音名的步骤,包括:

将所述音高值输入音名编号生成模型得到音名编号;

根据所述音名编号在音名序列表中查找各个音频段的音高值所属的频率范围,确定音高值对应的音名。

在一种实施例的音频信号的旋律检测方法中,所述将所述音高值输入音名编号生成模型得到音名编号的步骤中,所述音名编号生成模型表述为:

其中,所述k是音名编号,所述fm-n是第m个所述音频段中第n个音的音高值的频率,所述a是用于定位的音名的频率,所述mod是求余函数。

在一种实施例的音频信号的旋律检测方法中,所述利用各个音频段的音名对所述音频信号的调式进行估计,获取所述音频信号的音阶的步骤,包括:

获取所述音频信号中各个音频段对应的音名;

将所述音名通过定调算法处理对所述音频信号的调式进行估计;

根据所述调式确定定位音符的间隔半音数,并根据所述间隔半音数计算得到音频信号对应的音阶。

在一种实施例的音频信号的旋律检测方法中,所述根据各个音频段的音高值在所述音阶中的频率区间,确定所述音频信号的旋律的步骤,包括:

获取音频信号音阶的音高列表;其中,所述音高列表记载音高值与音阶之间的对应关系;

根据音频信号内各个音频段的音高值,在所述音高列表中查找音高值对应的音符;

根据各个音频段中音高值对应的时间顺序,将所述音符按照所述时间顺序进行排序,并根据所述排序将音符转换为对应音频信号的旋律。

在一种实施例的音频信号的旋律检测方法中,所述按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值的步骤之前,还包括:

将音频信号进行短时傅里叶变换;其中,所述音频信号为哼唱或清唱的音频信号;

对进行短时傅立叶变换的结果,进行基音频率检测,得到基音频率;其中,基音频率用于音高值的检测;

若检测不到基音频率,则在各帧音频子信号对应的信号位置输入插值频率;

将所述插值频率作为对应帧的音频信号的基音频率。

在一种实施例的音频信号的旋律检测方法中,所述按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值的步骤之前,还包括:

根据设定的节奏信息生成所述音频信号的音乐节奏;

根据所述音乐节奏生成节拍和时间的提示信息。

本发明还提供一种音频信号的旋律检测装置,包括:

音高检测单元,用于按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值;

音名检测单元,用于根据所述音高值所属的频率范围确定各个音频段对应的音名;

调式检测单元,用于利用各个音频段的音名对所述音频信号的调式进行估计,获取所述音频信号的音阶;

旋律检测单元,用于根据各个音频段的音高值在所述音阶中的频率区间,确定所述音频信号的旋律。

本发明还提供一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行上述实施例中任意一项所述的音频信号的旋律检测方法。

本发明还提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述实施例中任意一项所述的音频信号的旋律检测方法。

本实施例中提供的音频信号的旋律检测方案:按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值;根据所述音高值所属的频率范围确定各个音频段对应的音名;利用各个音频段的音名对所述音频信号的调式进行估计,获取所述音频信号的音阶;根据各个音频段的音高值在所述音阶中的频率区间,确定所述音频信号的旋律的技术方案。通过上述技术方案对音频信号划分的音频段中多帧音频子信号对应的基音频率进行音高值、音名、调式估计、音阶确定等处理步骤,最终输出用户哼唱或者清唱音频信号的旋律。本发明所提供的技术方案可以对自行作曲、无意义哼唱、歌词错误演唱、吐字不清演唱、发声不稳定、音准不准、走音、破音等不良演唱和非专业演唱的音频信号,进行准确的旋律检测,而不依赖于用户的发音标准或者演唱准确。利用本发明的技术方案,即使在用户走音走调等情况下,也可以修正用户哼唱的旋律,最终输出正确的旋律。因此,本发明技术方案在得到准确的旋律上具有更好的鲁棒性,甚至可以在演唱者走调偏移程度小于1.5个半音的情况下,都具有良好的识别效果。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为一个实施例的音频信号的旋律检测方法的方法流程图;

图2为实施例的确定音频信号中各个音频段音高值的方法流程图;

图3为音频信号中一段音频段划分为八段音频小段的示意图;

图4为对稳定持续时间小于门限的音高值配置为零的方法流程图;

图5为实施例的根据音高值所在频率范围确定音名的方法流程图;

图6为实施例的根据各音频段的音名定调和确定音阶的方法流程图;

图7是本实施例中展示间隔半音数、音名以及频率值关系的音名序列表;

图8为实施例的根据调式和音阶将音高值生成旋律的方法流程图;

图9为实施例的对音频信号预处理的方法流程图;

图10为实施例的根据选定节奏信息生成提示信息的方法流程图;

图11为一个实施例的音频信号的旋律检测装置结构图;

图12为实施例的音频信号的旋律检测电子设备的结构图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

为了克服旋律识别准确率低,对演唱者演唱音准要求高,否则不能得到有效和准确旋律信息的技术缺陷,本发明提供一种对音频信号进行旋律检测的技术方案,能够对音频信号中形成的旋律进行识别并输出,尤其适用于清唱或者哼唱以及音准不准的等演唱。除此之外,本发明还适用于无歌词演唱等场景。

请参考图1,本发明提供一种音频信号的旋律检测方法,包括如下步骤:

步骤s1:按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值;

步骤s2:根据所述音高值所属的频率范围确定各个音频段对应的音名;

步骤s3:利用各个音频段的音名对所述音频信号的调式进行估计,获取所述音频信号的音阶;

步骤s4:根据各个音频段的音高值在所述音阶中的频率区间,确定所述音频信号的旋律。

在上述技术方案中,以识别用户哼唱的音频信号的旋律为例。可以选择指定的节拍,所指定的节拍即音频信号的旋律的节拍,例如是1/4拍、1/2拍、1拍、2拍、4拍。根据指定的节拍,将音频信号划分为多个音频段,每段音频段对应节拍中的一个小节,每段音频段中包括多帧音频子信号。

在本实施例中,可以将所选节拍的标准持续时间设定一个小节,并将音频信号按照标准持续时间划分为多段音频段,即按照一小节的标准持续时间划分音频段。再针对该小节的音频段进行等分,例如将一个小节等分为八个小段(每一小段称为音频小段),可以将每一段小段(即每一段音频小段)的持续时长作为一个稳定音高值的输出时间。

在一份音频信号中,根据用户演唱的速度不同,一般分为快速(120拍/分钟)、中速(90拍/分钟)、慢速(30拍/分钟)。以一个小节包含两拍为例,一个小节的标准持续时间约为1秒至2秒,那么上述输出时间将是125毫秒至250毫秒之间。

在执行上述步骤s1时,当用户哼唱至第m个小节,对第m个小节的音频段进行检测。其中,将第m个小节根据上述的最小输出时间等分为八个小段,每一段小段将确定一个音高值,即每一段音频小段对应一个音高值。

具体地,每一段音频小段中包括多帧音频子信号,可以检测各帧音频子信号的基音频率,并根据所述基音频率得到各个音频段相应的音高值。获取各音频段的音高值,据此确定各个音频段中每段音频小段对应的音名。同样地,各个音频段可以包括多个音名,也可以只哼唱同一个音名。

利用各个音频段的音名,对上述用户哼唱得到的音频信号的调式进行估计,获取对应音频信号的音阶。在得到对多段音频段对应的音名后,对多个音名的变化进行调式估计,得到对应音频信号的调式。其中,通过调式可以确定用户所哼唱的基调,例如是c调或f#调。根据所确定的调式和音程关系确定用户所哼唱的音频信号的音阶。

音阶上每个音对应一定的频率范围,根据各个音频段的音高值,通过判断每个音频段的基音频率落入在上述音阶中的各个音频率区间,确定所述音频信号的旋律。

请参考图2,本发明为了获得更准确的音高值,为此提供一种技术方案,上述步骤s1:按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值的步骤,具体包括:

步骤s11:根据设定的节拍类型确定各个音频段的持续时间。

步骤s12:根据所述持续时间将音频信号分割为若干音频段。

其中,上述音频段为根据节拍确定的小节。

步骤s13:将每一个所述音频段等分为若干音频小段。

步骤s14:分别检测各个所述音频小段中各帧音频子信号的基音频率。

步骤s15:将所述音频小段中持续稳定多帧音频子信号的基音频率的均值作为音高值。

上述技术方案根据设定的节拍类型可以确定各个音频段的持续时间。根据音频段的持续时间,将一定时长的音频信号分割为若干音频段。每一段音频段对应上述根据节拍确定的小节。

为了更好的说明上述步骤s13,请参考图3。图3展示了音频信号中将一段音频段(一个小节)等分,划分为八段音频小段的示例。图3中的音频小段包括:音频小段x-1、音频小段x-2、音频小段x-3、音频小段x-4、音频小段x-5、音频小段x-6、音频小段x-7、音频小段x-8。

在用户哼唱得到的一段音频信号中,每一段音频小段一般包括起始、持续、结束的三个过程。在图3所出示的每一段音频小段内,检测音高变化最稳定且持续时间最长的基音频率,将该基音频率作为该音频小段的音高值。在上述检测过程中,每一段音频小段的起始和结束过程一般是音高变化比较剧烈的区域。音高变化剧烈的区域会影响所检测得到音高值的准确性。在进一步改进的技术方案中,检测音高值之前可以将音高变化剧烈的区域予以去除,以增强音高值检测结果的准确性。

具体来说,在每一段音频小段中,根据基音频率的检测结果,将基音频率变化在±5赫兹以内且持续时间最长片段,作为对应音频小段的持续稳定片段。

如果上述持续时间最长片段的时间长度大于一定门限,则对该持续时间最长片段内的所有基音频率求均值,将求得的均值作为这个音频小段的音高值输出。其中,上述的门限是指每一段音频小段的最小稳定持续的时间。在本实施例中,将上述门限示例性地选定为音频小段时间长度的三分之一。在一个小节(一段音频段)中,如果音频小段持续时间最长片段的时间长度大于一定门限,那么该小节(该音频段)将会输出八个音,每一个音对应一段音频小段。

为此请参考图4,本发明的实施例中提供一种技术方案,所述步骤s15将所述音频小段中持续稳定多帧音频子信号的基音频率的均值作为音高值的步骤之后,还包括:

步骤s16:计算每个音频小段中所述音高值的稳定持续时间。

步骤s17:当所述稳定持续时间小于设定的门限时,将对应音频小段的音高值设置为零。

其中,上述的门限是指每一段音频小段的最小稳定持续的时间。

在检测音高值的过程中,每一个音频小段中持续时间最长片段的时间是音高值的稳定持续时间。上述持续时间最长片段的稳定持续时间小于设定的门限时,将对应音频小段的音高值设置为零。

本发明的实施例中还提供一种准确检测音频段的音名的技术方案,请参考图5,在步骤s2根据所述音高值所属的频率范围确定各个音频段对应的音名的步骤,包括:

步骤s21:将所述音高值输入音名编号生成模型得到音名编号。

步骤s22:根据所述音名编号在音名序列表中查找各个音频段的音高值所属的频率范围,确定音高值对应的音名。

在上述过程中,将每段音频段的音高值输入到音名编号生成模型中,得到音名编号。

根据每段音频段的音名编号,在音名序列表中查找各个音频段的音高值所属的频率范围,确定音高值对应的音名。在本实施例中,音名编号的值所属的范围在音名序列表中也可以对应音名。

本发明还提供一种音名编号生成模型,上述音名编号生成模型表述为:

其中,所述k是音名编号,所述fm-n是第m个所述音频段(第m个小节)中第n个音(对应第n个音频小段)的音高值的频率,所述a是用于定位的音名的频率,所述mod是求余函数。12个音名编号的数量设定是根据十二平均律确定的,即一个八度有12个音名。

例如,假设第四个音频段(第四个小节)的第2个音频小段x-2的估计音高值为f4-2=450赫兹,本实施例中确定用于定位的音名为a,该音名对应的频率为440赫兹,也就是a=440赫兹。在本实施例中,12个音名编号的设定是根据十二平均律。

当f4-2=450赫兹时,该音频段的第2个音的音名编号k=1,通过音名序列表(请见图7)可以查找到该音频段的第2个音的音名是a,即音频小段x-2的音名为a。

下面展示了一种音名序列表,音名序列表记载音名编号k的值所在的音名编号范围与音名之间的一一对应的关系。

音名a对应的音名编号范围为:0.5<k≤1.5;

音名a#对应的音名编号范围为:1.5<k≤2.5;

音名b对应的音名编号范围为:2.5<k≤3.5;

音名c对应的音名编号范围为:3.5<k≤4.5;

音名c#对应的音名编号范围为:4.5<k≤5.5;

音名d对应的音名编号范围为:5.5<k≤6.5;

音名d#对应的音名编号范围为:6.5<k≤7.5;

音名e对应的音名编号范围为:7.5<k≤8.5;

音名f对应的音名编号范围为:8.5<k≤9.5;

音名f#对应的音名编号范围为:9.5<k≤10.5;

音名g对应的音名编号范围为:10.5<k≤11.5;

音名g#对应的音名编号范围为:11.5<k或k≤0.5。

通过音名编号范围,可以初步将用户演唱走音、走调等情况的音高处理到靠近准确演唱的音名上,便于后续的调式估计、音阶确定和旋律检测等处理,增强后续输出旋律的准确性。

请参考图6,本发明提供一种技术方案,可以确定用户哼唱的音频信号的调式以及对应的音阶。本发明中步骤s3所述利用各个音频段的音名对所述音频信号的调式进行估计,获取所述音频信号的音阶,包括:

步骤s31:获取所述音频信号中各个音频段对应的音名。

步骤s32:将所述音名通过定调算法处理对所述音频信号的调式进行估计。

步骤s33:根据所述调式确定定位音符的间隔半音数,并根据所述间隔半音数计算得到音频信号对应的音阶。

在上述过程中,可以通过获得音频信号中各个音频段对应的音名。根据音频信号的多个音名进行调式估计。其中,调式估计采用定调算法处理,定调算法可以是krumhansl-schmuckler(克鲁姆汉斯尔-施穆克勒)等定调算法。定调算法可以输出上述用户哼唱的音频信号的调式,例如本实施例中所输出的调式可以用间隔半音数表示,调式还可以用音名表示,间隔半音数与前述12个音名之间一一对应。

根据定调算法所确定的调式,可以确定定位音符的间隔半音数。例如,在本实施例中,确定音频信号的调式是f#,其间隔半音数是9,音名是f#。调式f#表示的是以f#作为do(唱名),do就是定位音符,也就是音阶的第一个音符。当然,在其它可能的处理方式中,可以将定位音符设定为是音阶中的任一音符,并进行相应的转换。本实施例中,将第一个音符作为定位音符可以减少一些处理。

本实施例可以根据音频信号的调式(f#)确定定位音符(do)的间隔半音数为9,并根据该间隔半音数计算得到音频信号对应的音阶。

在上述过程中,根据调式(f#)确定定位音符(do),定位音符是音阶中的第一个音符,也就是唱名(do)所对应的音符。根据调式f#的大调音阶中的音程关系(全音-全音-半音-全音-全音-全音-半音),可以确定音阶。调式f#的音阶,以音名按照顺序表示为:f#、g#、a#、b、c#、d#、f。调式f#的音阶,以唱名按照顺序表示为:do、re、mi、fa、sol、la、si。

在本实施例中,当定调算法获得的是间隔半音数时,可以通过下列换算关系得到音阶:

do=(key+3)mod12;

re=(key+5)mod12;

mi=(key+7)mod12;

fa=(key+8)mod12;

sol=(key+10)mod12;

la=key;

si=(key+2)mod12;

上述换算关系中,key表示调式确定定位音符的间隔半音数,mod表示求余函数,其中的do、re、mi、fa、sol、la、si分别是音阶中的唱名的间隔半音数。获得各个唱名的间隔半音数就可以通过图7确定各个音阶的音名。

图7表示的是间隔半音数、音名以及频率值的关系,其中包括间隔半音数和音名之间的频率值的倍数关系。

在本实施例中,若定调算法输出的调式是c,其间隔半音数是3,通过音程关系换算可以得到调式是c的音频信号的音阶。以音名按照顺序表示的音阶为:c、d、e、f、g、a、b。以唱名按照顺序表示的音阶为:do、re、mi、fa、sol、la、si。

请参考图8,本发明的实施例中提供一种技术方案,步骤s4根据各个音频段的音高值在所述音阶中的频率区间,确定所述音频信号的旋律的步骤,包括:

步骤s41:获取音频信号音阶的音高列表。

其中,所述音高列表记载音高值与音阶之间的对应关系。音高列表可以参考图12,音阶中各个音名对应的一个音高值,音高值以频率(赫兹)表示。

步骤s42:根据音频信号内各个音频段的音高值,在所述音高列表中查找音高值对应的音符。

步骤s43:根据各个音频段中音高值对应的时间顺序,将所述音符按照所述时间顺序进行排序,并根据所述排序将音符转换为对应音频信号的旋律。

在上述过程中,可以获取音频信号对应音阶的音高列表如图7,根据音频信号中各个音频段的音高值,在音高列表中查找对应的音符。音符可以音名的形式表示。

在本实施例中,例如当音高值为440赫兹时,在音高列表中查找的到音符的音名为a1。因此,可以根据音频信号的中各个音频段的音高值的频率找到对应时间的音符及其持续时间。

根据各个音频段中音高值对应的时间顺序,将音符按照出现的时间顺序进行排序。根据音符的时间排序,将音符转换为对应音频信号的旋律。得到的旋律可以是简谱、五线谱、音名、唱名展示的旋律,还可以是以标准音准的音乐输出。

在本实施例中,得到的旋律之后,还可以进行旋律进行哼唱检索,即对应曲目信息的检索;也可以对哼唱的旋律进行和弦、伴奏、和声的处理;还可以确定用户哼唱的歌曲类型并进行用户特征的分析。除此之外,还可以根据用户哼唱的旋律和得到旋律之间进行差异计算,得到用户哼唱准确性的评分。

在本发明提供的实施例中,请参考图9,步骤s1按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值的步骤之前,还包括:

步骤a1:将音频信号进行短时傅里叶变换。

其中,所述音频信号为哼唱或清唱的音频信号。

步骤a2:对进行短时傅立叶变换的结果,进行基音频率检测,得到基音频率。

其中,基音频率用于音高值的检测。

步骤a3:若检测不到基音频率,则在各帧音频子信号对应的信号位置输入插值频率。

步骤a4:将所述插值频率作为对应帧的音频信号的基音频率。

在上述过程,可以通过收音设备获取用户哼唱的音频信号。对音频信号进行短时傅里叶变换,将音频信号处理后输出为短时傅立叶变换的结果。

根据帧长和帧移,对音频信号的短时傅里叶变换得到多帧的短时傅立叶变换的结果。

上述的音频信号可以是用户通过清唱或者哼唱曲目采集得到的音频信号,所清唱或者哼唱的曲目可以是自行创作的歌曲。对每一帧短时傅立叶变换的结果进行基音频率检测得到基音频率,进而得到上述音频信号对应的多帧基音频率。基音频率可以用于后续对音频信号的基音检测。

由于用户哼唱声音小或者采集得到的音频信号较弱,有可能导致检测不到基音频率。当音频信号中某些音频小段检测不到基音频率时,则在音频小段中,对应的信号位置输入该插值频率。其中,插值频率可以根据插值算法得到。前述的插值频率可以作为对应音频小段的基音频率。

请参考图10,为了进一步提升旋律识别的准确性,本发明实施例中提供一种技术方案,步骤s1按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值的步骤之前,还包括:

步骤b1:根据设定的节奏信息生成所述音频信号的音乐节奏。

步骤b2:根据所述音乐节奏生成节拍和时间的提示信息。

在上述过程中,用户可以根据即将要哼唱的曲目选定节奏信息。获取用户设定的节奏信息生成对应音频信号的音乐节奏。

进一步根据上述得到的节奏信息,生成提示信息。其中,提示信息可以提示用户即将要生成的音频信号的节拍和时间。为了便于理解,节拍可以是鼓点、钢琴声等形式体现,还可以是通过用户持有的设备发出的震动、闪光体现。

在本实施例中,举一个例子,用户选定的节奏信息是1/4拍,根据用户选定的1/4拍生成音乐节奏,并生成符合1/4拍的节拍,反馈到用户持有的设备(例如是手机或者是演唱工具),以震动的形式向用户提示1/4的节拍。除此之外,还可以根据1/4拍的节拍生成辅助用户哼唱的鼓点或者钢琴伴奏,用户所持有的设备或耳机可以向用户播放鼓点或者钢琴伴奏,从而提升得到音频信号的旋律准确性。

根据用户选定的时间长度,可以在哼唱开始或者哼唱结束通过震动或者提示音等提示信息,提示用户哼唱的起点和终点。除此之外,提示信息也可以通过显示屏等可视化手段进行提示。

请参考图11,为了克服对音频信号对应的音频信号准确性要求很高,识别准确率低,不能得到有效和准确旋律信息的技术缺陷,本发明提供一种对音频信号进行旋律检测的装置——音频信号的旋律检测装置,包括:

音高检测单元111,用于按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值。

音名检测单元112,用于根据所述音高值所属的频率范围确定各个音频段对应的音名。

调式检测单元113,用于利用各个音频段的音名对所述音频信号的调式进行估计,获取所述音频信号的音阶。

旋律检测单元114,用于根据各个音频段的音高值在所述音阶中的频率区间,确定所述音频信号的旋律。

请参考图12,本实施例中还提供一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行上述任一实施例所述的音频信号的旋律检测方法。

具体地,图12是根据一示例性实施例示出的一种执行音频信号的旋律检测方法的一种电子设备的框图。例如,电子设备1200可以被提供为一服务器。参照图12,电子设备1200包括处理组件1222,其进一步包括一个或多个处理器,以及由存储器1232所代表的存储器资源,用于存储可由处理组件1222的执行的指令,例如应用程序。存储器1232中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1222被配置为执行指令,以执行上述音频信号的旋律检测方法。

电子设备1200还可以包括一个电源组件1226被配置为执行电子设备1200的电源管理,一个有线或无线网络接口1250被配置为将电子设备1200连接到网络,和一个输入输出(i/o)接口1258。电子设备1200可以操作基于存储在存储器1232的操作系统,例如windowsservertm、macosxtm、unixtm、linuxtm、freebsdtm或类似。其中,电子设备可以是计算机设备、手机、平板电脑等终端。

本实施例还提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述实施例中任意一项所述的音频信号的旋律检测方法。

本实施例中提供的音频信号的旋律检测方案:按节拍将音频信号划分为多个音频段,检测各个音频段中各帧音频子信号的基音频率,并根据所述基音频率估计各个音频段的音高值;根据所述音高值所属的频率范围确定各个音频段对应的音名;利用各个音频段的音名对所述音频信号的调式进行估计,获取所述音频信号的音阶;根据各个音频段的音高值在所述音阶中的频率区间,确定所述音频信号的旋律的技术方案。通过上述技术方案对音频信号划分的音频段中多帧音频子信号对应的基音频率进行音高值、音名、调式估计、音阶确定等处理步骤,最终输出用户哼唱或者清唱音频信号的旋律。本发明所提供的技术方案可以对自行作曲、无意义哼唱、歌词错误演唱、吐字不清演唱、发声不稳定、音准不准、走音、破音等不良演唱和非专业演唱的音频信号,进行准确的旋律检测,而不依赖于用户的发音标准或者演唱准确。利用本发明的技术方案,即使在用户走音走调等情况下,也可以修正用户哼唱的旋律,最终输出正确的旋律。因此,本发明技术方案在得到准确的旋律上具有更好的鲁棒性,甚至可以在演唱者走调偏移程度小于1.5个半音的情况下,都具有良好的识别效果。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1