sounddevice record“out”参数

2024-03-28 19:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用“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)

但结果是一样的。你知道吗


Tags: importnumpy示例用法inputtimeasnp
1条回答
网友
1楼 · 发布于 2024-03-28 19:38:12

所记录的音频数据不被附加到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。你知道吗

Should a samplerate be defined if I want it to use the default samplerate?

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

相关问题 更多 >