1 votes

Comment tester la latence de ma sortie audio sur MacBook ?

J'essaie en ce moment de tester mon temps de réaction auditif à l'aide d'un script que j'ai écrit en ligne de commande (en utilisant la classique echo -ne '\007' bip).

J'obtiens des temps de réaction toujours supérieurs à 340 ms. Lorsque j'essaie ceci avec une invite visuelle ( echo go ) au lieu de cela, j'obtiens environ 280 ms.

Apparemment, le temps de réaction audio de l'homme devrait être plus rapide que le temps de réaction visuel (selon de nombreuses études publiées).

Bien sûr, il se peut que mon temps de réaction visuelle soit plus rapide, mais comment puis-je vérifier la latence de sortie audio de mon MacBook ?

2voto

Douglas Points 10417

Vous ne pouvez pas vraiment mesurer la latence "à travers" le système d'exploitation en raison des frais généraux de mise en file d'attente et de gestion des processus. Pour être "plus précis", vous devriez écrire un programme qui pourrait accéder directement au noyau afin d'évaluer le temps réel entre les événements - le bip et la pression sur le clavier.

Cependant, vous pouvez vous en rapprocher dans bash en utilisant la fonction time fonction. J'ai créé un bash basique script qui va demander à l'utilisateur d'appuyer sur Enter après avoir attendu l'émission d'un bip après une période aléatoire.

# generate a random number between 3 and 10 for seconds to wait for beep
t=$(( ( RANDOM % 10 ) + 3 ))

echo "When you hear the beep, press Enter!"
echo
echo

sleep $t

# beep the computer and get the time
time echo -ne '\007'

# wait for keypress and get the time
time read keypress 

Vous obtiendrez deux fois trois valeurs temporelles. Elles sont définies comme suit :

  • Real - le temps du début à la fin de l'appel mesuré si vous aviez un chronomètre en main. Ce temps tient compte de tous les processus en cours d'exécution à ce moment-là.
  • Utilisateur - il s'agit du temps passé dans le espace utilisateur en dehors du noyau et représente le temps réel passé par le CPU à exécuter la tâche.
  • Sys - c'est le temps passé à l'intérieur du noyau et est également le temps réel passé par le CPU.

Pour plus d'informations à ce sujet, voir Statistiques sur le temps de traitement réel, utilisateur et système .

Donc, par ordre de précision, Real est dans la fourchette, User est assez proche, et Sys est Des balles bien précises, en ce qui concerne l'unité centrale .

Exemple de sortie :

When you hear the beep, press Enter!

real    0m0.000s
user    0m0.000s
sys     0m0.000s

real    0m0.812s
user    0m0.000s
sys     0m0.000s

Dans l'exemple ci-dessus, le chronomètre de l'ordinateur indique que la latence est de 0,812 s entre le moment où j'ai entendu le bip et celui où j'ai appuyé sur la touche Entrée. La résolution de l'utilitaire de temps n'est pas assez granulaire pour mesurer le temps écoulé pour exécuter chaque commande, nous supposons donc que cela s'est produit "immédiatement".

Recommencer à le faire....

When you hear the beep, press Enter!

real    0m0.003s
user    0m0.001s
sys     0m0.002s

real    0m0.924s
user    0m0.001s
sys     0m0.002s

D'après celui-ci, nous pouvons voir qu'il y a eu des frais généraux qui ont fait que le processus a pris plus de temps. Si nous soustrayons les valeurs supérieures des valeurs inférieures, nous pouvons obtenir une estimation assez proche du temps écoulé.

Mais est-il exact assez de ?

Non. C'est pour cela que vous avez besoin d'un dispositif appelé un Audiomètre qui est une pièce construite spécialement pour matériel informatique qui mesure le temps entre les deux événements - le son et l'appui sur la touche. Il est beaucoup plus précis car il supprime les frais généraux de la gestion du CPU et vous donne un temps écoulé vraiment précis.

0voto

Jose Chavez Points 645

Tout d'abord, en utilisant echo -ne '\007' pour lire de l'audio n'est pas de l'audio à "faible latence". C'est-à-dire que cette commande en elle-même peut prendre un temps (relativement) long pour lire l'audio. Par conséquent, l'utiliser pour mesurer les temps de réponse en unités de millisecondes ne sera pas du tout précis.

Une façon de le mesurer serait d'utiliser un enregistreur audio d'une certaine sorte avec une faible latence connue, combiné à un autre type de sortie de l'ordinateur avec une faible latence connue. Si vous disposez de l'équipement nécessaire, vous pourriez par exemple utiliser un oscilloscope avec une entrée de déclenchement. En termes plus simples, vous pourriez utiliser un iPhone avec un enregistrement vidéo au ralenti. Faites ensuite en sorte que le programme déclenche la sortie (il peut s'agir d'une entrée/sortie numérique ou, plus simplement, de l'affichage d'un élément à l'écran), puis mesurez le temps qui s'écoule avant que vous ne voyiez le son dans le signal (sur l'oscilloscope ou dans la piste audio de l'enregistrement vidéo).

Il existe d'autres méthodes de mesure de la latence, mais celle mentionnée ci-dessus est un moyen simple d'obtenir une mesure suffisamment précise pour savoir si votre retard audio est réellement supérieur de 60 ms à votre retard visuel.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X