The Problem
A PA system is overkill for an announcement, a classroom or a shop floor, and a phone already has the radio and the processing power. But Android does not make it easy to record from one Bluetooth device and play to another at once, and once the microphone and speaker share a room, they feed each other.
The Audio Engine
Full-duplex and callback-driven in C++ on Oboe, with a lock-free ring buffer between input and output. No allocation, no locks and no logging inside the audio callbacks. The buffer grows when the platform reports underruns and shrinks back when things settle.
Echo Cancellation, From Scratch
Android's canceller is built for handset-length delays, not a Bluetooth speaker 150 to 400 ms away. The relay estimates the delay with GCC-PHAT, subtracts the echo with a 768-tap NLMS filter that freezes if it ever starts adding energy, and protects double talk so it never removes the voice it is carrying.

Honest Status
The C++ core and the Android app are built and run. Latency figures in the screenshots were measured on the development device. The Bluetooth path still has to be validated on physical hardware, so no Bluetooth performance is claimed.
Need real-time audio in a mobile app?
Low-latency engines, native modules and DSP that survives a real room. Baydot builds the audio layer your app sits on.
Book a Free Call