找回密码
 欢迎注册
查看: 9671|回复: 6

[讨论] 扒歌的算法是否已经实现?

[复制链接]
发表于 2017-4-22 12:58:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
要解决的扒歌问题如下:

  输入以标准采样率录下来的一首歌的声波、一个响度阈值、一个标准频率,

  要求识别出声波里所有的音符,包括频率,长度和响度,

  以简谱的形式输出这首歌里所有响度大于阈值的音符,

  音符的辨认标准如下:

    输入的标准频率为$Do$,

    $9/8$倍频率为$Re$,

    $5/4$倍频率为$Mi$,

    $4/3$倍频率为$Fa$,

    $3/2$倍频率为$So$,

    $5/3$倍频率为$La$,

    $15/8$倍频率为$Ci$,

    $2$倍频率为高八度的$Do$,

    依次类推。

这个问题是否已经解决?

如果已经解决,是否可以找到相应的软件?

(感觉已经解决了,因为比这个问题难度更高的语音识别都实现了,音符识别应该不难实现)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-4-22 14:26:19 | 显示全部楼层
无法解决,因为很难分离主旋律与其他干扰因素。这些干扰因素主要由三个方面构成:
一、低音泛音
这现象人耳很难分辨,因为人的耳朵对高音比较敏感,但对于低音不太敏感。比如你在钢琴上按下一个倍低音的La,通过一些音频软件进行傅里叶分析,你会发现里面响度最大的基频确实符倍低音La的频率,但是同时还会有低音La、中音La……这些泛音,其响度(振幅)与基频响度要低,但不是可忽略的程度。

二、乐器
一首歌通常会有低音贝斯、鼓等乐器来进行节奏的控制,还有一些电子合成器或者弦乐构成的padding(铺底)音色(用于渲染氛围),这些东西严重污染了主旋律部分,导致通过声波来分析得不到明晰的结果。不过由于鼓和贝斯的节奏很有规律,且都位于低音区,还比较容易分离。

三、人声
人声的音区比较特殊,一般歌曲伴奏会与人声混录,并且人声的声像比较靠前,音量比旋律要大,如何分离人声的干扰,也是一个很重要的环节。一般由于人声采用立体声双声道处理,可以通过反相的方式来抵消掉人声,但是这样也不是很干净地去除,并且还会造成旋律上有些细节失真。

现在的语音识别技术是依赖于深度学习网络,这个是基于目标具有内在固有模式(视为特征——映射模式)的学习过程。

语言的发音固定且有相对固定的含义,且跟发音的长短和节奏快慢无关。音符与语言有个重要的差别,那就是音符本身是没有意义的,它在不同的旋律(相应于语言中的“前后文”)中的作用是不同的。并且,音乐与节奏,以及音符的时值关系很大——比如你可以尝试一下将国歌用高一个八度的调来演奏,会发现前后给人的感觉并没什么区别。但是如果改变国歌的演奏速度(比如稍微缓慢一点),或者改变整个国歌的节拍,前后给人的感觉就完全不同。

这些差异就是导致音符识别比语音识别要难的原因。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-4-22 15:16:55 | 显示全部楼层
现在有很多APP能实现听歌识曲的功能,只不过它们大部分只是将采样片段与曲库中素材进行匹配搜索而已,如果曲库中没有收录某个音乐/歌曲,就无法得到结果。这种功能与通过哼歌或独奏主旋律来识别歌曲(即楼主提出的问题)是有本质区别的。

当然,国外有4人尝试解决这个问题,比如AnthemScore这个软件,使用的就是卷积神经网络来训练音符,具体算法在这里https://www.lunaverus.com/cnn,软件我用过,感觉准音准识别没有问题,但是问题在于节奏有些会完全错误,并且里面有很多低声部泛音的干扰(比如钢琴的低音区和弦)。

另外Melodyne Editor这个软件可以实现音频素材的识别和编辑(时长和音高的修改,包括人声),作者是德国的一位长相酷似马克思的大叔,叫Peter Neubacker。虽然分离音频文件的多声部旋律问题比登月还难,这就好比将混合的墨水分离开来一样,但他不相信这一点,他要做别人做不到的事情,他和他的团队让2.0开始支持多声部素材的解析和检测了,虽然不能百分之百达到人们预期,但毫无疑问,这是一个伟大的尝试。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2017-11-23 23:09:21 | 显示全部楼层
既然扒歌这么难,那些声称可以哼歌识曲的软件是怎么做的?

在我看来,系统首先需要将曲库里的几百万首歌听一遍,

识别出主旋律里的每个音符的音高和长度,记录成文本。

然后需要识别出人哼唱的每个音符的音高和长度,也记录成文本。

剩下的就是一般的搜索引擎都能干的事情了:

把前者看成海量的网页,把后者看成要查询的关键词,

然后返回与关键词匹配的网页,并根据匹配程度和网页的热度综合评分,

最后把匹配的结果按照评分从高到低依次输出。

如果查询的关键词有小错误,可以自动纠正,不影响匹配结果。

但是如果连谱都扒不出来,还怎么哼歌识曲?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-11-24 13:11:17 | 显示全部楼层
关键词:Perceptual Hash Algorithm/感知哈希算法。
我只做过图片,音乐方向的怎么实现没关注。不过用MusicBrainz Picard匹配音乐很久了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-27 08:47 , Processed in 0.047596 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表