Pydub可以让你用简单的方式处理音频。
Pydub提供了简洁的高层接口,极大的扩展了python处理音频文件的能力。
GitHub链接: pydub-github
GitHub:
pydub的使用必须安装对应的依赖软件 ffmpeg 或 avconv
验证是否安装成功:
Open a WAV file
Open a mp3 file
Open a other file
切割音频
分贝操作
分贝(decibel)是量度两个相同单位之数量比例的计量单位,主要用于度量声音强度,常用dB表示。
音频链接
将一个文件添加到另一个文件的末尾
音频长度
淡入淡出
重复音频
再次淡入淡出
直接保存
所有ffmpeg支持的都支持
用标签保存结果(元数据)
实例:
将mp3文件转换成wav文件:
Python音频处理库 pydub
比如采样率为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. 最后进入短时傅里叶变换
是先把一个函数和窗函数进行相乘,然后再进行一维的傅里叶变换。并通过窗函数的滑动得到一系列的傅里叶变换结果,将这些结果竖着排开得到一个二维的表象。
我用wpf画过wav的频谱图和语谱图,这里有个参考http://www.codeproject.com/Articles/488655/Visualizing-Sound波形图应该更简单吧 计算声音强度就好了 至于mp3我想应该先解码成pcm