Probé tres métodos para reproducir/generar audio en una Mac y en dispositivos Android. Los tres métodos son
<audio> ), Los métodos 1 y 2 tienen una latencia considerable (es decir, el tiempo entre la llamada para reproducir y el audio perceptible) antes de que puedan escucharse en mis dispositivos Android (aunque uno de los dispositivos parece tener menos latencia que el otro). No se puede percibir latencia en mi Mac.
El método 3 no parece tener ninguna latencia.
La latencia del Método 2, WebAudio API, se puede mitigar restando una latencia de salida calculada del tiempo de inicio deseado. La fórmula es:
outputLatency = audioContext.currentTime - audioContext.getOutputTimestamp().contextTime .
Elimina más o menos la latencia de uno de mis dispositivos Android, pero no del otro.
La mejora que vi después de usar la fórmula anterior es la razón principal por la que sospeché que el problema era la latencia de salida.
Según mi investigación, la latencia de salida tiene que ver, al menos en parte, con el hardware, por lo que WebSpeech no se ve afectado en absoluto, en mi opinión, no tiene mucho sentido.
¿Lo que estoy observando aquí es latencia de salida?
En caso afirmativo, ¿por qué WebSpeech no se ve afectado por esto?
Si no, ¿de dónde viene la latencia?