Signal processing research Ongoing · undergraduate research
Spatial Audio Research
Sound in headphones should stay put in the room when you turn your head. That means updating its direction as fast as you move.
- Source, world
- 40°
- Head yaw
- 0°
- Source, head-relative
- +40°
- Heard
- ahead and to the right
Degrees clockwise, positive to the right. Relative bearing = wrap(source − yaw).
What I did
I built a real-time pipeline that reads an MPU6050 head tracker and renders binaural audio with FFT convolution in Python.
I also trained a sequence model on inertial and audio features to predict head pose 100 ms ahead.
Result
- Sources stay world-locked under live head motion.
- Interpolating between measured ear responses replaced nearest-neighbour lookup, so filters change smoothly.
- Head pose predicted 100 ms ahead from inertial and audio features.
- 100 ms is how far ahead the model predicts, not a measured latency reduction.
- Model details, accuracy and listening tests aren't published yet.
Design decision
Blend, don't snap
Using the nearest measured direction makes the sound jump as you turn. Blending the three nearest directions with barycentric weights keeps it smooth, at the cost of more computation per update.
- Head IMUMPU6050, I2C
- Orientationhead yaw
- Coordinate mapsource − yaw
- HRTF blendbarycentric
- FFT convolutionleft and right
- Headphones
- Pose predictor100 ms horizon
- Measured HRIRsCIPIC
More detail
How world-locked audio works
Binaural rendering filters a sound with one impulse response per ear, chosen for the direction it should come from. If the filters don't follow the head, the sound turns with you.
So the renderer needs head orientation, the source's direction relative to the head, ear filters for that direction, and convolution fast enough to still match the head when heard.
Pipeline
The coordinate step subtracts head yaw from the source's world bearing; a predicted pose can stand in for the measured one. The result picks a blend of measured HRIR directions from CIPIC data, applied block by block.
Other design decisions
Predict the pose
A learned predictor with a 100 ms horizon. Instead of: rendering with the latest measured pose.
Can offset pipeline delay, but prediction error becomes its own source of misplacement and has to be evaluated separately.