哼唱相对旋律谱提取技术的制作方法

文档序号:11834531阅读:399来源:国知局
哼唱相对旋律谱提取技术的制作方法与工艺

本发明涉及一种音乐旋律表示和提取方法,尤其涉及一种对人类自然哼唱时由于起调高低随意性而无法适用五线谱音符哆唻咪来表示时,仅用各音之间的频率对数比的差值来表示的方法,尤其涉及该表示方法的语音识别软件提取技术方法。



背景技术:

对于识别演唱音乐的乐谱表示方法,通常的方法是识别每一个单个音符的绝对频率音高,来将其对应到某一个五线谱或简谱所规定的音符,例如简谱中的哆、唻、咪、发、嗦、啦、嘻,(1、2、3、4、5、6、7),或五线谱中的C、D、E、F、G、A、B。

这种传统的表示方法的好处是,识别时任何单个音符具有唯一性,只要识别单个音符的中心频率立刻可以得到乐谱,另一个好处是它是音乐家可以演奏的乐谱,电脑可以直接播放的乐谱,播放的效果听上去与原演唱的音高序列完全一致。

但这种方法有一个弊端,即对于专业音乐人士来说,可以准确的演唱一首歌,并被识别为正确的乐谱。但对于非专业的普通大众来说,由于起调的随意性,演唱的随意性,很容易被识别为大量很难懂的音符,其中包括大量的升降调号。

本发明放弃单个音符的音高识别和表示,而是采用对综合整体的相对音高的识别,以及他们之间的相对变化值来表示旋律。这样的方法虽然对于单个音符来说完全无法表示,但是对于整句或多句演唱时,可以非常准确的提取其相对旋律谱。

这种表示和提取方法,对于后期搜索音乐、转换为标准乐谱、加上伴奏等功能提供了便捷的方法,使普通大众可以记录自己的音乐,甚至创作自己的音乐。



技术实现要素:

本发明涉及一种哼唱音乐旋律的表示和提取方法。

这是一种对人类无伴奏自然哼唱时由于起调高低随意性而无法适用五线谱绝对音高的哆唻咪等音符来表示时,仅用各音之间的频率对数差值来表示的方法,简称为“相对旋律谱”表示法。尤其涉及该表示方法的语音识别软件提取技术方法。包括以下步骤:将哼唱录音分为小时间片;使用时域转频域算法来对每个小时间片的录音进行转换;使用泛音能量分析定位该时间片内能量最集中的基音中心频率;将前后基音中心频率几乎一致的小时间片连贯起来作为一个音符,用平均基音中心频率来表示;将各音符的基音中心频率取对数,并基于最可能的两个倍频进行12分量化;将各音符表示为与前一个音符的相对量化单位;将采用这种表示法的音符序列来代替该哼唱的旋律谱。

本发明有益效果:能对非音乐专业人士的自然哼唱迅速记录其旋律谱,便于后期记录、搜索、伴奏等用途;使非专业大众作曲成为可能性。

附图说明

下面根据附图和实施例对本发明作进一步详细说明。

1是口哨的PCM波形与频谱;

2是哼唱“a”音的PCM波形与频谱;

3是哼唱“啦”音阶频谱-时间

4是单音节奏切分原理

5是哼唱歌曲的时域

6是哼唱歌曲的频域,基音与泛音关系,提取公式与提取后结果

7是软件流程

具体实施方式

音乐与普通语音最大的区别在于其频率存在相关性。

无论是哼唱或乐器,每一个发音都由一个基音频率以及其整数倍数的泛音组成,基音的频谱宽窄及泛音的多少决定其音色如何。简单纯净的乐器、音叉、或口哨的波形单纯,泛音少。浑厚乐器、人声哼唱的波形复杂,泛音多。例如图1和图2是口哨和哼唱“a”音的PCM波形及其频谱对比。

不过对于已经是主旋律的哼唱语音来说,已经不需要音色的提取,只要提取其基音的中心频率即可,这是比较简单的,例如很容易看出上面口哨的基音频率中心约为1250Hz,哼唱“a”音的基音频率中心约为126Hz。

如果是需要识别乐器的绝对音名,有了基音频率,就可以通过查表得到这个音符的绝对音名了,但本项目“哼唱相对旋律谱”提取的关键就在于不是识别绝对音名,而在于要提取相对音高的变化。因此还要提取前后音符的相对音高关系。

首先来看音阶中各音频率的关系:

如图3所示:以音阶中C,D,E,F,G,A,B,C不同音高来唱“啦”,其基频频率和泛音同时都在变化。

分析研究发现,相差一个音阶的高低同一个音(例如中音“哆”到高音“哆”),其频率为2倍关系,一共相差12个半音程:

CD(哆来)之间为全音程(一个全音程等于两个半音程),DE(来咪)之间为全音程,EF(咪发)之间为半音程,FG(发梭)之间为全音程,GA(梭拉)之间为全音程,AB(拉西)之间为全音程,BC(西哆)之间为半音程。一共12个半音程。

例如乐器校准时通常把频率440Hz定为标准音A4(低音“拉”)。频率增加一倍,音阶增加一。因此880Hz为A5(中音“拉”),而220Hz为A3(再低音“拉”)。从A4到A5要经历如下12个音:

A4(拉),A4#,B4(西),C5(哆),C5#,D5(来),D5#,E5(咪),F5(发),F5#,G5(梭),G5#

这12个音的频率组成一个等比数列,因此每两个音之间的频率比是2^(1/12)=1.0594630。所以A4#的频率为:440*1.0594630=466.164Hz。依次类推:见12音阶音名与基音频率关系

12音阶音名与基音频率关系

概括的说,即任意两个全音程关系的音符的频率为1∶2^(1/6)的比例。任意两个半音程关系的音符的频率为1∶2^(1/12)的比例。

哼唱相对旋律谱识别原理:

以上是乐器的频率关系,乐器通常都是用校音器校准,不同的乐器同一音名的频率是一样的,但就人在没有伴奏的情况下哼唱歌曲主旋律,起调却千差万别,其频率之间又有什么规律呢经过仔细研究对比发现,与乐器的规律一样,口头哼唱的时候各人起调不同,基准音的绝对频率可能差很远,但是各音符之间的相对频率比不会变。不管他从多高的频率起调,唱一个音阶,最终同名的高音都是起调的两倍频率,中间仍然是分为12个等比频率的音符。例如,起调200Hz为中音“哆”,则高音“哆”一定是400Hz,如果起调150Hz为中音哆,则高音“哆”一定是300Hz,也就是说,我们要识别哼唱旋律,所谓识别音高,实际上只是识别其相对频率比的变化,与绝对频率完全无关。

再换句话说,要识别单个音符,如果是乐器,我们可以根据其频率高低直接识别是哪个音名,例如440Hz是A4,但是如果是人的哼唱,只唱一个音符,就绝对不可能知道他唱的是哪个音符,只有当他哼唱两个以上音符,才可以从相对频率变化上判别他唱的旋律。

例如男生习惯性的中音“哆”基音频率大约为100Hz,而女生习惯性的中音哆大约为200Hz,但是这并不影响他(她)们唱同段旋律的感觉,因为起调低的相对后续音符也都低,起调高的相对后续音符也都高,

我们又注意到音符数比较少的时候,即使是相对有变化,仍然无法判别具体是哪几个音符,例如女生用“啦-啦-啦-”来唱A4(啦)-B4(西)-C5(哆)三个音高,和男生用“啦-啦-啦”来唱D5(来)-E5(咪)-F5(发)三个音高的感觉听多了怎么都觉得是一样,究其原因是因为他们都是一个全音程和一个半音程的关系。然而当音符数再增多,加上节奏的变化时,就可以听出他们要唱的是哪一首歌里面的调子了。一个乐感稍好的人,都可以以任意一个音高起唱任意一首歌,只是起调太高后面的高音会唱不上去而已。

所以我们得到一个结论,绝对音名的判别其实在判别和搜索歌曲时其实是没有意义的,我们只要听出其频率的相对变化就可以了,也就是说我们要识别的并不是绝对乐谱,而是相对乐谱,只要相对乐谱一样,找到那首歌就达到目的了,我们并不需要关心其绝对乐谱是什么,那是音乐家写谱的时候要做的事。

“相对旋律谱提取技术”原理与计算公式:

我们根据音阶中12个音符频率呈等比数列的特性,把两个频率之间的相对变化用数学公式来处理,先比,然后取2的对数,再除以1/12,建立频率到相对乐谱的计算公式如下:

(Log2(fn/fn-1))/(1/12)=12*Log2(fn/fn-1)

例如12341,按以上公式对每两个相邻音的频率处理之后,得到的序列为2,2,1,-5,是非常简单的一个表示方法。上面这个公式用乐理的常识来理解,也可以理解为:

将后一个音相对前一个音的音程数除以半音程的倍数来记录,正的音程记为正,负的音程记为负。

当然以上是标准的频率,得到的频率比的对数都是1/12的整数倍,如果有轻微的走音,得到的不是1/12的整数倍,则需要进行四舍五入取整到一个最接近的整数,这一点是很好理解:

INT[12*Log2(fn/fn-1)+0.5]

取最接近1/12的整数倍是把“频率比对数”量化的一个过程,所以给这种记谱法一个数学命名,叫“频率比对数量化记谱法”。

按乐理命名可以叫“相对音程变化记谱法”,总之就是要提取音高序列的相对变化的旋律谱,而不是绝对的音名谱,所以我们称之为“相对旋律谱”,这种提取技术称之为“相对旋律谱提取技术”。

语音识别哼唱节奏原理:

在中文里,一个字的发音是由一个声母和一个韵母组成的,例如“啦”,是声母“l”和韵母“a”的组合,声母发音短促,其频谱分布较宽,变化快,持续时间0.1秒~0.2秒,韵母发音时间较长,其频谱有较细的谱线,较为稳定,变化慢。如图4所示。

因此,辅音的边界可以作为音符的切分边界。我们目前采用PCM声强包络线突变的地方作为音符切分的主要依据,效果比较好。5是哼唱“沧海笑,涛涛两岸潮”的PCM语音,其包络线可分离出各辅音边界。

另一个音符的边界,是音高的变化,即同一个发音的音高发生变化时,也作为另一个音符来处理。例如以下是哼唱“沧海笑,涛涛两岸潮”的频谱,其中“沧”和“海”都被切分为两个音符:

关于音符切分的技术,国内技术领域中已有相对成熟的众多论文可供参考。

“相对旋律谱”的天然技术优势:

(1)与起调音高无关:每一个音都是相对前一个音高的相对变化量,与男女老少不同声线音域、起调高低都无关,无需识别其参考基音是什么。

(2)抗走调:经大量对比研究我们所搜集的众多哼唱录音发现,一般唱歌走调不严重的人都能比较准确的把握时间上和音高上相差不大的两个音。

能把握“时间上相差不大的两个音”的意思是,相隔比较近的几个音相对音高可唱得准,或者即使是走调也走得不严重,但隔得比较远的两句歌词,就会失去参考音准,无法把握相对音高。“相对旋律谱”采用的是前后两个音的差异,时间上相差比较远的两个音之间的音高关系不会被表达,因此走调会集中在真正走调的那几个音符上,搜索的时候也会将错误集中体现在走调的那几个旋律谱上,剩下的旋律谱信息,仍然比较准确的保留着歌曲的旋律细节,可以起到命中歌曲的作用。

能把握“音高上相差不大的两个音”的意思是,两个音程相差不大的音,比较能把握,跨度比较大的两个音,比较容易走调,而且从这个音之后,后面的音都以后面一个音为基准偏移。换句话说,走调是发生在突然遇到跨度大的音符上,并且由于这个音,导致了歌唱者心里偏离了基准音,之后整个基准都偏离了。事实上,大部分歌曲的大部分旋律都是跨度小的音,跨度大的音比较少,会间歇性出现,因此走调者通常也是间歇性走调。“相对旋律谱”正好就没有所谓的基准音,因为它记录的每个音的基准都是相对前一个音的频率关系,所以也正好完美的避免了这个问题,即仍然可以将错误集中在开始走调的那个音上,后面的旋律谱信息,仍然完美的保留着歌曲的旋律细节,可以起到命中歌曲的作用。

可以这样说,如果采用绝对音名来记录一个哼唱旋律,走调会严重干扰基准音的选定,而一旦基准音选取偏离,又会导致大部分音符都表达不准确,最终导致整个旋律谱无法识别,即会产生错误扩散的恶性趋势。而“相对旋律谱”则没有统一的基准音,唱歌的人随时间的逐渐走调和受大跨度音跳变影响而导致的基准音变化,都会被集中到局部,大部分旋律细节,仍然可以起到命中歌曲的作用,即具有错误局部化的良性优势。所以“相对旋律谱”具有抗走调的天然优势。

软件流程

附图7是软件流程

将哼唱录音分为小时间片;

使用时域转频域算法来对每个小时间片的录音进行转换;

使用泛音能量分析定位该时间片内能量最集中的基音中心频率;

将前后基音中心频率几乎一致的小时间片连贯起来作为一个音符,用平均基音中心频率来表示;

将各音符的基音中心频率取对数,并基于最可能的两个倍频进行12分量化;

将各音符表示为与前一个音符的相对量化单位;

将采用这种表示法的音符序列来代替该哼唱的旋律谱。

此流程对于普通语音识别软件领域内的工程师来说已经足够简单,因此没有给出更详细的流程

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