Python буферизует аудио с низкой задержкой

#python #audio #streaming

#python #Аудио #потоковая передача

Вопрос:

Есть ли способ добиться воспроизведения звука с низкой задержкой в python? Оба sounddevice и pyaudio имеют задержки> 0,5 секунды. pygame длится> 0,3 секунды со значительной нестабильностью. Я передаю потоковое аудио, поэтому мне нужны задержки в миллисекундах или, по крайней мере, <0,05 секунды.

Ошибочна ли моя реализация или я должен использовать другую библиотеку.

 import sounddevice as sd
a = sd.RawOutputStream(samplerate = RATE, blocksize = CHUNK*4, channels = 1, dtype="int32", latency = 0)
a.start()
a.write(buffer)

  

Комментарии:

1. Вам следует попробовать разные устройства из вашего списка устройств. Задержка будет очень сильно зависеть от аудио серверной части (a.k.a. host API). Если вы используете Windows, вам следует попробовать «эксклюзивный» режим ASIO и / или WASAPI для минимальной задержки.

2. @Matthias Будет ли только одно устройство вывода звука, если нет настройки аудио периферийных устройств (кроме встроенного динамика)? Также вы можете указать мне на какие-либо библиотеки / документы для использования аналога mac, coreaudio.

3. На macOS / CoreAudio вы можете попробовать change_device_parameters настройку (см. python-sounddevice.readthedocs.io/en/0.4.1/api / … ), но у меня нет никакого опыта в этом, это может ничего не изменить. Что еще более важно, я только что увидел, что вы указываете явное blocksize . Для низких задержек может быть лучше использовать blocksize=0 (по умолчанию) и latency='low' . Я предполагаю, что вы не включаете время запуска потока в свои измерения задержки?