1.绘制语谱图

为方便使用,现将同学唐维康的代码做出如下修正,封装成类,可以灵活调用

@作者:kingback@文件名称:MySpec.py@IDE:PyCharm@文件创建时间:2021-04-24 22:00:08@月份:4月import librosa
import numpy as np
import matplotlib.pyplot as pltclass MySpec(object):def __init__(self,filename,wlen,inc):#参数预定义self.filename=filenameself.wlen=wlenself.inc=incself.nfft=self.wlenself.win=self.hanning_window(self.wlen)# 计算每帧对应的时间def FrameTimeC(self,frameNum, frameLen, inc, fs):ll = np.array([i for i in range(frameNum)])return ((ll - 1) * inc + frameLen / 2) / fs# 分帧函数def enframe(self,x, win, inc=None):nx = len(x)if isinstance(win, list) or isinstance(win, np.ndarray):nwin = len(win)nlen = nwin  # 帧长=窗长elif isinstance(win, int):nwin = 1nlen = win  # 设置为帧长if inc is None:inc = nlennf = (nx - nlen + inc) // incframeout = np.zeros((nf, nlen))indf = np.multiply(inc, np.array([i for i in range(nf)]))for i in range(nf):frameout[i, :] = x[indf[i]:indf[i] + nlen]if isinstance(win, list) or isinstance(win, np.ndarray):frameout = np.multiply(frameout, np.array(win))return frameout# 加窗def hanning_window(self,N):nn = [i for i in range(N)]return 0.5 * (1 - np.cos(np.multiply(nn, 2 * np.pi) / (N - 1)))# 短时傅里叶变换def STFFT(self,x, win, nfft, inc):xn = self.enframe(x, win, inc)xn = xn.Ty = np.fft.fft(xn, nfft, axis=0)return y[:nfft // 2, :]#自己画语谱图的主函数def demain(self):data,fs=librosa.load(self.filename,sr=None,mono=False)      # sr=None声音保持原采样频率, mono=False声音保持原通道数y = self.STFFT(data, self.win, self.nfft, self.inc)FrequencyScale = [i * fs / self.wlen for i in range(self.wlen // 2)]  # 频率刻度frameTime = self.FrameTimeC(y.shape[1], self.wlen, self.inc, fs)  # 每帧对应的时间LogarithmicSpectrogramData = 10 * np.log10((np.abs(y) * np.abs(y)))  # 取对数后的数据plt.pcolormesh(frameTime, FrequencyScale, LogarithmicSpectrogramData)plt.colorbar()# plt.savefig('语谱图22.png')plt.show()

2.调用方式

from MySpec import MySpec......其他代码省略filename="I:/王延凯新建LibriVox数据集(3s)/english/english.2br02b_1_vonnegut_64kb_0.wav"
wlen=512
inc=256mySpec=MySpec(filename,wlen,inc)
mySpec.demain()

python绘制语谱图(不掉包实现)相关推荐

  1. python绘制语谱图(详细注释)

    用python 绘制语谱图 1.步骤: 1)导入相关模块 2)读入音频并获取音频参数  3)将音频转化为可处理形式(注意读入的是字符串格式,需要转换成int或short型) 代码如下: import ...

  2. python绘制语谱图(手动实现)

    1 原理分析 在获取语谱图数据之前,我们需要先了解短时傅里叶变换.语音信号是典型的非平稳信号,但是由于其非平稳性由发声器官的物理运动过程而产生,这种过程是相对变换缓慢的,在10~30ms以内可以认为是 ...

  3. python画图标题为蓝色_python绘制语谱图怎么设置成黄蓝色

    展开全部 语音的时域分析和频32313133353236313431303231363533e59b9ee7ad9431333431333937域分析是语音分析的两种重要方法,但是都存在着局限性.时域 ...

  4. python绘制梅尔谱图_Python入门到底有多简单(三):填充数据

    目录 1.加载包和数据读取2.数据填充2.1 用数值或字符串填充2.2 用字典填充2.3 method参数填充2.3.1 用前面的值填充2.3.2 用后面的值填充2.3.3 limit限制填充的个数2 ...

  5. python绘制梅尔谱图_3D星空图V2版——添加背景图片和音乐

    阿黎逸阳   精选Python.SQL.R.MATLAB等相关知识,让你的学习和工作更出彩(可提供风控建模干货经验). 还记得之前发表的3D星空图吗?一直想给喜欢的星空图加上背景图片和音乐. 经过研究 ...

  6. python将批量音频信号(wav)转化为语谱图并保存(jpg/png)

    python将批量音频信号(wav)转化为语谱图并保存(jpg/png) 1. 导入需要的函数库 import numpy as np import wave import matplotlib.py ...

  7. 不调包绘制音频语谱图并批量生成语谱图

    什么是语谱图 语谱图(Spectrogam)是表示语音频谱随时间变化的图形,其实是一个二维的图像,但却能表示三个维度的信息,横坐标表示时间,纵坐标表示频率,颜色的深浅来映射能量的大小.任一给定频率成分 ...

  8. python实现绘制信号序列语谱图

    python实现绘制信号序列语谱图 功能:绘制信号序列语谱图 代码: import numpy as np # 导入音频及绘图显示包 import librosa.display # 导入绘图工作的函 ...

  9. python实现时频谱,语谱图,mel语谱倒谱等

    python实现时频谱,语谱图,mel语谱倒谱等 可以和理论相结合学习:https://blog.csdn.net/qq_36002089/article/details/108378796 语音信号 ...

  10. MATLAB实现实时录音,语音采集与读写用matlab实现录音以及语谱图的绘制.pdf

    <语音信号处理>仿真作业 院 系 电气与电子工程学院 专业班级 姓 名 学 号 指导教师 2020 年 3 月 作业题目:语音采集与读写 一.目的 (1)了解matlab 采集语音信号的原 ...

最新文章

  1. 一种电磁铁磁场分析测量
  2. 200米外遥测心跳确定身份,五角大楼全新黑科技,比人脸识别更准、伪装也没用...
  3. html5+原生js画的瀑布,果然程序员不适合做设计吗?
  4. 用了那么多年MySQL不知道Explain?怪不得性能那么差!
  5. PYTHON 数据分析常用类库
  6. python matplotlib.pyplot() plt() 如何限制坐标的上下限?plt.xlim() plt.ylim()
  7. java面向对象的特征 —(13)
  8. 在c语言中load,一道题理清Objective-C中的load和initialize
  9. apache shiro_Apache Shiro:简化应用程序安全性
  10. 中邮智递通过数加和datav将系统和服务迁移到大数据平台
  11. jbpm视频教程全集下载【21讲完整】
  12. Java多线程机制(一)
  13. unity 打包减小包体大小
  14. 什么是CRM客户管理系统?
  15. 新知实验室 TUIKaraoke在线 K 歌
  16. 在ros中使用glog
  17. SpringBoot2基础篇
  18. 用安卓手机给电脑当摄像头[DroidCam]
  19. Win10笔记本电脑硬盘如何分区
  20. 数据赋能:Uber的数据治理实践分享

热门文章

  1. 项目Beta冲刺(2/7)(追光的人)(2019.5.24)
  2. GO中时间转换到毫秒
  3. arduino入门-用arduino uno制作基于蓝牙的数据监控系统
  4. 构造者模式与Lombok的邂逅
  5. html+css+支付宝页面,HTML+CSS+JS简单实现支付宝付款界面效果
  6. 上载人生(数字天堂)
  7. android 记事本上功能,安卓手机上有多功能记事本app吗?
  8. robotframework 图片校验
  9. 攻防世界misc 如来十三掌
  10. SOtime -- JS的时间戳与日期转换操作