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秒至ijend秒间的片段song = song[begin*SECOND: end*SECOND]# 存储为临时文件做备份temp_path = 'backup/'+filepathsong.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秒之间的频谱:
# 公众号:Python 实用宝典
n0 = 9000
n1 = 10000
music = np.array([mic for mic in music if mic > 0])
plt.figure(figsize=(14, 5))
pit.plot(music[n0:n1])
plt.grid()
#显示图
plt.show()
这样好看许多,不过如果要达成QQ音乐那种效果,还是需要进行大量改造。
比如用精美的图像元素来填充替代、然后零值如何处理?如何让频谱更加平稳?此外,我们是静态的图像,还需要根据事件动态地延续波段。
用于生产的代码肯定比我们这简易的代码更加复杂,而且也不应该是暴力去除负值绘制图像。这些有兴趣的读者可以自行研究啦。
如果你喜欢今天的Python 教程,请持续关注Python实用宝典,如果对你有帮助,麻烦在下面点一个赞/在看,有任何问题都可以在下方留言,我们会耐心解答的!
点击下方阅读原文可以获取所有代码和链接哦!
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典
Python 简单可视化音乐 — 提取频谱法相关推荐
- python简单可视化聊天界面_如何用Python制作可视化输入界面
继续研究Python的应用,我们在有些程序中需要输入一些参数,可由几种方式实现 1.直接写在程序里,适合编程使用 2.使用input()函数,运行程序时输入 3.做成可视化界面,然后让程序获得 今天主 ...
- Python简单的音乐播放器1
import pygame import timemusicList = [r"E:\KuGou\gequ\周杰伦 - 牛仔很忙.mp3",r"E:\KuGou\gequ ...
- python简单可视化聊天界面_Python可视化界面
可视化界面程序,本来不想写,只在console台运行就好,但是后来很多小伙伴都有这样的需求: 需要从redis中删除某个key的value,然后需要跟key去查,有些小伙伴不会用redis,就产生如下 ...
- python爬虫可视化音乐_Python爬虫+可视化实例:网易云音乐歌单
/ 01 / 网页分析 01 歌单索引页 image 选取华语热门歌单页面. 获取歌单播放量,名称,及作者,还有歌单详情页链接. 本次一共获取了1302张华语歌单. 02 歌单详情页 image 获取 ...
- 鲸鱼算法与Python简单可视化测试(1)
文章目录 1. 鲸鱼算法原理 2. 鲸鱼算法的python实现 2.1 问题描述 2.2 初始化 2.3 可视化 3. 可视化结果 参考文献 1. 鲸鱼算法原理 鲸鱼算法是一种根据鲸鱼围捕猎物行为抽象 ...
- python怎么放音乐_如何用Python创建音乐可视化器
本文将演示如何使用Python创建音乐可视化器. 如何可视化音乐? 我们首先需要知道音乐是如何组成的,以及如何将它可视化.音乐是声音的组合.声音是我们耳朵检测到的振动.振动由频率和振幅(速度和响度)定 ...
- 用python爬取基金网信息数据,保存到表格,并做成四种简单可视化。(爬虫之路,永无止境!)
用python爬取基金网信息数据,保存到表格,并做成四种简单可视化.(爬虫之路,永无止境!) 上次 2021-07-07写的用python爬取腾讯招聘网岗位信息保存到表格,并做成简单可视化. 有的人留 ...
- Python网易云音乐爬虫大数据分析可视化系统——大屏数据可视化开发之路
介绍 现在比较流行的大数据数据可视化都是大屏,有钱的人会使用阿里云全家桶的DataV或者商业化的大屏解决方案,但是在国内还是小公司比较多,本人50年大数据开发经验,精通数据可视化,曾经处理过百万亿级别 ...
- Python网络爬虫:爬取腾讯招聘网职位信息 并做成简单可视化图表
hello,大家好,我是wangzirui32,今天我们来学习如何爬取腾讯招聘网职位信息,并做成简单可视化图表,开始学习吧! 文章目录 1. 网页分析 2. 获取json数据 3. 转换为Excel ...
最新文章
- Linux下使用diff和patch制作及打补丁(已经实践可行!)
- 卷积神经的这些坑你都踩过吗?
- 网站关键词优化的五大侧重点!
- VTK:可视化之CloseWindow
- 解决SwipeRefreshLayout左右滑动事件冲突的问题
- 请给出计算231-1的python表达式_【填空题】计算2 32 -1的Python表达式可以书写为____...
- C语言控制台应用程序绘制曲线,C语言控制台绘制曲线的实现代码
- nexttick使用场景_使用Jest实现Vue自动化测试
- 1201-统计数字问题
- 苹果M1芯片:如何开启一个时代
- python2.7输出语句,输入和输出 - 廖雪峰 Python 2.7 中文教程
- bootstrap 检验 法 原理_Bootstrap教程-用SPSS中的Process插件做中介效应分析
- 用yum下载安装gcc
- vuecli添加和移除插件_『Clickteam Fusion插件开发基础』
- javaweb学习笔记(XML基础)
- 循环日程表递归法c语言,分治与递归——循环赛日程表
- 60w风扇用多大电容_家里的40W电风扇怎么接电容?该用多大电容?怎么判断好坏?...
- openGL学习之旅(一)DEV-C++安装GLUT
- 哪些人适合学大数据分析
- Frames : 一个特殊的窗口类型