Моя конечная цель - одновременно вывести wav-файл и записать его на микрофон, а затем отобразить их на графике. Это не требует низкой задержки, но требует, чтобы два графика были наложены таким образом, чтобы они правильно отображали то, что происходит в режиме реального времени. Если я подключу линию микрофона к линии громкоговорителей, графики должны располагаться друг относительно друга относительно хорошо.
вывод поверх графика ввода
Так как, похоже, существует некоторая задержка, мое решение - использовать переменную времени, заданную обратным вызовом. Это должно позволить мне соответствующим образом сместить график при настройке его на задержку. Я получаю соответствующие значения времени ЦАП и текущего времени, но время АЦП дает мне 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