Python实现播放和录制声音的功能
Python作为一种通用型脚本语言,不仅能够完成数据处理、爬虫等任务,同时也可以用来处理音频,实现播放和录制声音的功能,本文将详细讲解Python实现这两个功能的方法。
播放声音
首先,我们需要安装pyaudio模块,它是Python语言的音频处理库,支持录制、播放、转化格式等功能。
pip install pyaudio
接下来,我们可以使用下面的代码实现在Python里播放声音:
import pyaudio
import wave
def play_audio(filename):
chunk = 1024
wf = wave.open(filename, '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()
p.terminate()
if __name__ == '__main__':
play_audio('test.wav')
在这段代码中,我们首先导入了pyaudio
和wave
两个模块,定义了一个play_audio
函数,在该函数中,我们使用wave.open
打开需要播放的声音文件,并使用pyaudio.PyAudio()
实例化一个PyAudio
对象。接着,我们使用p.open
打开一个音频输出流,设置音频参数,并使用wf.readframes(chunk)
方法读取音频数据,使用stream.write(data)
方法将这些数据写入音频输出流,通过stream.stop_stream()
和stream.close()
关闭流对象,最后通过p.terminate()
关闭PyAudio对象,完成音频播放的过程。
录制声音
除了播放声音,PyAudio还支持录音功能,接下来我们看看如何录制声音。
import pyaudio
import wave
def record_audio(filename):
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(filename, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
if __name__ == '__main__':
record_audio('test.wav')
在这段代码中,我们首先定义了常量CHUNK、FORMAT、CHANNELS、RATE、RECORD_SECONDS,分别表示缓存块的大小、采样格式、声道数、采样率、录音时长。接着,我们实例化一个PyAudio
对象,使用p.open()
打开一个音频输入流,其中input=True
表示打开音频输入流,frames_per_buffer=CHUNK
表示一次读取CHUNK长度的数据。在循环中,我们使用stream.read()
方法读取数据,并且将它们添加到列表frames
里,循环结束后,关闭流对象,并且将列表frames
里的音频数据写入文件。
两条示例说明:
- 播放一段wav格式的音乐文件:
play_audio('heal-the-world.wav')
- 录制一段音频并保存到文件
record_audio('test.wav')
以上就是Python实现播放和录制声音的功能的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现播放和录制声音的功能 - Python技术站