Publicado por el equipo de ingeniería de Smule: David Gayle, Chris Manchester, Mark Gills, Trayko Traykov, Randal Leistikow, Mariya Ivanova.
resumen
Siendo la aplicación de canto más descargada de todos los tiempos, Smule Inc. ha invertido en Android para mejorar la calidad general del audio y, en particular, para reducir la latencia, es decir, permitir que los cantantes escuchen su voz en los auriculares mientras actúan. Los equipos especializados en audio y video han dedicado una parte importante de 2021 a realizar los cambios necesarios para actualizar la aplicación Smule, utilizada por más de diez millones de usuarios de Android, desde el uso de la API de audio OpenSL a la conversión de la biblioteca de audio Oboe, lo que permitió un aumento de alrededor del 10% y más tasa de finalización de captura.
Introducción
Smule Inc. es líder en el espacio de karaoke con una aplicación que ayuda a millones de personas a cantar sus canciones favoritas y compartir presentaciones todos los días. La aplicación Smule va más allá del karaoke tradicional al centrarse en la creación conjunta, ofreciendo a los usuarios una oportunidad única de compartir música y colaborar con amigos, otros cantantes en la plataforma y sus músicos favoritos. La calidad del audio es primordial y, en 2020, el equipo de Smule vio potencial para mejorar la experiencia en Android.
La implementación más antigua de OpenSL de Smule no era adecuada para aprovechar el hardware ultrarrápido de los nuevos dispositivos mientras admitía los diversos dispositivos en el mercado global. El equipo de desarrollo de Smule descubrió que actualizar el sistema de audio era una mejora necesaria y lógica.
Estrategia de introducción del oboe
Smule se enfrentó a dos posibles vías de mejora: directamente a AAudio, una API de audio de Android C de alto rendimiento introducida en Android O y diseñada para aplicaciones que requieren baja latencia, o a Oboe, que admite envolturas internas de AAudio y OpenSL. Después de una cuidadosa consideración, el equipo de desarrollo de Smule eligió el código base fácil de usar de Oboe, la amplia compatibilidad con dispositivos y el sólido soporte de la comunidad, logrando la latencia más baja y aprovechando al máximo el audio nativo disponible.
El paso al oboe representó un importante desarrollo arquitectónico y tecnológico. Como resultado, Smule abordó el proceso de implementación de manera conservadora, con un lanzamiento planificado y por etapas que comenzó con una pequeña selección de modelos de dispositivos para validar la calidad. Semana a semana, el equipo activó más dispositivos (con un número limitado de dispositivos que tenían problemas en Oboe y se revirtieron a OpenSL). Este enfoque incremental y metódico ayudó a mitigar el riesgo y permitió al equipo de ingeniería abordar los problemas específicos del dispositivo a medida que surgían.
Mejora de la calidad de audio
Smule cambió a Oboe para mejorar la experiencia de la aplicación. Esperaban reducir drásticamente las fallas en la reproducción de audio, eliminar problemas como el eco y el crujido durante la grabación y reducir la latencia del audio. Un artículo reciente en el blog de desarrolladores de Android muestra que la latencia promedio de los veinte dispositivos más populares que ejecutan Oboe se redujo de 109 ms en 2017 a 39 ms en la actualidad. Si bien un retraso de monitoreo de 109 ms se puede escuchar como un eco claro que interfiere con las voces en vivo, 39 ms está por debajo del umbral aceptable para aplicaciones en tiempo real. Las latencias de los mejores dispositivos de hoy en día están dentro de los 22 ms entre sí, y esa consistencia es una gran ventaja.
El aumento en la tasa de finalización de las grabaciones que Smule ha visto al usar Oboe probablemente se deba a esta latencia más baja, lo que permite a los cantantes escuchar sus voces en los auriculares mientras tocan con los efectos de audio premium de Smule, pero sin eco.
Aprovechando un portal colaborativo efectivo de GitHub dedicado a Oboe, el equipo de Google desempeñó un papel importante en la integración de Oboe de Smule, brindándoles información clave y soporte. Trabajando juntos, los dos equipos pudieron lanzar la mayor implementación de Oboe hasta la fecha, llegando a millones de usuarios activos. El equipo de Smule ayudó a resolver algunos problemas con el código de Oboe y el equipo de Google se coordinó con fabricantes de dispositivos móviles específicos para mejorar aún más la compatibilidad de Oboe.
La calidad del audio es de suma importancia para nuestra comunidad de cantantes, y estamos agradecidos por nuestro compromiso compartido de brindar la mejor experiencia posible y fomentar la creación musical en Smule. – Eric Dumas, CTO de Smule.
Dada la magnitud de la operación, era natural enfrentar problemas específicos del dispositivo. Un ejemplo notable fue una función integrada del sistema operativo que inyectaba efectos de sonido de eco en la transmisión de audio sin procesar, lo que impedía que Smule aplicara correctamente sus propios filtros de audio y algoritmos DSP patentados. El equipo de Google acudió al rescate y proporcionó actualizaciones y parches ultrarrápidos a la biblioteca. El proceso para informar los problemas de Oboe fue sencillo, bien definido y el equipo de Google lo manejó de manera oportuna.
Smule ha superado juntos otros obstáculos específicos del dispositivo, incluidos errores con conjuntos de chips específicos. Por ejemplo, cuando Oboe solicitó una entrada de micrófono mono, algunos dispositivos proporcionaron entradas estéreo que se mezclaron en una entrada de micrófono mono falsa. Smule creó un ticket en GitHub de Oboe, proporcionó ejemplos y reprodujo el problema con la aplicación Oboe Tester.
Desarrollada por Google, la aplicación Oboe Tester fue una herramienta útil para resolver e identificar problemas durante la implementación. Resultó particularmente útil al probar muchas funciones de Oboe, AAudio y OpenSL ES, así como al probar dispositivos Android, medir la latencia y la interferencia, y mucho más. La aplicación ofrece una variedad de funciones que le permiten simular casi cualquier configuración de audio. El probador de Oboe también se puede usar para pruebas automatizadas al iniciarlo desde un script de shell con una intención de Android. Smule se basó en gran medida en las pruebas de automatización dada la gran cantidad de dispositivos cubiertos por la integración.
Una vez que Smule estuvo satisfecho de que los problemas específicos del dispositivo se resolvieron y el audio del oboe era lo suficientemente estable, Smule cambió a un enfoque de implementación de prueba dividida más amplio. En solo unas pocas semanas, Smule aumentó la población que usaba Oboe del 10 % al 100 % de los dispositivos exitosos, lo que solo fue posible gracias a los comentarios positivos y las métricas de KPI verdes que Oboe recibió continuamente durante el proceso de lanzamiento.
los resultados hablan por si mismos. Los usuarios de Smule en oboe cantan más, es tan simple como eso. Grabaciones únicas de karaoke y actuaciones conjuntas o dúos potenciados por múltiplos. 8,07%, Las subidas únicas aumentaron un 3,84 % y las interpretaciones de canciones se completaron con 4,10% más. Smule observó un aumento de más del 10 % en la tasa de finalización de las grabaciones en el tercer y cuarto trimestre de 2021.
Con la herramienta Firebase Crashlytics de Google, Smule ha visto una disminución en los bloqueos relacionados con el audio desde el lanzamiento completo de Oboe, lo que hace que la aplicación sea más estable, incluso en dispositivos de gama baja. El dedicado equipo de atención al cliente de Smule estaba encantado con una 33% Reducción de las quejas relacionadas con el audio, incluidos problemas como la voz y el eco del robot (no intencional).
La decisión de cambiar al oboe ha valido la pena. La aplicación funciona mejor que nunca y Smule está bien equipado para manejar más avances de audio y hardware con la tecnología actualizada. Lo más importante es que los usuarios de Smule son felices y hacen música, de eso se trata.