我想使用“out”参数将录制的信号写入一个给定的numpy数组,但是我没有得到任何附加到我正在传递它的数组的音频。如果我希望samplerate使用默认的samplerate,是否应该定义一个samplerate?文档中没有具体的用法示例,因此如果对正确用法有任何建议,请参见下面的示例:
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)
但结果是一样的。你知道吗
所记录的音频数据不被附加到
out
数组中。out
数组充满了记录的数据,直到它的大小,然后记录停止(假设您使用sd.wait()
或blocking=True
)。你知道吗您正在传递一个只有一行的
out
数组,这意味着只记录一帧。您应该为out
数组使用int(desired_duration_in_seconds * samplerate)
行。你知道吗换句话说,你必须事先知道录音的时间。 然后您可以使用
sd.wait()
完成录制。你知道吗如果您想在事先不知道持续时间的情况下进行录制,那么应该查看示例https://github.com/spatialaudio/python-sounddevice/blob/master/examples/rec_unlimited.py。你知道吗
如果要使用默认值,则不必显式指定它。你知道吗
相关问题 更多 >
编程相关推荐