python的音乐函数库 python处理音乐( 二 )


BeautifulSoup库,给我们提供了parent属性获取父节点,同时提供了next_sibling属性获取当前节点的下一个兄弟节点,previous_sibling属性获取上一个兄弟节点 。
示例代码如下:
运行之后,效果如下:
对于节点选择器,博主已经介绍了相对于文本内容较少的完全可以这么做 。但实际的爬虫爬的网址都是大量的数据,开始使用节点选择器就不合适了 。所以,我们要考虑通过方法选择器进行先一步的处理 。
find_all()方法主要用于根据节点的名称、属性、文本内容等选择所有符合要求的节点 。其完整的定义如下所示:
【实战】还是测试上面的HTML,我们获取name=a,attr={"class":"aaa"} , 并且文本等于text="Python板块"板块的节点 。
示例代码如下所示:
运行之后,效果如下所示:
find()与find_all()仅差一个all,但结果却有2点不同:
1.find()只查找符合条件的第一个节点 , 而find_all()是查找符合条件的所有节点2.find()方法返回的是bs4.element.Tag对象 , 而find_all()返回的是bs4.element.ResultSet对象
下面 , 我们来查找上面HTML中的a标签,看看返回结果有何不同,示例如下:
运行之后 , 效果如下:
首先,我们来了解一下CSS选择器的规则:
1..classname:选取样式名为classname的节点 , 也就是class属性值是classname的节点2.#idname:选取id属性为idname的节点3.nodename:选取节点名为nodename的节点
一般来说,在BeautifulSoup库中,我们使用函数select()进行CSS选择器的操作 。示例如下:
这里,我们选择class等于li1的节点 。运行之后,效果如下:
因为,我们需要实现嵌套CSS选择器的用法,但上面的HTML不合适 。这里 , 我们略作修改,仅仅更改
【小项目-1】用Python进行人声伴奏分离和音乐特征提取比如采样率为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. 最后进入短时傅里叶变换
是先把一个函数和窗函数进行相乘,然后再进行一维的傅里叶变换 。并通过窗函数的滑动得到一系列的傅里叶变换结果 , 将这些结果竖着排开得到一个二维的表象 。
Python常用的标准库以及第三方库有哪些?推荐5个常用的Python标准库:
1、os:提供了不少与操作系统相关联的函数库
os包是Python与操作系统的接口 。我们可以用os包来实现操作系统的许多功能,比如管理系统进程,改变当前路径,改变文件权限等 。但要注意,os包是建立在操作系统的平台上的,许多功能在Windows系统上是无法实现的 。另外 , 在使用os包中,要注意其中的有些功能已经被其他的包取代 。

推荐阅读