【小项目-1】用Python进行人声伴奏分离和音乐特征提取

Python028

【小项目-1】用Python进行人声伴奏分离和音乐特征提取,第1张

比如采样率为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. 最后进入短时傅里叶变换

是先把一个函数和窗函数进行相乘,然后再进行一维的傅里叶变换。并通过窗函数的滑动得到一系列的傅里叶变换结果,将这些结果竖着排开得到一个二维的表象。

收音机通过天线或线圈接受电磁波(电台发射信号附在一定频率的电磁波),通过检波电路把信号分离出来,通过放大电路增强信号,由功放电路加大功率,推动喇叭震动,转换成声波。这本身就是把电能转换成声能。你的想法是把空中的电磁波转换成电能?理论上是可以的,但实际上不好办。因为空中的电磁波能量很小,转换后没有使用价值。比如在大功率的发射天线附近,由于有很强的电磁波,你用一个螺旋线圈就可感应出电,甚至点亮灯泡。不过人家不会让你这么干的。

当然这并不会打击你的热情和设想,如果你成功了,所有使用电磁波的企业都会高价买你的专利,避免他们的倒闭。