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

Python中利用sounddevicerec()函数实现音频录制功能

发布时间:2023-12-23 08:55:08

在Python中,可以使用sounddevice库中的rec()函数实现音频录制的功能。rec()函数可以设置录制的音频参数,并返回一个numpy数组,其中包含录制的音频数据。下面是一个使用sounddevice.rec()函数实现音频录制的例子:

import sounddevice as sd
import numpy as np

def audio_callback(indata, frames, time, status):
    if status:
        print('status:', status)
    print(indata)

# 设置音频参数
duration = 5  # 录制时长(秒)
sample_rate = 44100  # 采样率
channels = 1  # 声道数

# 录制音频
recording = sd.rec(int(duration * sample_rate), samplerate=sample_rate, channels=channels, callback=audio_callback)
sd.wait()

# 保存录制的音频为wav文件
sd.write('recording.wav', recording, sample_rate)

在上述例子中,我们首先导入了sounddevice库,并设置了录制的音频参数。其中,duration参数表示录制的时长,sample_rate参数表示采样率,channels参数表示声道数。

然后,我们定义了一个名为audio_callback()的回调函数,用于处理录制的音频数据。该回调函数的参数包括indata(录制的音频数据),frames(每个缓冲区的帧数),time(已经过去的时间)和status(当前状态)。在这个例子中,我们简单地输出了录制的音频数据。

接下来,我们使用rec()函数进行音频录制。rec()函数的第一个参数是要录制的总帧数,可以通过将总时长与采样率相乘来计算。samplerate参数用于设置采样率,channels参数用于设置声道数。最后,我们还使用callback参数将回调函数audio_callback()绑定到录制音频的过程中。

在调用rec()函数后,我们使用sd.wait()函数等待录制完成。之后,我们可以使用sd.write()函数将录制的音频保存为一个wav文件。该函数的参数包括文件名、录制的音频数据和采样率。

综上所述,通过使用sounddevice.rec()函数,我们可以实现简单的音频录制功能,并且可以将录制的音频保存为wav文件。