python代码片段之:声音录制

import pyaudio
import wave

# 设置录制参数
chunk = 1024
sample_format = pyaudio.paInt16
channels = 2
sample_rate = 44100
record_seconds = 5
output_file = 'output.wav'


def play_audio():
    wf = wave.open(output_file, 'rb')
    p = pyaudio.PyAudio()
    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
        channels=wf.getnchannels(),
        rate=wf.getframerate(),
        output=True)
    stream.close()
    wf.close()
    p.terminate()


def record_audio():
    # 初始化PyAudio对象
    p = pyaudio.PyAudio()

    # 打开音频流
    stream = p.open(format=sample_format,
                    channels=channels,
                    rate=sample_rate,
                    frames_per_buffer=chunk,
                    input=True)
    frames = []
    # 录制声音
    for i in range(0, int(sample_rate / chunk * record_seconds)):
        data = stream.read(chunk)
        frames.append(data)

    # 停止录制
    stream.stop_stream()
    stream.close()

    # 保存录制的声音为WAV文件
    wf = wave.open(output_file, 'wb')
    wf.setnchannels(channels)
    wf.setsampwidth(p.get_sample_size(sample_format))
    wf.setframerate(sample_rate)
    wf.writeframes(b''.join(frames))
    wf.close()

    # 释放PyAudio对象
    p.terminate()


if __name__ == '__main__':
    record_audio()
    play_audio()