1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python读取wav音频文件的音调高低

python读取wav音频文件的音调高低

时间:2018-10-15 08:11:28

相关推荐

python读取wav音频文件的音调高低

'''#显示声音文件的波形 双声道import wave# 导入 wave 模块import matplotlib.pyplot as plt# 用于绘制波形图import numpy as np# 用于计算波形数据import os# 用于系统处理,如读取本地音频文件f = wave.open(r"tkzc.wav",'rb' )params = f.getparams ()nchannels,sampwidth, framerate, nframes = params [:4]#从0~ 4之前的数print(nchannels,sampwidth,framerate,nframes)# 读取波形数据strData = f.readframes(nframes)# 将波形数据转换为数组waveData = np.fromstring(strData,dtype=np.int16)waveData = waveData*1.0/(max(abs(waveData)))time = np.arange(0,nframes)*(1.0 / framerate)#计算音频的时间waveData = np.reshape(waveData,[nframes,nchannels]) f.close()# 绘制波形plt.figure()plt.subplot(5,1,1) plt.plot(time,waveData[:,0]) plt.xlabel("Time(s)") plt.ylabel("Amplitude") plt.title("Ch-1 wavedata") plt.subplot(5,1,3) plt.plot(time,waveData[:,1]) plt.xlabel("Time(s)") plt.ylabel("Amplitude") plt.title("Ch-2 wavedata") plt.show()'''import wave# 导入 wave 模块import matplotlib.pyplot as plt# 用于绘制波形图import numpy as np# 用于计算波形数据import os# 用于系统处理,如读取本地音频文件import pyaudiof = wave.open(r"tkzc.wav",'rb' )params = f.getparams ()nchannels,sampwidth, framerate, nframes = params [:4]#从0~ 4之前的数print(nchannels,sampwidth,framerate,nframes) # 2 2 44100 6767924 声道数, 量化位数(byte单位), 采样频率, 采样点数p = pyaudio.PyAudio()stream = p.open(format=p.get_format_from_width(f.getsampwidth()),channels=f.getnchannels(),rate=f.getframerate(),output=True)j = 0 #播放的秒数#f.rewind() #指针回到开头# 读取波形数据strData = f.readframes(framerate)#print(strData)while strData != b'':sum = 0# 将波形数据转换为数组waveData = np.fromstring(strData,dtype=np.int16)#print(len(waveData)) # 长度 88200 for i in waveData:sum = sum + abs(waveData[i])print(sum/len(waveData)) print(j)# waveData 数据 这是一秒钟的数据 采样频率 44100 两个声道 长度 88200 44100 * 2 两个声道的数据 # [ -14 -11 -15 ... -19566 -1780] # 长度 88200 44100 * 2 两个声道的数据 # 可以将这个列表的所有数据相加 负的先转化为正的 然后除以 88200 获得的数据越大 说明此处的音量越大stream.write(strData) # 播放strData = f.readframes(framerate) #读取下一帧j=j+1 # 时间加1秒stream.stop_stream()stream.close()p.terminate()f.close()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。