没有合适的资源?快使用搜索试试~ 我知道了~
首页使用Python标准库中的wave模块绘制乐谱的简单教程
资源详情
资源评论
资源推荐

使用使用Python标准库中的标准库中的wave模块绘制乐谱的简单教程模块绘制乐谱的简单教程
主要介绍了使用Python标准库中的wave模块绘制乐谱,涉及到了numpy模块和坐标的可视化运用,用到了需要的
朋友可以参考下
在本文中,我们将探讨一种简洁的方式,以此来可视化你的MP3音乐收藏。此方法最终的结果将是一个映射你所有歌曲的正
六边形网格地图,其中相似的音轨将处于相邻的位置。不同区域的颜色对应不同的音乐流派(例如:古典、嘻哈、重摇滚)。
举个例子来说,下面是我所收藏音乐中三张专辑的映射图:Paganini的《Violin Caprices》、Eminem的《The Eminem
Show》和Coldplay的《X&Y》。
为了让它更加有趣(在某些情况下更简单),我强加了一些限制。首先,解决方案应该不依赖于MP3文件中任何已有的ID3标
签(例如,Arist,Genre),应该仅仅使用声音的统计特性来计算歌曲的相似性。无论如何,很多我的MP3文件标记都很糟
糕,但我想使得该解决方案适用于任何音乐收藏文件,不管它们的元数据是多么糟糕。第二,不应使用其他外部信息来创建可
视化图像,需要输入的仅仅是用户的MP3文件集。其实,通过利用一个已经被标记为特定流派的大型歌曲数据库,就能提高
解决方案的有效性,但是为了简单起见,我想保持这个解决方案完全的独立性。最后,虽然数字音乐有很多种格式(MP3、
WMA、M4A、OGG等),但为了使其简单化,这里我仅仅关注MP3文件。其实,本文开发的算法针对其他格式的音频也能很
好地工作,只要这种格式的音频可以转换为WAV格式文件。
创建音乐图谱是一个很有趣的练习,它包含了音频处理、机器学习和可视化技术。基本步骤如下所示:
转换MP3文件为低比特率WAV文件。
从WAV元数据中提取统计特征。
找到这些特征的一个最佳子集,使得在这个特征空间中相邻的歌曲人耳听起来也相似。
为了在一个XY二维平面上绘图,使用降维技术将特征向量映射到二维空间。
生成一个由点组成的六角网格,然后使用最近邻技术将XY平面上的每一首歌曲映射六角网格上的一个点。
回到原始的高维特征空间,将歌曲聚类到用户定义数量的群组中(k=10能够很好地实现可视化目的)。对于每个群组,找
到最接近群组中心的歌曲。
在六角网格上,使用不同的颜色对k个群组中心的那首歌曲着色。
根据其他歌曲在XY屏幕上到每个群组中心的距离,对它们插入不同的颜色。
下面,让我们共同看看其中一些步骤的详细信息。
MP3文件转换成文件转换成WAV格式格式
将我们的音乐文件转换成WAV格式的主要优势是我们可以使用Python标准库中的“wave”模块很容易地读入数据,便于后面使
用NumPy对数据进行操作。此外,我们还会以单声道10kHz的采样率对声音文件下采样,以使得提取统计特征的计算复杂度
有所降低。为了处理转换和下采样,我使用了众所周知的MPG123,这是一个免费的命令行MP3播放器,在Python中可以很
容易调用它。下面的代码对一个音乐文件夹进行递归搜索以找到所有的MP3文件,然后调用MPG123将它们转换为临时的
10kHz WAV文件。然后,对这些WAV文件进行特征计算(下节中讨论)。



















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0