用python写两个函数:录制声音,播放声音
时间: 2023-06-23 16:08:43 浏览: 128
要录制和播放声音,我们可以使用Python中的PyAudio库。以下是录制声音和播放声音的示例函数:
``` python
import pyaudio
import wave
def record_audio(file_name, duration=5):
"""录制声音"""
chunk = 1024 # 每次读取的音频流块大小
sample_format = pyaudio.paInt16 # 采样位数
channels = 2 # 声道数
fs = 44100 # 采样率
seconds = duration # 录制时间
p = pyaudio.PyAudio()
stream = p.open(format=sample_format,
channels=channels,
rate=fs,
frames_per_buffer=chunk,
input=True)
frames = []
for i in range(0, int(fs / chunk * seconds)):
data = stream.read(chunk)
frames.append(data)
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(file_name, 'wb')
wf.setnchannels(channels)
wf.setsampwidth(p.get_sample_size(sample_format))
wf.setframerate(fs)
wf.writeframes(b''.join(frames))
wf.close()
def play_audio(file_name):
"""播放声音"""
chunk = 1024 # 读取音频流块大小
wf = wave.open(file_name, '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(chunk)
while data:
stream.write(data)
data = wf.readframes(chunk)
# 停止数据流
stream.stop_stream()
stream.close()
# 关闭PyAudio
p.terminate()
```
其中,`record_audio`函数用于录制音频,需要传入一个文件名和录制时间(默认为5秒),函数将在该时间内录制声音并将其保存到指定文件中。`play_audio`函数用于播放指定文件中的声音。只需要传入要播放的音频文件名即可。
阅读全文