zoukankan      html  css  js  c++  java
  • Python绘制wav文件音频图(静态)[matplotlib/wave]

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    """
    绘制波形图
    
    plottingWaveform.py
    """
    
    import wave
    import pylab as pl
    import numpy as np
    
    print('working')
    
    # 打开wav文档
    file = wave.open(r"mic4.wav", "rb")
    
    # 读取格式信息
    # (nchannels, sampwidth,framerate, nframes, comptype, compname)
    params = file.getparams()
    nchannels,sampwidth,framerate,nframes = params[:4]
    
    # 读取波形数据
    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 ("time:", len(time))
    print ("wave_data:", len(wave_data[0][0:len(time)]))
    # 绘制波形
    """
    subplot(mnp) / (m,n,p)是将多个图画到一个平面上的工具.
    其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,
    如果m=2就是表示2行图.p表示图所在的位置,p=1表示从左到右从上到下的第一个位置.
    """
    pl.subplot(2, 1, 1)  # 这里也可以使用pl.subplot(211)
    pl.plot(time, wave_data[0][0:len(time)])
    pl.subplot(2, 1, 2)  # 这里也可以使用pl.subplot(212)
    
    pl.plot(time, wave_data[1][0:len(time)], c="g")
    pl.xlabel("time (seconds)")
    pl.show()

  • 相关阅读:
    C# 读写Excel(NPOI库)
    sql server存储过程回滚事务
    sql server的循环语句
    NopCommerce的autofac的理解
    Django——django连接mysql
    bootstrap
    常用模块杂碎小知识
    常识小知识——(1)
    Django——用户注册并展示出注册信息表案例
    Django——orm概述及在django中使用
  • 原文地址:https://www.cnblogs.com/douzujun/p/10699129.html
Copyright © 2011-2022 走看看