Measure Audio Latency on Android app and delay playing audio
$250-750 USD
In Progress
Posted over 10 years ago
$250-750 USD
Paid on delivery
This is a project to see how one aspect of the technology really works.
So no fancy design necessary.
There is some code to do on a PC and some code for an Android App. (Gingerbread version if possible).
In details: -- On the PC:
1. There is on the PC an audio file played with the same speed as the media-player, but
transmitted via a specific UDP port. The audio is being requested from an App. The data
provided are in the RTP protocol.
2. There is the same audio played on a PC and outputted on the loudspeaker using a
standard media player, but delayed by a by few hundred milliseconds (say 100-3000msec)
There is a very simple android app (no fancy design necessary) with 2 interfaces
3. Audio Latency Measurement: An App is listening to audio from loud-speaker via
the Apps microphone.
a. At the same time, the App is requesting the audio data (via RTP) from the PC (UDP) port.
Note: The IP address of the PC has to be inserted manually into the App,
but then saved for the next use.
One button should be there to delete a previous IP address
b. Once the data on the PC are requested by the App, the Media player is starting on the
PC with a delayed of 100-3000 msec to play the same audio file on the loudspeaker.
(There is some easy way to set the delay-time outside the code – you can suggest how/where)
c. Using cross correlation, the audio latency between the audio from the loudspeaker
and the audio from the RTP audio stream is measured (in milliseconds).
More information on this algorithm can be found in
[login to view URL] ,
[login to view URL]
and using FFT: [login to view URL]
We need cross-correlation, because we want to detect NOT only the starting of the audio in the
loudspeaker, but to detect the latency, so other sound is playing before.
d. Once audio latency is determined, the Interface switches to the Audio Player interface.
4. Audio Player Interface: The Audio Player in the App is delaying the output of the
audio-stream by the measured latency amount and is then playing the RTP audio stream
using a standard audio player in the App.
Result: the audio from the loudspeaker and the app should be in sync.