Every live stream keeps a small cushion of sound in hand to ride out internet hiccups. Today Beam grows and shrinks that cushion by speeding the voice up or slowing it down. Nafas never touches the voice. It waits for the speaker to breathe, and makes that pause a little longer or shorter instead.
This runs entirely in your browser: three minutes of Sheikh Hamid's recording from 16 October is cut into 0.1 s slices, sent through a pretend phone connection, and played by both players at once. Switch which one you hear at any time.
The "today" player here is an imitation: it changes speed without keeping the pitch, so it sounds a little worse than the real beam.otic.sa player, which keeps the pitch. The demo pauses if you lock the screen or switch tabs.
Sheikh Hamid's full 25.5-minute recording, 6 runs per row, each run with its own random hiccups. Cuts and delay are averages per run, so a cut figure of 1.0 means about one cut in 25 minutes. Today's method is modelled on Beam's live player (the 0.3 s + 1.3 × unevenness cushion with 0.95× / 1.05× speed changes).
| Connection | Player | Typical delay | Cuts in speech per run | Speech played at changed speed |
|---|
What this shows: on the listener's side, Nafas is within a few hundredths of a second of today's delay and has about as many cuts, but never changes the speed of the voice. The cuts that remain are internet hiccups longer than the cushion, which no player can hide. The broadcaster dropping out is fixed by the Twin uplink below, not by the player.
Described above. Its value is clean sound: no speed changes, a quick return to the shortest delay after a hiccup (by trimming the next few pauses), and Beam playing audio itself instead of relying on Safari's media player. Closest prior art: internet phone calls have adjusted delay between sentences since the 1990s. Using sender-marked breaths to steer a one-to-many broadcast is, as far as I know, new.
The broadcaster's iPhone sends every slice twice at once, over Wi-Fi and over mobile data. The server keeps whichever copy arrives first. A Wi-Fi drop on the broadcaster's side, which today every listener hears, simply goes unnoticed. Cost: about 20 to 30 MB of extra mobile data per hour at Beam's 48 kbps quality, and nothing on the server beyond one extra incoming line. TV news vans do this with expensive bonding boxes, and pro studios send two identical streams over two networks. Doing it free inside a phone app is the new part. It needs Apple's Network framework, which lets an app pick Wi-Fi or mobile data per connection.
The same trick for listeners: the page holds two connections and plays whichever slice arrives first. It only helps with hiccups on one connection, not with the phone's Wi-Fi itself, so the gain depends on what causes the hiccups. If half of them are connection-level, the simulator says delay drops by about 0.1 s at the same cut rate. It also doubles each listener's sends, so big shows need twice the helper rooms. Worth it only after measuring real phones.
When several phones in the same hall or home play the same khutbah, today they echo each other, because each sits at its own delay. With Unison every listener plays each word at the same clock time, for example 1.0 s after it was spoken, and Nafas gets everyone there by stretching or trimming pauses. Listeners on bad connections fall back to their own delay. Speaker systems such as Sonos keep their own speakers in step at home, but not independent phones listening over the internet.