【问题标题】:Python Sounddevice callback time.inputBufferAdcTime returns 0Python Sounddevice 回调 time.inputBufferAdcTime 返回 0
【发布时间】:2018-09-12 15:30:35
【问题描述】:

我的最终目标是同时输出一个 wav 文件并在麦克风上录制,并在绘图上将两者叠加显示。这不需要低延迟,但它确实需要两个图以正确表示实时发生的事情的方式重叠。如果我将麦克风线连接到扬声器线,则图表应该相对良好地排列在一起。

output on top of input plot

由于似乎存在一定的延迟,我的解决方案是使用回调给出的时间变量。这应该让我在绘制它以调整延迟时适当地移动绘图。我收到了 DAC 时间和当前时间的适当值,但 ADC 时间给了我 0。

def callback(indata, outdata, frames, time, status):
print "ADC time: ", time.inputBufferAdcTime
print "DAC time: ", time.outputBufferDacTime
print "curr time: ", time.currentTime
print "time diff: ", time.outputBufferDacTime - time.currentTime
print "###############"
if status:
    print(status)
if len(data[callback.index:]) < frames:
    outdata[:len(data[callback.index:])] = data[callback.index:]
    outdata[len(data[callback.index:]):] = np.zeros(
        ((len(outdata) - len(data[callback.index:])), len(args.channels)))
    raise sd.CallbackStop
else:
    outdata[:] = data[callback.index:callback.index + frames]
q_out.put(outdata[::args.downsample, mapping])
q_in.put(indata[::args.downsample, mapping])

callback.index += frames

【问题讨论】:

    标签: python python-2.7 python-sounddevice


    【解决方案1】:

    如果 inputBufferAdcTime 给你 0,那就是 PortAudio 问题。这很可能取决于您使用的主机 API,也可能取决于您的硬件和驱动程序。如果您想了解更多信息,请咨询 PortAudio 邮件列表 (http://portaudio.com/contacts.html)。

    或者您可以尝试不同的主机 API,它可能会更好。

    也可以尝试查询流对象的latency属性,但可能会出现同样的问题。

    最后,如果您无法通过这种方式获得正确的延迟时间,您可以简单地自行测量延迟时间。只需将电缆从声卡的输出连接到输入,播放一些测试信号并记录结果(就像您在代码示例中所做的那样)。您应该能够通过比较两个信号找到延迟值。

    【讨论】:

    • 我目前的解决方案是按照您上次的建议进行操作。我有一个测试音频文件,它有一个用于校准的脉冲。不幸的是,延迟似乎可以改变。即使它是一个微小的变化,它也足够大,它会影响我正在尝试做的事情。校准期间的延迟值在 0.125 到 0.14 秒之间变化。每次我在回调中查看流对象的延迟属性时,它都会返回两个值:输入为 0.02575,输出为 0.0257596。我将看看你的第一个建议,看看它会导致什么。 TY
    • 我现在找到了一个不错的解决方案。我将用于输入/输出的块大小从 1366 增加到 8000。这大大增加了延迟至 0.422 秒,但延迟的一致性要高得多。这使得校准方法有效。
    • 您也可以尝试使用 2 的幂的块大小(例如 1024)。这可能会给您带来更稳定的性能。
    猜你喜欢
    • 2020-11-16
    • 2017-04-12
    • 2013-10-28
    • 2018-04-01
    • 2015-06-15
    • 2018-02-09
    • 2018-05-13
    • 2020-09-04
    • 1970-01-01
    相关资源
    最近更新 更多