读取wav文件绘制波形图

# -*- coding: utf-8 -*-
import wave
import pylab as pl
import numpy as np
from pyaudio import PyAudio,paInt16

def record(filename):
#define of params
NUM_SAMPLES = 2000
framerate = 16000
channels = 1
sampwidth = 2
#record time
TIME = 10
def save_wave_file(filename, data):
‘‘‘save the date to the wav file‘‘‘
wf = wave.open(filename, ‘wb‘)
wf.setnchannels(channels)
wf.setsampwidth(sampwidth)
wf.setframerate(framerate)
wf.writeframes("".join(data))
wf.close()

def record_wave():
#open the input of wave
pa = PyAudio()
stream = pa.open(format = paInt16, channels = 1,rate = framerate, input = True,frames_per_buffer = NUM_SAMPLES)
save_buffer = []
count = 0
while count < TIME*4:
#read NUM_SAMPLES sampling data
string_audio_data = stream.read(NUM_SAMPLES)
save_buffer.append(string_audio_data)
count += 1
print ‘.‘,
print ‘‘
#filename = datetime.now().strftime("%Y-%m-%d_%H_%M_%S")+".wav"
save_wave_file(filename, save_buffer)
#save_buffer = []
#print filename, "saved"

record_wave()

def readwav(filename):
# 打开WAV文档
f = wave.open(filename, "rb")

# 读取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
#print params
nchannels, sampwidth, framerate, nframes = params[:4]

# 读取波形数据
str_data = f.readframes(nframes)
f.close()

#将波形数据转换为数组
wave_data = np.fromstring(str_data, dtype=np.short)
#将数组转换为m行n列的数组,-1为自动计算长度
wave_data.shape = -1, nchannels
#print len(wave_data)
#矩阵倒置
wave_data = wave_data.T
#帧数×频率的倒数
time = np.arange(0, nframes) * (1.0 / framerate)

# 绘制波形
pl.subplot(211)
pl.plot(time, wave_data[0])
#第二声道
#pl.subplot(212)
#pl.plot(time, wave_data[1], c="g")
pl.xlabel("time (seconds)")
pl.show()

record("rectest.wav")
readwav("rectest.wav")
时间: 2024-10-21 10:13:06

读取wav文件绘制波形图的相关文章

FreeSWITCH无法读取wav文件

错误日志如下: 1 9003 2016-10-06 13:18:27.223464 [ERR] switch_core_file.c:260 Invalid file format [wav] for [/usr/local/freeswitch/sounds/music/8000/suite-espanola-op-47-leyenda.wav]! 2 9004 2016-10-06 13:18:27.223464 [ERR] mod_local_stream.c:354 Can't open

C# 读取WAV文件(详细)

class WAVReader { #region RIFF WAVE Chunk private string Id; //文件标识 private double Size; //文件大小 private string Type; //文件类型 #endregion #region Format Chunk private string formatId; private double formatSize; //数值为16或18,18则最后又附加信息 private int formatTa

python读取wav文件并播放[pyaudio/wave]

#!/usr/bin/python # encoding:utf-8 import pyaudio import wave CHUNK = 1024 # 从目录中读取语音 wf = wave.open('mic4.wav', 'rb') # read data data = wf.readframes(CHUNK) # 创建播放器 p = pyaudio.PyAudio() # 获得语音文件的各个参数 FORMAT = p.get_format_from_width(wf.getsampwidt

C#读取wav文件

1 private void showWAVForm(string filepath) 2 { 3 FileStream fs = new FileStream(filepath,FileMode.Open); 4 fs.Read(new byte[42],0,42); 5 byte[] datasize = new byte[4]; 6 fs.Read(datasize,0,4); 7 int dtsize = hex2Int(datasize); //数据块部分数据的字节数 8 for (i

Python解析Wav文件并绘制波形的方法

资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在繁忙的生活中,我们经常会听些歌来放松一下自己,我们经常会从各种播放软件中听自己喜欢的歌,并且往往我们会下载一部分歌曲,而现在音频的种类也相当繁多,像是Wav,Mp3,FLAC,AAC等等很多格式,最近由于需要做一个能够分析Wav格式音频的波形来取得一些数据比如获取人录音时是否说完等等用途.本周先对解

wav 文件解析

WAVE文件格式说明表: 偏移地址 字节数 数据类型 内   容 文件头 00H 4 char "RIFF"标志 04H 4 long int 文件长度 08H 4 char "WAVE"标志 0CH 4 char "fmt"标志 10H 4 过渡字节(不定) 14H 2 int 格式类别(10H为PCM形式的声音数据) 16H 2 int 通道数,单声道为1,双声道为2 18H 4 int 采样率(每秒样本数),表示每个通道的播放速度, 1CH

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") # 读取格式信息 # (

细说Unity3D(一)——移动平台动态读取外部文件全解析

前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑和手指了.那么今天开始,小匹夫会记录一些平时工作中遇到的坑,以及小匹夫的应对方法,欢迎各位拍砖讨论.那么今天主要讨论一下Unity3D在移动端如何动态的读取外部文件,比如csv(txt),xml一类的文件.主要涉及的问题,就是PC端上本来测试的好好的东西,到了移动端就不能用了,所以要讨论一下PC端和

[计算机图形学] OpenGL读取obj文件并显示其3D效果

? 读取三维网格模型(Wavefront OBJ文件) 无法向立方体:cube.obj 有法向兔子模型:bunny.obj 有法向有纹理八字模型:Eight.obj OBJ文件的格式可参考:http://www.cnblogs.com/youthlion/archive/2013/01/21/2870451.html ? 利用OpenGL显示该模型的绘制效果(全部) 顶点显示 线条显示 面片显示 ? 核心代码说说 1.下面的点.纹理.法向量.面用于构成一个PIC的类,PIC用于存储从OBJ文件中