Low-latency audio streaming (local network)

This page summarizes the projects mentioned and recommended in the original post on reddit.com/r/selfhosted

Our great sponsors
  • SonarQube - Static code analysis for 29 languages.
  • Scout APM - Less time debugging, more time building
  • SaaSHub - Software Alternatives and Reviews
  • Snapcast

    Synchronous multiroom audio player

    It appears to primarily depend on what sources and destinations are being used. The server has an explicit buffer setting which could be reduced until the stream becomes discontinuous. I took a look at this conversation for reference.

  • Freepbx

    This module provides a facility to install bug fixes to the framework code that is not otherwise housed in a module (by FreePBX)

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • janus-gateway

    Janus WebRTC Server

    I've been using Janus gateway for similar. Pretty easy to setup.

  • mumble-web

    An HTML5 Mumble client

  • # install rustcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shrustup default 1.48.0sudo apt-get libglib2.0-dev install llvm clang# download proxy in /opt/cd /opt/git clone https://github.com/johni0702/mumble-web-proxycd mumble-web-proxycargo build --release# download web in /var/www/cd /var/www/git clone https://github.com/johni0702/mumble-webcd mumble-webnpm installecho "config.defaults.address = 'voice.roanapur.de'config.defaults.port = '443/websocket'config.defaults.theme = 'MetroMumbleDark'config.defaults.avatarurl = 'https://voice.roanapur.de/korken.png'config.connectDialog.port = falseconfig.connectDialog.address = falseconfig.connectDialog.token = falseconfig.settings.toolbarVertical = true" > dist/config.local.js# nginx site /etc/nginx/sites-enabled/voice.confserver { listen 443 ssl; listen [::]:443 ssl; server_name voice.roanapur.de; ssl_certificate /etc/letsencrypt/live/roanapur.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/roanapur.de/privkey.pem; root /var/www/mumble-web/dist/; location / { } location /websocket { proxy_pass http://localhost:64737; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; }}server { listen 80; listen [::]:80; server_name voice.roanapur.de; return 301 https://voice.roanapur.de$request_uri;}map $http_upgrade $connection_upgrade { default upgrade; '' close;}# syestemd unit file /etc/systemd/system/mumble-web-proxy.service[Unit]Description=mumble-web-proxyAfter=syslog.target network-online.targetWants=network-online.target[Service]User=mumble-serverGroup=mumble-serverType=simpleExecStart=/opt/mumble-web-proxy/mumble-web-proxy --listen-ws 64737 --server voice.roanapur.de:64738Restart=always[Install]WantedBy=multi-user.target# reload systemdsystemctl daemon-reload

  • # install rustcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shrustup default 1.48.0sudo apt-get libglib2.0-dev install llvm clang# download proxy in /opt/cd /opt/git clone https://github.com/johni0702/mumble-web-proxycd mumble-web-proxycargo build --release# download web in /var/www/cd /var/www/git clone https://github.com/johni0702/mumble-webcd mumble-webnpm installecho "config.defaults.address = 'voice.roanapur.de'config.defaults.port = '443/websocket'config.defaults.theme = 'MetroMumbleDark'config.defaults.avatarurl = 'https://voice.roanapur.de/korken.png'config.connectDialog.port = falseconfig.connectDialog.address = falseconfig.connectDialog.token = falseconfig.settings.toolbarVertical = true" > dist/config.local.js# nginx site /etc/nginx/sites-enabled/voice.confserver { listen 443 ssl; listen [::]:443 ssl; server_name voice.roanapur.de; ssl_certificate /etc/letsencrypt/live/roanapur.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/roanapur.de/privkey.pem; root /var/www/mumble-web/dist/; location / { } location /websocket { proxy_pass http://localhost:64737; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; }}server { listen 80; listen [::]:80; server_name voice.roanapur.de; return 301 https://voice.roanapur.de$request_uri;}map $http_upgrade $connection_upgrade { default upgrade; '' close;}# syestemd unit file /etc/systemd/system/mumble-web-proxy.service[Unit]Description=mumble-web-proxyAfter=syslog.target network-online.targetWants=network-online.target[Service]User=mumble-serverGroup=mumble-serverType=simpleExecStart=/opt/mumble-web-proxy/mumble-web-proxy --listen-ws 64737 --server voice.roanapur.de:64738Restart=always[Install]WantedBy=multi-user.target# reload systemdsystemctl daemon-reload

  • captionninja

    Closed-captioning transcription tool for OBS that generates text overlays using real-time ML.

    Maybe one of the author's other tools could be handy for you as well, because you're doing live translation. If you want captions (automatic or manual), he has a tool for that here: https://github.com/steveseguin/captionninja

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts