Stream microphone audio to Sonos speakers on your local network.
- Device Discovery: Find Sonos speakers via mDNS with manual refresh button
- Audio Streaming: Stream live microphone audio in WAV format or HLS
- Track Metadata: Display currently playing track with artwork (via UPnP event subscriptions)
- Lyrics Search: Quick link to search for lyrics of currently playing tracks
- Amplification Control: Adjust gain with a slider in Settings
- Announcement Mode: Play audio over currently playing music (announcement feature)
- Multiple Device Support: Select and stream to multiple speakers simultaneously
- Android: Compose UI, ViewModels, Kotlin coroutines
- Device Discovery: Android's NsdManager (mDNS)
- Audio: Android MediaRecorder, MediaCodec for WAV/AAC encoding
- Networking: Ktor client/server for HTTP streaming and UPnP event subscriptions
- Metadata: UPnP AVTransport service queries and event subscriptions
- Grant microphone permission when prompted
- Tap Refresh to discover Sonos speakers
- Select one or more devices
- Tap the microphone icon to start streaming
- Use Settings (gear icon) to adjust amplification and select audio mode
Announcement Mode (Recommended)
- Ducks the volume of currently playing music and plays your microphone stream on top at the specified volume level
- Preserves your current queue and song playback
- Recommended for most use cases
Streaming Mode
- Sends raw microphone audio as a direct stream to the device
- Clears the current queue as Sonos must stop playback to play the stream
- Requires significantly higher amplification (typically 20-40x) due to the audio level limitations of raw streaming
- Min SDK: Android 9 (for HTTP cleartext traffic to local devices)
- Sonos Ports: 1400 (UPnP), 8888 (event subscriptions)
- Local Server Ports: random (audio streaming)
Created with the help of Sourcegraph's AmpCode.