声音设备记录“输出”参数

时间:2019-03-06 01:14:24

标签: python python-sounddevice

我想使用“ out”参数将记录的信号写入给定的numpy数组,但是我没有将任何音频附加到传递给它的数组中。如果我希望使用默认采样率,是否应该定义采样率?文档中没有特定的示例用法,因此,如果对正确用法有任何建议,请参见以下示例:

import sounddevice as sd
import numpy as np
import time

input_chs = [1,2]
rec_array = np.zeros([1, len(input_chs)])
sd.rec(out=rec_array, mapping=input_chs)
time.sleep(1)
sd.stop()
print(rec_array)  # Returns original rec_array

我也尝试过

rec_array = sd.rec(out=rec_array, mapping=input_chs)

但结果相同。

1 个答案:

答案 0 :(得分:0)

记录的音频数据未附加out数组中。 out数组中已记录的数据已填充到最大大小,然后记录停止(假设您使用sd.wait()blocking=True)。

您要传递的out数组只有一行,这意味着将只记录一帧。您应该为int(desired_duration_in_seconds * samplerate)数组使用out行。

换句话说,您必须事先知道录音应该持续多长时间。 然后,您可以使用sd.wait()完成录制。

如果您想在不知道持续时间的情况下进行录制,则应查看示例https://github.com/spatialaudio/python-sounddevice/blob/master/examples/rec_unlimited.py

  

如果要使用默认采样率,是否应该定义采样率?

如果要使用默认值,则不必显式指定它。