Meilleure annulation de l'écho natif

Nous poursuivons l'expérience précédente. Dans Chrome M68, nous avons ajouté une contrainte MediaStreamTrack expérimentale pour contrôler l'annulation de l'écho utilisé, ajouté la prise en charge d'un annulateur d'écho natif sous Windows et amélioré la fonctionnalité de l'annulation d'écho natif sous macOS. Comme précédemment, tout cela est basé sur une phase d'évaluation. Vous devez donc vous inscrire ou démarrer Chrome avec un indicateur de ligne de commande si vous souhaitez l'essayer. Pour en savoir plus, consultez les informations ci-dessous.

Nouveautés

Tout d'abord, il est maintenant possible de contrôler l'annulation d'écho utilisé en incluant une nouvelle contrainte dans vos appels getUserMedia, par exemple:

echoCancellationType: type

type peut être l'une des valeurs suivantes:

  • browser pour utiliser l'implémentation logicielle fournie par le navigateur ; ou
  • system pour utiliser l'implémentation fournie par le système sous-jacent. Il s'agit actuellement de l'une des implémentations sur macOS et Windows.

Si vous ne définissez pas de contrainte, Chrome sélectionne l'option d'annulation de l'écho comme d'habitude: en cas d'annulation de l'écho matériel, elle est utilisée. Sinon, l'option d'annulation de l'écho logiciel de Chrome l'est. Si vous ne spécifiez pas la contrainte, Chrome ne choisira jamais l'un des deux systèmes d'annulation d'écho expérimentaux inclus dans cet essai.

Comme echoCancellationType fonctionne comme n'importe quelle autre contrainte, vous pouvez spécifier system comme valeur idéale et demander à Chrome de l'utiliser si elle est disponible, ou de passer à la valeur browser dans le cas contraire. Le type d'annulation d'abonnement browser est toujours disponible dans Chrome. Pour déterminer quel système d'annulation d'écho a été sélectionné, vous pouvez appeler getSettings() sur la piste audio getUserMedia et vérifier la valeur du champ echoCancellationType.

Enfin, vous pouvez vérifier quels annulations d'écho sont disponibles pour un MediaStreamTrack en appelant getCapabilities() sur celui-ci. Toutefois, echoCancellationType n'est pas encore implémenté pour InputDeviceInfo.

Prise en charge de l’annulation de l’écho Windows

Nous avons étendu la prise en charge native de l'annulation d'écho pour inclure Windows à l'aide du composant Voice Capture DSP. Comme pour l'annulation de l'écho de macOS, nous voulons évaluer ses performances et déterminer s'il existe des cas où il fonctionne mieux que notre solution logicielle, ne serait-ce que pour être placé plus près du matériel audio. Contrairement à ce qui se passe avec macOS, nos premiers tests sur Windows n'ont pas été très prometteurs. Nous allons continuer à ajuster l'implémentation pour voir si nous pouvons l'améliorer. Pour l'instant, il est probablement préférable d'éviter de tester l'annulation de l'écho de Windows à plus grande échelle. Essayez-la dans des paramètres contrôlés, par exemple sur votre machine locale, mais ne vous attendez pas à ce qu'elle fonctionne parfaitement.

Amélioration de la prise en charge de l'annulation de l'écho sous macOS

Lors de l'expérience précédente, l'implémentation de macOS n'était pas en mesure de suivre correctement le périphérique de sortie utilisé. Cela signifiait qu'il était impossible d'annuler l'écho provenant d'un appareil qui n'était pas l'appareil par défaut de l'ordinateur. Dans de nombreux cas, cela peut ne pas être un problème, car macOS peut changer automatiquement de périphérique par défaut lorsque les casques, etc., sont branchés ou débranchés. Cependant, cela ne fonctionnerait pas correctement dans tous les cas.

Cette fonctionnalité a été ajoutée à Chrome M68 et est implémentée à la fois pour macOS et Windows echo canceller. L'annulation de l'écho du logiciel de Chrome n'est pas affectée par ce manque de fonctionnalité, car il utilise un bouclage interne pour annuler l'enregistrement audio du lecteur.

Activer le test

Pour bénéficier de ce nouveau comportement sur votre site, vous devez vous inscrire à la phase d'évaluation "Prise en charge expérimentale de AEC natif". Si vous souhaitez simplement l'essayer en local, vous pouvez l'activer sur la ligne de commande:

chrome --enable-blink-features=ExperimentalHardwareEchoCancellation

La transmission de cet indicateur sur la ligne de commande rend la nouvelle contrainte echoCancellationType disponible dans le monde entier dans Chrome pour la session en cours. À l'aide de cette contrainte, vous pouvez ensuite tester les annulateurs d'écho natifs dans votre application, comme décrit ci-dessus. Il s'agit du même indicateur de ligne de commande que dans l'essai précédent. Sur Chrome M68, il activera la nouvelle fonctionnalité. L'activation de la nouvelle phase d'évaluation n'active que la nouvelle fonctionnalité. Elle ne déclenche pas l'essai précédent dans les anciennes versions de Chrome.

Envoyer des commentaires

Comme pour l'expérience précédente, nous nous intéressons aux performances qualitatives des annulateurs d'écho macOS et Windows, principalement les premiers. Nous aimerions également obtenir des commentaires sur le fonctionnement pratique de la nouvelle contrainte echoCancellationType, sa facilité d'utilisation, etc. Cela inclut son inclusion dans getSettings et getCapabilities.

Nous souhaitons également savoir comment Chrome interagit avec d'autres applications lors de l'utilisation de ces annulateurs d'écho natifs, ainsi que les problèmes de stabilité ou d'implémentation.

Si vous essayez ceci, veuillez nous faire part de vos commentaires dans ce bug. Si possible, indiquez le matériel utilisé (version du système d'exploitation, modèle du matériel, micro, casque, etc.). Si vous effectuez des tests à plus grande échelle, nous vous encourageons à ajouter des liens vers des statistiques comparatives sur la qualité des appels audio, qu'ils soient objectifs ou subjectifs.