Python 提取音乐频谱并可视化,字节面试官
[](
)频谱展示
使用 librosa 和 matplot,我们可以用 10 行代码完整地展示整个频谱:
import matplotlib.pyplot as plt
import librosa.display
音乐文件载入
audio_path = 'Fenn.mp3'
music, sr = librosa.load(audio_path)
宽高比为 14:5 的图
plt.figure(figsize=(14, 5))
librosa.display.waveplot(music, sr=sr)
显示图
plt.show()
不过,这样的频谱是整段音乐的,看起来非常难看,接下来我们使用 pydub 切割频谱,以获得更佳的效果。我们细分到 0 到 1 秒的区段来查看频谱:
import matplotlib.pyplot as plt
import librosa.display
import numpy as np
from pydub import AudioSegment
1 秒=1000 毫秒
SECOND = 1000
音乐文件
AUDIO_PATH = 'Fenn.mp3'
def split_music(begin, end, filepath):
导入音乐
song = AudioSegment.from_mp3(filepath)
取 begin 秒到 end 秒间的片段
song = song[beginSECOND: endSECOND]
存储为临时文件做备份
temp_path = 'backup/'+filepath
song.export(temp_path)
return temp_path
music, sr = librosa.load(split_music(0, 1, AUDIO_PATH))
宽高比为 14:5 的图
plt.figure(figsize=(14, 5))
librosa.display.waveplot(music, sr=sr)
plt.show()
这下细是细了,但是还是太复杂了,其实我们做频谱的展示,只需要正值即可:
然后我们还可以进一步放大,比如说 0.9 秒到 1 秒之间的频谱:
放大
(1)Python 所有方向的学习路线(新版)
这是
我花了几天的时间去把 Python 所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python 学习视频
包含了 Python 入门、爬虫、数据分析和 web 开发的学习视频,总共 100 多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100 多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
评论