Python绘制语谱图+时域波形
"""Python绘制语谱图"""
"""Python绘制时域波形""" # 导入相应的包
import numpy, wave
import matplotlib.pyplot as plt
import numpy as np
import os filepath = 'G:/实战培训/Python生成语谱图/ReNoise/Prim10/' # 添加路径
filename = os.listdir(filepath) # 得到文件夹下的所有文件名 for i in range(len(filename)):
f = wave.open(filepath + filename[i], 'rb') # 调用wave模块中的open函数,打开语音文件。
params = f.getparams() # 得到语音参数
nchannels, sampwidth, framerate, nframes = params[:4] # nchannels:音频通道数,sampwidth:每个音频样本的字节数,framerate:采样率,nframes:音频采样点数
strData = f.readframes(nframes) # 读取音频,字符串格式
wavaData = np.fromstring(strData, dtype=np.int16) # 得到的数据是字符串,将字符串转为int型
wavaData = wavaData * 1.0/max(abs(wavaData)) # wave幅值归一化
wavaData = np.reshape(wavaData, [nframes, nchannels]).T # .T 表示转置
f.close() #(1)绘制语谱图
plt.figure()
plt.specgram(wavaData[0], Fs=framerate, scale_by_freq=True, sides='default') # 绘制频谱
plt.xlabel('Time(s)')
plt.ylabel('Frequency')
plt.title("Spectrogram_{}".format(i+1))
plt.savefig('G:/实战培训/Python生成语谱图/语谱图/{}.jpg'.format(filename[i][:-4]))
plt.show() #(2)绘制时域波形
time = np.arange(0, nframes) * (1.0 / framerate)
time = np.reshape(time, [nframes, 1]).T
plt.plot(time[0, :nframes], wavaData[0, :nframes], c="b")
plt.xlabel("time(seconds)")
plt.ylabel("amplitude")
plt.title("Original wave")
plt.savefig('G:/实战培训/Python生成语谱图/语谱图/{}_.jpg'.format(filename[i][:-4])) # 保存绘制的图形
plt.show()
Python绘制语谱图+时域波形
绘制图形展示:2019-07-06 11:39:41
![]() |
![]() |
Python绘制语谱图+时域波形的更多相关文章
- python生成语谱图
语音的时域分析和频域分析是语音分析的两种重要方法,但是都存在着局限性.时域分析对语音信号的频率特性没有直观的了解,频域特性中又没有语音信号随时间的变化关系.而语谱图综合了时域和频域的优点,明显的显示出 ...
- Matlab 语谱图(时频图)绘制与分析
Matlab 语谱图(时频图)绘制与分析 语谱图:先将语音信号作傅里叶变换,然后以横轴为时间,纵轴为频率,用颜色表示幅值即可绘制出语谱图.在一幅图中表示信号的频率.幅度随时间的变化,故也称" ...
- 使用python绘制根轨迹图
最近在学自动控制原理,发现根轨迹这一张全是绘图的,然而书上教的全是使用matlab进行计算机辅助绘图.但国内对于使用python进行这种绘图的资料基本没有,后来发现python-control包已经将 ...
- wxpython多线程通信的应用-实现边录音边绘制音谱图
#!bin/bash/python # -*- coding=utf-8 -*- from __future__ import division import threading import wx ...
- 【转】使用Python matplotlib绘制股票走势图
转载出处 一.前言 matplotlib[1]是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图.本人在工作过程中涉及到股票数据的处理如绘制K线等,因此将matplotlib的使 ...
- 用Python 绘制分布(折线)图
用Python 绘制分布(折线)图,使用的是 plot()函数. 一个简单的例子: # encoding=utf-8 import matplotlib.pyplot as plt from pyla ...
- Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?
Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢? 可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的.对于初学者来说,很容易被这官网上 ...
- python数据可视化(一)——绘制随机漫步图
数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧密相关. python有一系列的可视化和分析工具,最流行的工具之一是matplotlib,它是一个数学绘图库. 实现绘制随机漫步图 利用ra ...
- python绘制疫情图
python中进行图表绘制的库主要有两个:matplotlib 和 pyecharts, 相比较而言: matplotlib中提供了BaseMap可以用于地图的绘制,但是个人觉得其绘制的地图不太美观, ...
随机推荐
- oracle备份和升级数据库
同oracle用户登录数据库驻留server.例如,主文件夹/home./oracle.运行以下命令来执行备份操作. sqlplus /nolog connect /as sysdba sql> ...
- 微信小程序知识集锦
1.自定义属性/获取属性值 自定义属性: <view bindtap='shopPost' data-myid='item.goods_id' ></view> 获取属性: s ...
- Rxjava 学习(一)
Rxjava是什么? RxJava是由Netflix开发的响应式扩展(Reactive Extensions)的Java实现.引用MSDN上对它的定义,Reactive Extensions是这样一个 ...
- win32Helper
点击别的winform窗口的按钮 #region 点击别的窗口的按钮 [DllImport("user32.dll", EntryPoint = "FindWindowA ...
- seajs教程(一):基本用法
介绍 SeaJS 是一个适用于 Web 浏览器端的模块加载器.使用 SeaJS,可以更好地组织 JavaScript 代码. Sea.js 遵循 CMD 规范,模块化JS代码.依赖的自动加载.配置的简 ...
- Gralde 同步失败
Gralde 同步失败 尝试了各种方法,至少我觉得常见的一些方法我都尝试了.但一直下载依赖失败 > Could not resolve all files for configuration ' ...
- 【转】python Counter模块
>>> c = Counter() # 创建一个新的空counter >>> c = Counter('abcasdf') # 一个迭代对象生成的counter & ...
- C#跳转语句
1.break 退出直接封闭它的switch.while.do.for或foreach语句. 当有嵌套时,break只退出最里层的语句块. break不能跳出finally语句块. 2.continu ...
- React Native v0.4 发布,用 React 编写移动应用
React Native v0.4 发布,自从 React Native 开源以来,包括超过 12.5k stars,1000 commits,500 issues,380 pull requests ...
- PHP开发框架 Laravel
Laravel 是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富 ...

