欢迎访问宙启技术站
智能推送

USB音频设备:如何在Python中播放和录制声音

发布时间:2024-01-04 21:43:17

在Python中,我们可以使用PyAudio库来播放和录制声音。PyAudio是一个跨平台的音频库,可以在Windows、Mac和Linux上使用。

首先,我们需要安装PyAudio库。可以通过以下命令来安装:

pip install pyaudio

接下来,我们来看一下如何在Python中播放声音。以下是一个简单的例子:

import pyaudio
import wave

def play_audio(file_path):
    chunk = 1024

    # 打开音频文件
    wf = wave.open(file_path, 'rb')

    # 实例化PyAudio对象
    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()

# 播放声音文件
play_audio('example.wav')

在上面的例子中,我们使用了wave模块来打开声音文件,并使用PyAudio库来打开音频流并播放声音。我们使用了PyAudio对象p来管理音频流。

现在,让我们来看一下如何在Python中录制声音。以下是一个简单的例子:

import pyaudio
import wave

def record_audio(file_path, duration):
    chunk = 1024

    # 实例化PyAudio对象
    p = pyaudio.PyAudio()

    # 打开音频流
    stream = p.open(format=pyaudio.paInt16,
                    channels=1,
                    rate=44100,
                    input=True,
                    frames_per_buffer=chunk)

    # 创建一个音频文件
    wf = wave.open(file_path, 'wb')
    wf.setnchannels(1)
    wf.setsampwidth(p.get_sample_size(pyaudio.paInt16))
    wf.setframerate(44100)

    # 录制音频流
    frames = []
    for i in range(0, int(44100 / chunk * duration)):
        data = stream.read(chunk)
        frames.append(data)

    # 写入音频文件
    wf.writeframes(b''.join(frames))

    # 关闭音频文件和音频流
    wf.close()
    stream.stop_stream()
    stream.close()

    # 关闭PyAudio对象
    p.terminate()

# 录制声音并保存为文件
record_audio('recorded.wav', 5)

在上面的例子中,我们使用了PyAudio库来打开音频流并录制声音。我们使用了PyAudio对象p来管理音频流,使用wave模块来创建音频文件。

以上是在Python中使用PyAudio库播放和录制声音的例子。你可以根据自己的需求来修改这些例子,并探索更多高级特性和功能。希望这些例子对你有帮助!