如何利用Python播放wav
时间: 2023-08-09 20:05:29 浏览: 46
你可以使用Python标准库中的wave模块来播放WAV格式的音频文件。以下是一个简单的示例:
```
import wave
import pyaudio
wave_file = wave.open('example.wav', 'rb')
# 初始化PyAudio
p = pyaudio.PyAudio()
# 打开音频流
stream = p.open(format=p.get_format_from_width(wave_file.getsampwidth()),
channels=wave_file.getnchannels(),
rate=wave_file.getframerate(),
output=True)
# 读取音频数据并播放
data = wave_file.readframes(1024)
while data:
stream.write(data)
data = wave_file.readframes(1024)
# 关闭音频流和PyAudio
stream.stop_stream()
stream.close()
p.terminate()
```
这个示例使用wave模块打开一个名为“example.wav”的音频文件,并使用PyAudio初始化一个音频流。然后循环读取音频数据,并将其写入音频流以播放音频。最后,关闭音频流和PyAudio。你可以根据自己的需要调整读取音频数据的大小和播放速度。
相关问题
python播放wav音频
确实很简单,你可以使用Python自带的wave库来实现。可以使用下面的代码播放.wav音频文件:
```python
import wave
import pyaudio
# 打开wav文件
wf = wave.open('audio.wav', 'rb')
# 初始化音频输出对象
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
# 播放音频
data = wf.readframes(1024)
while data != b'':
stream.write(data)
data = wf.readframes(1024)
# 关闭音频输出对象和wav文件
stream.stop_stream()
stream.close()
p.terminate()
wf.close()
```
请注意,要运行这段代码,请先安装pyaudio和wave库。
利用python分割wav
你可以使用Python中的wave模块来读取和分割WAV文件。以下是一个示例代码:
```python
import wave
# 打开WAV文件
wav = wave.open('audio.wav', 'rb')
# 获取WAV文件的参数
params = wav.getparams()
# 获取单个样本的字节数
sample_width = wav.getsampwidth()
# 获取采样率
sample_rate = wav.getframerate()
# 获取音频总帧数
num_frames = wav.getnframes()
# 计算音频总时长
duration = num_frames / float(sample_rate)
# 每次读取的帧数
chunk_size = int(sample_rate * 5)
# 开始分割
for i in range(0, num_frames, chunk_size):
# 读取音频数据
data = wav.readframes(chunk_size)
# 分割后的文件名
filename = 'audio_chunk{}.wav'.format(i // chunk_size)
# 创建新的WAV文件
chunk = wave.open(filename, 'wb')
chunk.setparams(params)
# 写入音频数据
chunk.writeframes(data)
# 关闭文件
chunk.close()
# 关闭原始WAV文件
wav.close()
```
这段代码将一个名为`audio.wav`的WAV文件分割成长度为5秒的小文件,并将它们保存在当前目录下。