wxpython绘制音频效果


Posted in Python onNovember 18, 2019

本文实例为大家分享了wxpython绘制音频的具体代码,供大家参考,具体内容如下

#-*- coding: utf-8 -*-
 
################################################################################
## 使用wxPython的绘图模块wxPyPlot,需要数据可视化的时候,无需再借用其他的库或模块了
################################################################################
import numpy as np
import wx
import wx.lib.plot as wxPyPlot # 导入绘图模块,并命名为wxPyPlot
import wave
import pylab as pl
# 需要把数据封装进入MyDataObject中
def MyDataObject():
 # 50 个点的sin函数,用蓝色圆点表示
 data1 = 2.*np.pi*np.arange(100)/100.
 data1.shape = (50, 2)
 data1[:, 1] = np.sin(data1[:, 0])
 print ("debug:", data1.shape)
 markers = wxPyPlot.PolyMarker(data1, legend='Green Markers', colour='blue', marker='circle', size=1)
 # 50个点的cos函数,用红色表示
 data2 = 2.*np.pi*np.arange(100)/100.
 data2.shape = (50, 2)
 print ("debug: data2", len(data2))
 data2[:, 1] = np.cos(data2[:, 0])
 lines = wxPyPlot.PolySpline(data2, legend='Red Line', colour='red')
 GraphTitle = "Plot Data(Sin and Cos)"
 
 return wxPyPlot.PlotGraphics([markers, lines], GraphTitle, "X Axis", "Y Axis")
# 解析wav数据
def MyWavData(wav_filename=""):
 print('working')
 # 打开wav文档
 file = wave.open("mic4.wav", "r")
 # 读取格式信息
 # (nchannels, sampwidth,framerate, nframes, comptype, compname)
 params = file.getparams()
 nchannels, sampwidth, framerate, nframes = params[:4]
 print (nchannels, sampwidth, framerate, nframes)
 # 读取波形数据
 str_data = file.readframes(nframes)
 # 文件使用完毕,关闭文件
 file.close()
 # 将波形数据装换成数组
 wave_data = np.fromstring(str_data, dtype=np.short)
 wave_data.shape = (-1, 2)
 wave_data = wave_data.T # 矩阵转置
 time = np.arange(0, nframes) * (1.0 / framerate)
 # print ("debug: time:", len(time))
 # print ("debug: wave_data:", len(wave_data[0][0:len(time)]))
 # print ("debug: time:", time)
 # print ("debug: wave:", wave_data)
 time_and_wav = np.asarray([time, wave_data[0][0:len(time)]]).T
 print ("debug: len of time and wav: ", len(time_and_wav))
 print ("debug: time and wav: ", time_and_wav.shape)
 lines = wxPyPlot.PolySpline(time_and_wav, legend='Blue Line', colour='blue')
 GraphTitle = "the freq of wav file"
 return wxPyPlot.PlotGraphics([lines, ], GraphTitle, "time/s", "fre/Hz")
class TestFrame1(wx.Frame):
 def __init__(self, parent=None, id=wx.ID_ANY, title="Using wxPyPlot"):
  wx.Frame.__init__(self, parent, id, title, size=(800, 600))
  # 创建菜单栏
  self.mainmenu = wx.MenuBar()
  # 创建菜单
  menu = wx.Menu()
  menu.Append(100, 'Draw1', 'Draw plots1')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw1, id=100)
  menu.Append(200, 'Draw_wav', 'Draw wav')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw_wav, id=200)
  # 添加菜单到菜单栏
  self.mainmenu.Append(menu, '&Plot')
  # 设置菜单Bar
  self.SetMenuBar(self.mainmenu)
  # 创建状态栏,显示信息
  self.CreateStatusBar(2)
  self.pc = wxPyPlot.PlotCanvas(self) # 此处导入绘图面板
 
 def OnPlotDraw1(self, event):    # 绘图函数
  self.pc.Draw(MyDataObject())
 def OnPlotDraw_wav(self, event):
  self.pc.Draw(MyWavData())
def main():
 app = wx.App()
 # MyWavData()
 tf = TestFrame1()
 tf.Show()
 app.MainLoop()
# 测试wxPyPlot的代码
if __name__ == '__main__':
 main()

wxpython绘制音频效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用range函数计算一组数和的方法
May 07 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
python:print格式化输出到文件的实例
May 14 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 Python
django项目中新增app的2种实现方法
Apr 01 Python
为什么说python适合写爬虫
Jun 11 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 Python
python导入不同目录下的自定义模块过程解析
Nov 18 #Python
解决django model修改添加字段报错的问题
Nov 18 #Python
python sorted方法和列表使用解析
Nov 18 #Python
在Django中实现添加user到group并查看
Nov 18 #Python
Django继承自带user表并重写的例子
Nov 18 #Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 #Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 #Python
You might like
世界收音机发展史
2021/03/01 无线电
建立动态的WML站点(一)
2006/10/09 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
JavaScript继承与聚合实例详解
2019/01/22 Javascript
Python获取脚本所在目录的正确方法
2014/04/15 Python
在Python中使用正则表达式的方法
2015/08/13 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
Python3中详解fabfile的编写
2018/06/24 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
python 动态绘制爱心的示例
2020/09/27 Python
详解python算法常用技巧与内置库
2020/10/17 Python
比利时家具购买网站:Home24
2019/01/03 全球购物
大学生职业生涯规划书前言
2014/01/09 职场文书
本科毕业生自荐信
2014/05/26 职场文书
节约用电通知
2015/04/25 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
详解JAVA的控制语句
2021/11/11 Java/Android
python中 .npy文件的读写操作实例
2022/04/14 Python