Flux de sélection des périphériques Alta Call
Alta Call et nos services web travaillent ensemble pour garantir que les meilleurs périphériques audio (capture et lecture) sont utilisés par Alta Call à tout moment.
Cette logique est assez complexe, en particulier pour les périphériques de capture, car nous devons gérer les contraintes suivantes :
- Les utilisateurs ne devraient pas avoir à se soucier des périphériques audio pour utiliser Alta Call
- Les utilisateurs devraient pouvoir sélectionner explicitement les périphériques audio lorsqu'ils en ont besoin
La sélection manuelle des périphériques peut se faire à deux endroits :
- L'interface utilisateur d'Alta Call
- L'Espace Client d'Alta Call
Périphérique de lecture
La sélection du périphérique de lecture est la partie la plus facile car il devrait toujours être VoiceMeeter Output. Voici comment notre API garantit que le périphérique de lecture approprié est sélectionné :
Périphérique de capture
La sélection d'un périphérique de capture adéquat est beaucoup plus difficile car :
- Nous devons prendre en charge n'importe quel périphérique audio
- Les périphériques audio ont des noms incohérents et instables :
Microphone sur casque (3- Jabra EVOLVE)peut devenirMicrophone sur casque (12- Jabra EVOLVE)lorsqu'il est débranché et rebranché - Les périphériques physiques et virtuels peuvent être détectés et disponibles à différents moments
- Les périphériques ont des priorités différentes : un casque externe devrait prendre le pas sur un microphone interne, car il est censé fournir une bien meilleure qualité audio
- Certains périphériques doivent être complètement évités, en particulier les périphériques virtuels
CableetVoiceMeeter Output - Si un périphérique est sélectionné manuellement, nous ne voulons pas remplacer le choix de l'utilisateur
- Si un périphérique disparaît ou est débranché, un autre devrait être immédiatement sélectionné pour le remplacer
Comme la logique pour gérer toutes ces contraintes est assez complexe, elle se produit côté serveur. À intervalles réguliers, Alta Call envoie une liste des périphériques disponibles via un appel POST /telemetry. De plus, Alta Call enverra également un appel POST /event lorsque :
- Un périphérique est branché
- Un périphérique est débranché
L'ensemble du flux peut être représenté comme suit :
La logique pour sélectionner le meilleur périphérique possible à partir d'une liste de candidats est implémentée dans le backend Laravel au sein de la classe App\Services\DeviceSelector (méthode getProperDevice). Elle est ensuite orchestrée par le service AudioDeviceService lors du traitement des télémétries.