导航:首页 > 编程语言 > python处理wav

python处理wav

发布时间:2024-12-28 09:17:07

❶ 谁知道如何在python中用处理wav文件,并且对他的频谱进行分析的程序

1.读取wav文件
# -*- coding: utf-8 -*-
import wave
import pylab as pl
import numpy as np
# 打开WAV文档
f = wave.open(r"c:\WINDOWS\Media\ding.wav", "rb")
# 读取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
# 读取波形数据
str_data = f.readframes(nframes)
f.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)
# 绘制波形
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()

2.观察信号频谱

# -*- coding: utf-8 -*-
import numpy as np
import pylab as pl
sampling_rate = 8000
fft_size = 512
t = np.arange(0, 1.0, 1.0/sampling_rate)
x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)
xs = x[:fft_size]
xf = np.fft.rfft(xs)/fft_size
freqs = np.linspace(0, sampling_rate/2, fft_size/2+1)
xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100))
pl.figure(figsize=(8,4))
pl.subplot(211)
pl.plot(t[:fft_size], xs)
pl.xlabel(u"时间(秒)")
pl.title(u"156.25Hz和234.375Hz的波形和频谱")
pl.subplot(212)
pl.plot(freqs, xfp)
pl.xlabel(u"频率(Hz)")
pl.subplots_adjust(hspace=0.4)
pl.show()

❷ Python音频处理方法

在Windows系统下,Python提供了wave和pyaudio两个模块,它们分别处理音频文件的操作。首先,wave模块主要用于音频文件的读写,而pyaudio则负责音频的实际处理,如录音和播放。

录音部分,我们需要设定参数如采样率、通道数和位宽。首先,我们编写一个将录制好的wave音频保存到文件的函数,使用wave包。接着,核心录音过程会通过pyaudio,它会在内存中创建音频输入流,持续从录音设备读取声音,录音结束后,将数据写入硬盘。

播放音频时,与录音过程相反,我们从文件读取数据到内存,然后用pyaudio输出到音响设备。通过设置固定大小的chunk进行缓冲,最后记得关闭文件输入流和音频输出流以释放资源。

下面是一些示例代码片段:

import wave, pyaudio

framerate = 16000
NUM_SAMPLES = 2000
channels = 1
sampwidth = 2
TIME = 10

def save_wave_file(filename, data):

wf = wave.open(filename, 'wb')
...
wf.close()

def my_record():

pa = PyAudio()
stream = pa.open(format=paInt16, channels=1, rate=framerate, input=True, frames_per_buffer=NUM_SAMPLES)

...
save_wave_file('01.wav', my_buf)
stream.close()

def play():

wf = wave.open(r"01.wav", 'rb')
...
stream.close()
p.terminate()

if __name__ == '__main__': my_record()
print('Over!') play()

这个示例展示了如何使用这两个模块实现音频的录制和播放功能。在实际应用中,你可以根据需要调整参数和函数内容。

❸ Python播放wav音频,在Windows系统下

手头正好一个脚本,在Windows下执行没有问题。供参考:


importwinsound,time,sys
mp3='qed.wav'
if__name__=='__main__':
iflen(sys.argv)<2:
times=1
else:
times=int(sys.argv[1])
iftimes==0:
while1:
winsound.PlaySound(mp3,winsound.SND_NODEFAULT)
else:
foriinrange(times):
winsound.PlaySound(mp3,winsound.SND_NODEFAULT)

❹ Python pyb音频处理

Pyb可以让你用简单的方式处理音频。

Pyb提供了简洁的高层接口,极大的扩展了python处理音频文件的能力。

GitHub链接: pyb-github

GitHub:

pyb的使用必须安装对应的依赖软件 ffmpeg 或 avconv

验证是否安装成功:

Open a WAV file

Open a mp3 file

Open a other file

切割音频

分贝操作
分贝(decibel)是量度两个相同单位之数量比例的计量单位,主要用于度量声音强度,常用dB表示。

音频链接
将一个文件添加到另一个文件的末尾

音频长度

淡入淡出

重复音频

再次淡入淡出

直接保存
所有ffmpeg支持的都支持

用标签保存结果(元数据)

实例:

将mp3文件转换成wav文件:

Python音频处理库 pyb

阅读全文

与python处理wav相关的资料

热点内容
明日之后安卓太卡怎么办 浏览:500
如何使用命令方块找到村庄 浏览:766
泛函压缩映像原理 浏览:521
win10清除文件夹浏览记录 浏览:964
如何查看服务器域中所有服务 浏览:384
学mastercam91编程要多久 浏览:999
如何查服务器地址和端口 浏览:909
教学云平台app怎么下载 浏览:387
单片机510教学视频 浏览:624
陕西信合app怎么查看自己的存款 浏览:663
风冷冰箱有压缩机 浏览:274
android实现wifi连接wifi 浏览:667
飞猪app怎么帮别人值机 浏览:924
笔记本开我的世界服务器地址 浏览:546
怎样隐藏bat命令 浏览:125
android开发创意 浏览:138
京剧猫为什么进不去服务器 浏览:784
怎么自己免费制作一个手机app 浏览:582
python同时迭代两个变量 浏览:740
好分数app家长版怎么删除孩子 浏览:426