Наименьшая достижимая задержка зависит от многих факторов, которые ваш код не будет контролировать, в основном, от вашей сети.
Теперь, если бы я занимался этим проектом, я бы посмотрел, какие алгоритмы и протоколы доступны для синхронизации часов. После того, как вы это сделаете, каждый хост, скорее всего, просто отправит на сервер пакеты с меткой времени. На стороне сервера вы можете как-то объединить эти пакеты (возможно, побитовые или по всем байтам для определенного временного интервала с каждой машины) и снова отправить их через многоадресную рассылку.
Проблема в том, что даже у вашего кода будут проблемы ... у вас нет способа надежно передать эти пакеты на сервер в режиме реального времени. UDP будет отбрасывать пакеты, и вам придется встроить допуск для принятия позднего прибытия или незаезда. TCP не лучше в этом отношении. Конечно, пакеты гарантированно поступят по порядку, но по какой цене вовремя? Кроме того, чтобы сжать звук на каждом хосте, а затем разархивировать его на сервере, выполнить объединение и повторное сжатие ... все это, сохраняя при этом ощущение звучания в реальном времени ужасно амбициозным.
Я не имею в виду, что меня считают экспертом, и у меня нет ЛЮБОГО опыта в подобных делах, но это просто ГРОМКО звучит.