Voice directionBeta

Interfaces that know where the voice comes from. One tiny on-device model listens through the iPhone's built-in stereo microphones and tells your views whether the user speaks from the left, ahead or the right. No calibration needed. Voice ring leans toward the speaker with it.

Video coming soon

The model

One model listens to the iPhone's built-in stereo microphones and tells your views which side the voice comes from: left, ahead or right. It is input only: pair it with any view or library.

VoiceDirection.mfxl · v1.0 beta · 1.4 KB · VoiceDirectionKit · Model License

Which side the voice is on

  • Reads The difference between the two microphones on voiced frames: level in 13 bands from 150 Hz to 9 kHz, phase in 6 bands up to 2.7 kHz.
  • Answers How likely the voice is on the left, ahead or on the right, and the side it settles on, about 0.65 s into a clear voice. Switching sides, it always passes through the centre; short or doubtful sounds don't move it, and quiet lets the side go.
  • Tested On held-out rounds from one speaker on an iPhone 15 Pro, held upright or lying flat on a desk with its bottom edge toward the speaker: once settled, it was on the correct side (centred for a voice ahead) 97 % of the time on the desk and 91 % in the hand, and on the wrong side 0 % and 0.5 % (worst round 3 %).

In the hand or on the desk

  • Reads The motion sensors, to tell a hand-held phone from one lying flat. Picked automatically.
  • Answers The pose, and the model trained for it. A phone sounds different in each, so each pose has its own.

No calibration

  • Out of the box With the model in the app, users never record anything.
  • Optional Three seconds of voice from the left, ahead and the right calibrate the current pose for one user and replace the model there: the fallback for a phone the model doesn't know yet, best recorded where the user will speak from.

Inside: two small linear classifiers, one per pose, over 25 features, run on every audio frame.

Built for the phone

Trained on real voices

The model learned from rounds recorded on an iPhone 15 Pro, held upright or lying flat on a desk: one speaker talking from the left, ahead and the right, with the phone in the hand and lying on a desk, at different distances, loudness and grips. Every result above is on rounds left out of training. No user data.

Beta: one phone so far

It is tested on an iPhone 15 Pro only. Other iPhones place their microphones differently, so check both sides there and calibrate if one reads weak. More devices, voices and rooms are being recorded. Not covered yet: several people speaking, noisy rooms, landscape, and AirPods or other Bluetooth microphones, which record in mono.

On the phone, every frame

A 1.4 KB model that ships inside your app: no server, no network request at runtime, no audio leaves the phone.

Only the microphone

One permission, the microphone, which a voice interface asks for anyway. No camera, no location.

Pair it with any view

The side is a plain value: slide a panel toward the speaker, pick who is talking, or let Voice ring lean toward the voice. iPhone with iOS 17 or newer, held upright or lying flat.