#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'
. Я предполагаю, что вы не включаете время запуска потока в свои измерения задержки?