你有没有经常好奇一些音乐软件的频谱特效是怎么做的,为什么做的这么好看?有没有想试试自己提取音乐频谱并可视化展现出来?今天,咱就结合上次的音乐剪辑操作:

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 简单可视化音乐 — 提取频谱法相关推荐

  1. python简单可视化聊天界面_如何用Python制作可视化输入界面

    继续研究Python的应用,我们在有些程序中需要输入一些参数,可由几种方式实现 1.直接写在程序里,适合编程使用 2.使用input()函数,运行程序时输入 3.做成可视化界面,然后让程序获得 今天主 ...

  2. Python简单的音乐播放器1

    import pygame import timemusicList = [r"E:\KuGou\gequ\周杰伦 - 牛仔很忙.mp3",r"E:\KuGou\gequ ...

  3. python简单可视化聊天界面_Python可视化界面

    可视化界面程序,本来不想写,只在console台运行就好,但是后来很多小伙伴都有这样的需求: 需要从redis中删除某个key的value,然后需要跟key去查,有些小伙伴不会用redis,就产生如下 ...

  4. python爬虫可视化音乐_Python爬虫+可视化实例:网易云音乐歌单

    / 01 / 网页分析 01 歌单索引页 image 选取华语热门歌单页面. 获取歌单播放量,名称,及作者,还有歌单详情页链接. 本次一共获取了1302张华语歌单. 02 歌单详情页 image 获取 ...

  5. 鲸鱼算法与Python简单可视化测试(1)

    文章目录 1. 鲸鱼算法原理 2. 鲸鱼算法的python实现 2.1 问题描述 2.2 初始化 2.3 可视化 3. 可视化结果 参考文献 1. 鲸鱼算法原理 鲸鱼算法是一种根据鲸鱼围捕猎物行为抽象 ...

  6. python怎么放音乐_如何用Python创建音乐可视化器

    本文将演示如何使用Python创建音乐可视化器. 如何可视化音乐? 我们首先需要知道音乐是如何组成的,以及如何将它可视化.音乐是声音的组合.声音是我们耳朵检测到的振动.振动由频率和振幅(速度和响度)定 ...

  7. 用python爬取基金网信息数据,保存到表格,并做成四种简单可视化。(爬虫之路,永无止境!)

    用python爬取基金网信息数据,保存到表格,并做成四种简单可视化.(爬虫之路,永无止境!) 上次 2021-07-07写的用python爬取腾讯招聘网岗位信息保存到表格,并做成简单可视化. 有的人留 ...

  8. Python网易云音乐爬虫大数据分析可视化系统——大屏数据可视化开发之路

    介绍 现在比较流行的大数据数据可视化都是大屏,有钱的人会使用阿里云全家桶的DataV或者商业化的大屏解决方案,但是在国内还是小公司比较多,本人50年大数据开发经验,精通数据可视化,曾经处理过百万亿级别 ...

  9. Python网络爬虫:爬取腾讯招聘网职位信息 并做成简单可视化图表

    hello,大家好,我是wangzirui32,今天我们来学习如何爬取腾讯招聘网职位信息,并做成简单可视化图表,开始学习吧! 文章目录 1. 网页分析 2. 获取json数据 3. 转换为Excel ...

最新文章

  1. Linux下使用diff和patch制作及打补丁(已经实践可行!)
  2. 卷积神经的这些坑你都踩过吗?
  3. 网站关键词优化的五大侧重点!
  4. VTK:可视化之CloseWindow
  5. 解决SwipeRefreshLayout左右滑动事件冲突的问题
  6. 请给出计算231-1的python表达式_【填空题】计算2 32 -1的Python表达式可以书写为____...
  7. C语言控制台应用程序绘制曲线,C语言控制台绘制曲线的实现代码
  8. nexttick使用场景_使用Jest实现Vue自动化测试
  9. 1201-统计数字问题
  10. 苹果M1芯片:如何开启一个时代
  11. python2.7输出语句,输入和输出 - 廖雪峰 Python 2.7 中文教程
  12. bootstrap 检验 法 原理_Bootstrap教程-用SPSS中的Process插件做中介效应分析
  13. 用yum下载安装gcc
  14. vuecli添加和移除插件_『Clickteam Fusion插件开发基础』
  15. javaweb学习笔记(XML基础)
  16. 循环日程表递归法c语言,分治与递归——循环赛日程表
  17. 60w风扇用多大电容_家里的40W电风扇怎么接电容?该用多大电容?怎么判断好坏?...
  18. openGL学习之旅(一)DEV-C++安装GLUT
  19. 哪些人适合学大数据分析
  20. Frames : 一个特殊的窗口类型

热门文章

  1. 学习数据结构的第三天
  2. Linux最小根文件系统
  3. 【多校训练】2021HDU多校6
  4. 兴趣部落怎么显示无法连接服务器,QQ突然关停这项功能,网友:爷青结
  5. js scroll动画
  6. python 单链表添加节点_黄哥Python:单链表的尾部插入方法
  7. 本科毕业设计-软件工程-汽车销售客户关系管理系统
  8. 不通过鲁大师进行硬件检测
  9. C++-[override]关键字使用详解
  10. Python代码读取Excel(.xlsx)文件并保存JSON文件