Synchronizing sound from different devices over a TCP network
J. M. Montoya Oliver · 2014
Nowadays, we can send audio on the Internet for multiples uses like telephony, broadcast audio or teleconferencing. The issue comes when you need to synchronize the sound from different sources because the network where we are going to work could lose packets and introduce delay in the delivery. This can also come because the sound cards could be work in different speeds. In this project, we will work with two computers emitting sound (one will simulate the left channel (mono) of a stereo signal, and the other the right channel) and connected with a third computer by a TCP network. The last computer must get the sound from both computers and reproduce it in a speaker properly (without delay). So, basically, the main goal of the project is to synchronize multi-track sound over a network. TCP networks introduce latency into data transfers. Streaming audio suffers from two problems: a delay and an offset between the channels. This project explores the causes of latency, investigates the affect of the inter-channel offset and proposes a solution to synchronize the received channels. In conclusion, a good synchronization of the sound is required in a time when several audio applications are being developed. When two devices are ready to send audio over a network, this multi-track sound will arrive at the third computer with an offset giving a negative effect to the listener. This project has dealt with this offset achieving a good synchronization of the multitrack sound getting a good effect on the listener. This was achieved thanks to the division of the project into several steps having constantly a good vision of the problem, a good scalability and having controlled the latency at all times. As we can see in the chapter 4 of the project, a lack of synchronization over c. 100μs is audible to the listener. RESUMEN. A dia de hoy, podemos transmitir audio a traves de Internet por varios motivos como pueden ser: una llamada telefonica, una emision de audio o una teleconferencia. El problema viene cuando necesitas sincronizar ese sonido producido por los diferentes origenes ya que la red a la que nos vamos a conectar puede perder los paquetes y/o introducir un retardo en las entregas de los mismos. Asi mismo, estos retardos tambien pueden venir producidos por las diferentes velocidades a las que trabajan las tarjetas de sonido de cada dispositivo. En este proyecto, se ha trabajado con dos ordenadores emitiendo sonido de manera intermitente (uno se encargara de simular el canal izquierdo (mono) de la senal estereo emitida, y el otro del canal derecho), estando conectados a traves de una red TCP a un tercer ordenador, el cual debe recibir el sonido y reproducirlo en unos altavoces adecuadamente y sin retardo (debera juntar los dos canales y reproducirlo como si de estereo de tratara). Asi, el objetivo principal de este proyecto es el de encontrar la manera de sincronizar el sonido producido por los dos ordenadores y escuchar el conjunto en unos altavoces finales. Las redes TCP introducen latencia en la transferencia de datos. El streaming de audio emitido a traves de una red de este tipo puede sufrir dos grandes contratiempos: retardo y offset, los dos existentes en las comunicaciones entre ambos canales. Este proyecto se centra en las causas de ese retardo, investiga el efecto que provoca el offset entre ambos canales y propone una solucion para sincronizar los canales en el dispositivo receptor. Para terminar, una buena sincronizacion del sonido es requerida en una epoca donde las aplicaciones de audio se estan desarrollando continuamente. Cuando los dos dispositivos esten preparados para enviar audio a traves de la red, la senal de sonido multi-canal llegara al tercer ordenador con un offset anadido, por lo que resultara en una mala experiencia en la escucha final. En este proyecto se ha tenido que lidiar con ese offset mencionado anteriormente y se ha conseguido una buena sincronizacion del sonido multi-canal obteniendo un buen efecto en la escucha final. Esto ha sido posible gracias a una division del proyecto en diversas etapas que proporcionaban la facilidad de poder solucionar los errores en cada paso dando una importante vision del problema y teniendo controlada la latencia en todo momento. Como se puede ver en el capitulo 4 del proyecto, la falta de sincronizacion sobre una diferencia de 100μs entre dos canales (offset) empieza a ser audible en la escucha final.