Screamrouter is a whole home audio routing solution with comprehensive control and audio features.
ScreamRouter has a custom low-latency audio processing engine to handle mixing audio from many sources and playing it back out to many speakers.
The completely custom audio processing engine is designed to have minimal quality loss and minimal latency while not skipping on necessary features.
- Create routes between sources and sinks.
- Adjust Volume, Equalization, and Delay per route, source, or sink.
- Timeshift audio – 5 minutes of audio is constantly recorded and can be rewound through. An artificial delay can be added to one speaker while another plays the real-time feed.
- Mixer/converter handles converting between different channel layouts, sample rates, and bit depths.
- Everything works with PCM, no encoding or decoding delays.
ScreamRouter allows a new level of audio flexibility
An open protocol and API allows further extension and tools to be created for additional platforms. The simplicity of the protocol means that overhead and latency is minimal and new implementations can be made quickly. An exposed MP3 stream makes it possible to listen to ScreamRouter using existing devices and browsers.
- Esp32 TOSLINK Sender/Receiver
- Esp32S3 USB UAC 1.0 Sender/Receiver
- Raspberry Pi Receiver
- Raspberry Pi Zero USB Gadget Sender
- PulseAudio RTP support
- Unix PulseAudio/ALSA Receiver
- Windows Scream Driver Sender
- Windows Usermode Scream Sender
- Windows Usermode Listener
- Web-based MP3 streams for listening
- Docker container sources for Amazon Music, Firefox, and Spotify
A comprehensive API as well as a Home Assistant integration allows ScreamRouter to automate your audio in ways that previously not possible
Cheap ESP32 and Raspberry Pi configurations as well as tools available for common platforms allows ScreamRouter devices to be built for single-digit dollars while commercial devices cost hundreds of dollars each.
Remote Control your sources
The interface adds VNC support using noVNC allowing for remotely viewing the desktop of a dedicated music player or Docker container. There are also network media key scripts for Linux and Windows that allow sending media keys directly from the interface without entering VNC.
Subprojects
- Docker Containers
- These Docker Containers Implement source for ScreamRouter
- Sources/Sinks
- ESP32 Sources/Receiver
- ESP32S3 UAC1.0 USB Source – Shows up as a USB sound card, gets audio from PC, modern video game systems, cell phones
- ESP32 Toslink Source – Gets audio from TVs and older video game systems
- ESP32S3 USB/Toslink Scream Receiver – Sends audio to USB sound cards, Toslink receivers
- ESP32 A1S Audiokit Reciever – Sends audio to a built-on amplifier using the A1S devkit
- Windows
- Windows Scream Source – Usermode application to capture Windows’s audio and send it to ScreamRouter
- Windows Scream Receiver – application to receive ScreamRouter audio and play it back
- Linux
- Support for RTP streams from PulseAudio/Pipewire
- Linux command-line utility to stream audio to ScreamRouter – This tool also works on jailbroken LG WebOS TVs
- Python Scream Receiver
- ESP32 Sources/Receiver
- Subtitles
- Real-time subtitle generator written using OpenAI Whisper AI model – This was written to be compatible with MP3 streams from ScreamRouter
Documentation
Fully typed and annotated Python code allows for clear and convenient Swagger API documentation. There is also documentation on using ScreamRouter available at the Github repo.