Python 提取音乐频谱并可视化
你有没有经常好奇一些音乐软件的频谱特效是怎么做的,为什么做的这么好看?有没有想试试自己提取音乐频谱并可视化展现出来?今天,咱就结合上次的音乐剪辑操作:
Python 剪辑音乐就是这么简单
来可视化下面这首歌曲的频谱!
1.准备工作
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。
当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。
输入以下命令安装本文所需要的依赖模块:
pip install pydub
pip install librosa
看到 Successfully installed xxx 则说明安装成功。
2.频谱展示
使用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[begin*SECOND: end*SECOND]# 存储为临时文件做备份temp_path = 'backup/'+filepathsong.export(temp_path)return temp_pathmusic, 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秒之间的频谱:
放大
n0 = 9000
n1 = 10000
music = np.array([mic for mic in music if mic > 0])
plt.figure(figsize=(14, 5))
plt.plot(music[n0:n1])
plt.grid()
显示图
plt.show()
这样好看许多,不过如果要达成QQ音乐那种效果,还是需要进行大量改造。
比如用精美的图像元素来填充替代、然后零值如何处理?如何让频谱更加平稳?此外,我们是静态的图像,还需要根据事件动态地延续波段。
用于生产的代码肯定比我们这简易的代码更加复杂,而且也不应该是暴力去除负值绘制图像。这些有兴趣的读者可以自行研究啦。
我们的文章到此就结束啦,如果你希望我们今天的Python 实战教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!
Python实用宝典
不只是一个宝典
欢迎关注公众号:Python实用宝典
原文来自Python实用宝典:Python 提取音乐频谱并可视化
Python 提取音乐频谱并可视化相关推荐
- Python 提取音乐频谱并可视化,字节面试官
[]( )频谱展示 使用librosa和matplot,我们可以用10行代码完整地展示整个频谱: import matplotlib.pyplot as plt import librosa.disp ...
- python音频频谱_Python 提取音乐频谱并可视化
你有没有经常好奇一些音乐软件的频谱特效是怎么做的,为什么做的这么好看?有没有想试试自己提取音乐频谱并可视化展现出来?今天,咱就结合上次的音乐剪辑操作: 来可视化下面这首歌曲的频谱: 1.准备工作 开始 ...
- python音乐可视化壁纸_Python 提取音乐频谱并可视化
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:python使用宝典 PS:如有需要Python学习资料的小伙伴可以 ...
- python提取图片频谱_Python提取音乐谱并将其可视化,频谱
你有没有经常好奇一些音乐软件的频谱特效是怎么做的,为什么做的这么好看?有没有想试试自己提取音乐频谱并可视化展现出来?今天,咱就结合上次的音乐剪辑操作: 来可视化下面这首歌曲的频谱! 1.准备工作 开始 ...
- python处理数据可视化_数据整理101:使用Python提取,处理和可视化NBA数据
python处理数据可视化 由Viraj Parekh | 2017年4月6日 (by Viraj Parekh | April 6, 2017) This is a basic tutorial u ...
- Python 超简单3行代码提取音乐高潮部分
有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来看看,怎么样来提取孤芳自赏提取高潮后的部分: 怎么样,是不是迫不 ...
- python怎么实现音乐快进_Python 超简单3行代码提取音乐高潮(附批量提取)
有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来听听效果,孤芳自赏提取高潮后的部分: 怎么样,是不是迫不及待想往 ...
- Python 超简单3行代码提取音乐高潮(附批量提取)!
怎么样,是不是迫不及待想往下读了?不要急,让我们从原理开始慢慢讲起. 1.原理简介 不知道大家有没有这样的体会,大部分时候,歌曲的高潮部分通常是重复次数最多的部分.因此我们可以根据这一个特征,提出我们 ...
- [知识图谱实战篇] 三.Python提取JSON数据、HTML+D3构建基本可视化布局
前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...
最新文章
- js 中读取JSON的方
- 【Java并发编程】20、DelayQueue实现订单的定时取消
- nginx实现前后端分离
- MySQL读取Binlog日志常见的3种错误
- 笔记——数据可视化03(饼图、圆环图、箱线图、棉棒图、误差图、子图)
- 进程锁 读写文件的小例子 C++代码
- python之函数基础
- 从Asp.net实现资源全球化和本地化
- 搜狗双拼输入法--快速入门
- 基于51单片机八音盒电子琴音乐播放器设计(毕设课设)
- 群晖硬盘已损毁 Linux 修复,群晖NAS提示空间损毁修复纪实 | Yeboyzq Blog
- 云服务器几核CPU够用
- 手把手教你部署Docker(手撸官网)
- windows7安装中文语言包及文乱码问题解决方法
- 虚拟机打开时报错Operation inconsistent with current state。
- 傅里叶变换、拉普拉斯变换与z变换对比
- Ubuntu16.04安装ROS Kinetic详细步骤
- 动漫Q版人物头部怎么画?
- 如何提高职场说服力?这本说服力书籍你值得拥有!
- python编写聊天刷屏代码【非程序】
热门文章
- python 爬取亚马逊评论_用Python爬取了三大相亲软件评论区,结果...
- 大搜车mysql面试题_【大搜车面试|面试题】-看准网
- typec扩展坞hdmi没反应_type-c扩展坞是什么?
- qt 侧边栏 Sidebar
- 深度解读BN、LN、WN、CN
- R z-score 方法检测异常值
- 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(6)- 打包发布(PyInstaller3.3.1)
- mysql 空集 赋值_MySQL简单复制问题:’show master status’产生’空集’?
- 小米VR一体机开发及apk文件导入
- 微信服务号开发之jssdk-微信充值、支付见解