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

来可视化下面这首歌曲的频谱!

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/'+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秒之间的频谱:

放大

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

  1. python获取图片名称_python提取图像的名字*.jpg到txt文本的方法

    如下所示: # -*- coding:utf-8 -*- import sys sys.path.append('E:\\Anaconda\\libs') import os #os:操作系统相关的信 ...

  2. python获取图片坐标_python提取照片坐标信息的实例代码

    python提取照片坐标信息的代码如下所示: from PIL import Image from PIL.ExifTags import TAGS import os output="Z: ...

  3. python计算颜色占比_用 Python 对图片主体轮廓进行提取、颜色标记、并计算区域面积...

    Python + Opencv2 实现轮廓提取,轮廓区域面积计算: 对图像处理时,会遇到这样一个场景:找到图像主体轮廓,这是其一,可能为了凸显轮廓,需要用指定的颜色进行标记:轮廓标记完可能任务还没有结 ...

  4. python 二维码_Python提取支付宝和微信支付二维码

    本文首发于我的个人博客,更多 Python 和 django 开发教程,请访问 追梦人物的博客. 支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二 ...

  5. lisp提取长方形坐标_用 Python 对图片主体轮廓进行提取、颜色标记、并计算区域面积...

    Python +  Opencv2  实现轮廓提取,轮廓区域面积计算: 对图像处理时,会遇到这样一个场景:找到图像主体轮廓,这是其一,可能为了凸显轮廓,需要用指定的颜色进行标记:轮廓标记完可能任务还没 ...

  6. 爬虫requests如何提取图片_如何提取图片上的文字(办公技巧)

    是夜,公寓里,一道黑影闪过窗前,对面楼顶传来一声凄厉的猫叫声. 王美丽一个机灵,目中闪过一丝恐惧. 她面前的电脑里,正在播放<午夜凶铃>. 阴森恐怖的配音,让她全身发冷,感觉后脊梁有一股凉 ...

  7. python显示图片列表_python读取图片任意范围区域

    使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用. 下面使用两种方法进行处理: convert 函数 from PIL import Imag ...

  8. python去除图片马赛克_python 检测图片是否有马赛克

    首先是canny边缘检测,将图片的边缘检测出来,参考博客 原理讲的很清晰,给原博主一个赞 边缘检测之后按照正方形检索来判定是否是马赛克内容 原理知晓了之后就很好做了 话说matlab转化为python ...

  9. python调整图片亮度_python 调整图片亮度的示例

    实现效果 实现代码 import matplotlib.pyplot as plt from skimage import io file_name='D:/2020121173119242.png' ...

最新文章

  1. 第十一届山东省大学生程序设计竞赛 L. Construction of 5G Base Stations(概率期望,递推前缀和优化)
  2. Nature:“巨型原子”使芯片同时处理和收发量子信息成为可能
  3. 为什么处理有序数组比无序数组快?
  4. java for 删除 list 中的项
  5. 【Groovy】编译时元编程 ( 编译时方法拦截 | 在 MyASTTransformation#visit 方法中进行方法拦截 )
  6. 转载--让搜索引擎优化(SEO)更有效 CSS+DIV标签命名规范
  7. 【数据结构与算法】之深入解析“地图分析”的求解思路与算法示例
  8. windows安装logstash6.2.3
  9. 找不到合适的创业路该怎么办
  10. byte[]与Image Image与 byte[] 之间的转换
  11. JAVA基础----简答
  12. C++ const修饰指针变量的位置不同代表的意义
  13. MathType安装教程,以及部分功能变灰,重新点亮
  14. 计算机设计大赛材料准备讲解
  15. Bootstrap broker localhost9092 (id -1 rack null) disconnected
  16. kettle的图形工具(Spoon)简单介绍
  17. 宾得的宾干微距镜头DA35mm
  18. libusb ubuntu
  19. 盘点那些有逼格的网站
  20. Java中存取Rtf文件

热门文章

  1. 实验吧——天下武功唯快不破
  2. [atcoder caddi2018]D.Harlequin——博弈论
  3. 常用知识图谱数据集FB15K, YAGO, WN18
  4. repo init 与 repo sync 区别
  5. 基于JAVA高考报考指南网站计算机毕业设计源码+数据库+lw文档+系统+部署
  6. 七个合法学习黑客技术的网站,让你从萌新成为大佬
  7. 九龙证券|动力锂离子电池的能量密度可达多少?
  8. 计算机网络第一章-概叙 思维导图
  9. 坯子库怎么导入插件_SketchUp坯子库管理器 坯子插件库免费版v2019.4.0 - 云骑士一键重装系统...
  10. 安卓CTS官方文档之兼容性测试套件简介