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

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

  1. Python 提取音乐频谱并可视化,字节面试官

    []( )频谱展示 使用librosa和matplot,我们可以用10行代码完整地展示整个频谱: import matplotlib.pyplot as plt import librosa.disp ...

  2. python音频频谱_Python 提取音乐频谱并可视化

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

  3. python音乐可视化壁纸_Python 提取音乐频谱并可视化

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:python使用宝典 PS:如有需要Python学习资料的小伙伴可以 ...

  4. python提取图片频谱_Python提取音乐谱并将其可视化,频谱

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

  5. python处理数据可视化_数据整理101:使用Python提取,处理和可视化NBA数据

    python处理数据可视化 由Viraj Parekh | 2017年4月6日 (by Viraj Parekh | April 6, 2017) This is a basic tutorial u ...

  6. Python 超简单3行代码提取音乐高潮部分

    有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来看看,怎么样来提取孤芳自赏提取高潮后的部分: 怎么样,是不是迫不 ...

  7. python怎么实现音乐快进_Python 超简单3行代码提取音乐高潮(附批量提取)

    有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来听听效果,孤芳自赏提取高潮后的部分: 怎么样,是不是迫不及待想往 ...

  8. Python 超简单3行代码提取音乐高潮(附批量提取)!

    怎么样,是不是迫不及待想往下读了?不要急,让我们从原理开始慢慢讲起. 1.原理简介 不知道大家有没有这样的体会,大部分时候,歌曲的高潮部分通常是重复次数最多的部分.因此我们可以根据这一个特征,提出我们 ...

  9. [知识图谱实战篇] 三.Python提取JSON数据、HTML+D3构建基本可视化布局

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

最新文章

  1. js 中读取JSON的方
  2. 【Java并发编程】20、DelayQueue实现订单的定时取消
  3. nginx实现前后端分离
  4. MySQL读取Binlog日志常见的3种错误
  5. 笔记——数据可视化03(饼图、圆环图、箱线图、棉棒图、误差图、子图)
  6. 进程锁 读写文件的小例子 C++代码
  7. python之函数基础
  8. 从Asp.net实现资源全球化和本地化
  9. 搜狗双拼输入法--快速入门
  10. 基于51单片机八音盒电子琴音乐播放器设计(毕设课设)
  11. 群晖硬盘已损毁 Linux 修复,群晖NAS提示空间损毁修复纪实 | Yeboyzq Blog
  12. 云服务器几核CPU够用
  13. 手把手教你部署Docker(手撸官网)
  14. windows7安装中文语言包及文乱码问题解决方法
  15. 虚拟机打开时报错Operation inconsistent with current state。
  16. 傅里叶变换、拉普拉斯变换与z变换对比
  17. Ubuntu16.04安装ROS Kinetic详细步骤
  18. 动漫Q版人物头部怎么画?
  19. 如何提高职场说服力?这本说服力书籍你值得拥有!
  20. python编写聊天刷屏代码【非程序】

热门文章

  1. python 爬取亚马逊评论_用Python爬取了三大相亲软件评论区,结果...
  2. 大搜车mysql面试题_【大搜车面试|面试题】-看准网
  3. typec扩展坞hdmi没反应_type-c扩展坞是什么?
  4. qt 侧边栏 Sidebar
  5. 深度解读BN、LN、WN、CN
  6. R z-score 方法检测异常值
  7. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(6)- 打包发布(PyInstaller3.3.1)
  8. mysql 空集 赋值_MySQL简单复制问题:’show master status’产生’空集’?
  9. 小米VR一体机开发及apk文件导入
  10. 微信服务号开发之jssdk-微信充值、支付见解