十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
效果图:
“只有客户发展了,才有我们的生存与发展!”这是创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对成都网站制作、网站建设、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
操作演示:
技术要点:
1 matplotlib的南丁格尔玫瑰图,用极坐标polar制作,并动画显示。
2 pygame新版的播放mp3,但本机的操作系统不能播放mp3,我用pydub做些格式转换。
3 用librosa获取音乐的相关数据和采样。
4 参考代码,并对源代码进行修改,增加,删减,排版和注释,感谢原作者,如有侵权,请联系,定删除。
====下面分步,讲解代码====
第1步:模块导入
第2步:窗口的初始化设置
第3步:参数设置
第4步:核心代码:
第5步:filter类
第6步:函数定义
第7步:启动主函数
自己整理,分享出来,希望大家喜欢。
比如采样率为22050,音频文件有36s,那么x为长度为22050*36=793800的float。
用到了python库 Spleeter
抽象地了解下原理吧
参考文章是这篇:Spleeter: a fast and efficient music source separation tool with pre-trained models
原理文章是这篇 SINGING VOICE SEPARATION: A STUDY ON TRAINING DATA
粗略扫了一眼,原理主要是用U-Net进行分割,然后这个Python工具主要是利用了一个pre-trained的model。
参考链接:机器之心的一篇文章
纵轴表示频率(从0到10kHz),横轴表示剪辑的时间。由于我们看到所有动作都发生在频谱的底部,我们可以将频率轴转换为对数轴。
可以对频率取对数。
感觉这个参数蛮有意思的
整个频谱被投影到12个区间,代表音乐八度音的12个不同的半音(或色度), librosa.feature.chroma_stft 用于计算。
先对音频进行短时傅里叶变换
其中每行存储一个窗口的STFT,大小为1025*1551
这里要注意理解怎么基于stft的结果来画频谱图
没太了解,感觉就大概知道有这么个量可以用到就行。
librosa.feature.spectral_centroid 计算信号中每帧的光谱质心:
1. 先理解连续傅里叶变换
2. 再理解离散傅里叶变换
对连续函数进行离散采样
3. 最后进入短时傅里叶变换
是先把一个函数和窗函数进行相乘,然后再进行一维的傅里叶变换。并通过窗函数的滑动得到一系列的傅里叶变换结果,将这些结果竖着排开得到一个二维的表象。
编写一个名为make_album()的函数
它创建一个描述音乐专辑的字典。1、这个函数应接受歌手的名字和专辑名,并返回一个包含这两项信息的字典。
市面上差不多有十多种python库可以编写MIDI格式的文件,本文会推荐大家使用PYTHON-MIDI。我觉得python-midi的优势是不光可以自己写程序生成MIDI,而且还可以对MIDI文件进行解析。这样的功能配合机器学习算法,或许可以帮助我们实现机器的自动编曲,当然这是后话。先来看下如何安装python-midi。
1.首先进入,将整个项目克隆下来。
2.在程序目录下执行以下命令安装,
python setup.py install11
3.如果想执行某个以mid为后缀的MIDI文件,只要执行以下命令即可:
mididump.py test.mid11
接下来介绍下如何写代码生成midi文件。
实操
在python-midi库中,每个乐谱用Pattern对象表示,乐谱中的每个音轨(通常音乐都有很多轨道组成,每种乐器是一个轨道)用Track对象表示。每个音符的开端用midi.NoteOnEvent表示,结束用midi.NoteOffEvent表示,可以在参数中定义每个字符的音长和音高。示例代码如下:
生成的是一个简单的音阶: