我想使用“ 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)
但结果相同。
答案 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。
如果要使用默认采样率,是否应该定义采样率?
如果要使用默认值,则不必显式指定它。