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

使用Python的sounddevice库进行音频录制,教你如何调用rec()函数

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

sounddevice是一个用于Python的跨平台音频录制和播放库。它提供了一个高级接口,使用户能够轻松地录制和播放音频。

rec()函数是sounddevice库中用于录制音频的主要函数之一。它接受一系列参数来控制录制的细节,并返回一个NumPy数组,该数组包含录制的音频数据。

调用rec()函数的一般语法如下:

data = sounddevice.rec(frames, samplerate=44100, channels=1, dtype='float32')

参数说明:

- frames:要录制的帧数。可以使用None表示一直录制,直到调用stop()函数。

- samplerate:录制的采样率。默认为44100 Hz。

- channels:录制的通道数。默认为1。

- dtype:录制的数据类型。默认为'float32'。

接下来,我将向你展示一个简单的例子,演示如何使用rec()函数录制音频并保存到文件中。

import sounddevice as sd
import scipy.io.wavfile as wav

def record_audio(filename, duration, samplerate=44100, channels=1):
    # 调用rec()函数录制音频
    data = sd.rec(int(duration * samplerate), samplerate=samplerate, channels=channels, dtype='float32')
    sd.wait()  # 等待录制完成

    # 保存音频数据到WAV文件
    wav.write(filename, samplerate, data)

if __name__ == "__main__":
    filename = "recorded_audio.wav"
    duration = 5  # 录制时长为5秒

    record_audio(filename, duration)
    print("录制完成。")

在上面的例子中,我们首先导入了sounddevice和scipy.io.wavfile库。我们定义了一个record_audio函数,该函数接受录制的文件名、录制时长、采样率和通道数等参数。

在record_audio函数内部,我们调用rec()函数来录制音频数据,并使用sd.wait()来等待录制完成。

最后,我们使用wav.write函数将录制的音频数据保存为WAV文件。

如果你按照上述代码运行程序,它将在5秒钟内录制音频,并将其保存为名为"recorded_audio.wav"的WAV文件。

这只是rec()函数的一个基本使用方法,你可以通过调整参数来满足自己的需求。例如,你可以调整采样率和通道数来改变录制的音频质量。还可以使用其他参数,如blocksize、latency等来进一步控制录制过程。

总结起来,sounddevice库提供了一个简单而强大的接口来录制音频。使用rec()函数,你可以轻松地开始录制音频,并将其保存到文件中。你可以根据需要调整参数,以满足你的特定需求。希望这个简短的教程能够帮助你开始使用sounddevice库进行音频录制。