VLB et Audio Haute Qualité

Ces informations sont écrites à l’intention des investisseurs, des développeurs et des décideurs.

Nous rappelons l’algorithme que nous allons utiliser pour avoir un codec vocal à faible débit, à faible consommation et à faible radiation pour les téléphones portables (VLR):

Il faut choisir un nombre C de crédit de répétitions.
Le récepteur a le droit de répéter C fois la trame tant qu'il ne reçoit pas une autre trame contenant le reste du crédit de répétitions à annuler.
- Si le crédit de répétitions est épuisé, l'émetteur envoie la trame courante avec un reste de crédit à annuler de zéro.
- Si le crédit n'est pas épuisé, l'émetteur compare la trame courante avec la trame précédente :
- Si les deux trames sont identiques ou presque identiques (un indice de similarité est à définir du côté de l'émetteur), l'émetteur n'envoie rien.
- Si les deux trames sont différentes, l'émetteur envoie la trame courante avec un nombre indiquant le reste du crédit à annuler.

Voir :
   http://www.whmsoft.com/projects/algorithms_fr.html

Cet algorithme peut être utilisé dans le cas général (voix et musique) et pour toutes les méthodes de compression audio utilisant totalement ou partiellement (pour la comparaison) le domaine des fréquences (FFT, MDCT, ...) et résolvant le problème des effets de bord (généralement par recouvrement de trames).
Cet algorithme permet de gérer la resynchronisation au niveau du codec. Le récepteur sait après chaque réception de trame s'il y a eu des paquets perdus.

Pour les redondances non successives et avec des supports sûrs (fichiers, réseaux locaux, TCP/IP, ...), on peut conserver les dernières trames en mémoire et comparer la trame courante à une trame située en arrière. Au lieu d’envoyer toute la trame, on envoie un indice k pour indiquer que la trame courante est similaire à la trame située en arrière à la position k. On peut choisir une valeur maximum de k en fonction du cas à traiter, sachant qu’une valeur de 255 ne nécessite qu’un octet d’en-tête à envoyer au lieu de plusieurs dizaines voire plusieurs centaines d’octets.
S'il y a assez de mémoire, on peut augmenter considérablement cette valeur (jusqu'à 65535 par exemple) et trouver rapidement l'indice à envoyer (2 octets) grâce à des techniques de recherches accélérées (programmation GPU par exemple, avec des calculs de distances et des tris en parallèle).
En audio multicanal, on peut sauvegarder les dernières trames d'un seul canal (par exemple le canal gauche), et effectuer des recherches du plus proche voisin pour tous les canaux, en parallèle.

Ces algorithmes sont surtout utiles pour les petits tampons FFT, les silences, les parties stationnaires et les tampons redondants.

Cette méthode (prise en compte des redondances non successives), ajoutée à la précédente (prise en compte des redondances successives), et ajoutée à la compression sans perte, sera appelée VLB (very low bandwidth) dans ce document.

La méthode VLB peut être appliquée au codec WHM Music (voir le produit WhMic http://www.whmsoft.com). Ce codec utilise les plus grands points (avant-plan), les bandes les plus énergétiques (arrière-plan), les magnitudes et les phases, et un recouvrement de trames de 50% ou moins. Les bandes de l'arrière plan, prises séparément, peuvent être codées en parallèle.
Pour l'avant-plan, on peut utiliser directement les amplitudes des sinus et les amplitudes des cosinus au lieu des phases. Pour l'arrière-plan, on utilise uniquement les magnitudes et le signe des phases.
Ce codec n’utilise que FFT et est très rapide surtout si on prend tous les points de l’arrière plan. On peut obtenir une très grande qualité en augmentant la précision des magnitudes, surtout pour les points de l’avant plan. Ce codec pourra être utilisé pour les fréquences d’échantillonnage de 44 kHZ, 48 kHz, 96 kHz et 192 kHz, avec des échantillons de 16 bits ou de 24 bits.

Il faut souligner qu’avec la méthode VLB, la décompression reste particulièrement très rapide et nécessite très peu de calculs.
Il faut souligner aussi que le fait de ne pas émettre les trames similaires successives diminue la part des en-têtes ajoutés par les protocoles de transmission.
Il faut souligner enfin que ce codec étant basé sur FFT, il peut être accéléré avec le support du processeur graphique (GPU, Graphics Processing Unit en Anglais) et comporter un nombre très important de canaux simultanés.

La méthode VLB peut servir à avoir un son de grande qualité avec une consommation de bande passante très faible. Elle peut être utile par exemple pour :
   - Les baladeurs musicaux.
   - Les autocommutateurs téléphoniques privés utilisant IP (IP PBX).
Mais aussi, avec des supports sûrs ou en enlevant les références aux trames antérieures:
   - La diffusion audio.
   - Les serveurs de communications vocales (pour les jeux en réseau).


Bases de Données Générées à l'Avance

Si on peut analyser les données à l'avance (fichiers sur des supports physiques ou en streaming par exemple), on peut combiner les algorithmes de VLB et les algorithmes de la version Codebook.
Dans ce cas, il n'y a pas besoin de recherche en arrière ou de compression supplémentaire sans perte. On continue à ne pas émettre les trames similaires successives.
Pour plus d'information sur la version Codebook, voir à l'adresse suivante:
   Version Codebook

Cette base de données peut contenir des enregistrements compressés et / ou les enregistrements WAVE ayant servi à générer les bases. Dans ce dernier cas, il n'y a même plus besoin de faire de iFFT (inverse FFT), il suffit d'appliquer les recouvrements.
Les enregistrements de la base sont numérotés, il n'y a aucun doublon, l'indice de similarité utilisé permet de régler la qualité.
Les indices de similarité sont calculés avec uniquement les magnitudes. L'utilisation de FFT permet de compresser fortement sans déformer en profitant de l'invariance des magnitudes aux décalages (décalages ou shifts globaux, inclus dans les phases).
Dans le cas de deux trames similaires, pour distinguer de simples décalages des autres cas (phases réellement différentes), on peut utiliser des indices de similarité secondaires basés sur les corrélations croisées (cross-correlation en Anglais).
Les corrélations croisées mesurent la similitude entre deux signaux, donc, donnent des mesures très précises permettant d'éviter ces collisions.

Avant le début des lectures, on charge ou on télécharge la base pré-générée nécessaire.
Avec juste un entier à lire ou à recevoir, on peut obtenir une qualité proche de l'original, avec de très bas débits.


Notes

- Les algorithmes de la méthode VLB sont à l'étude en France (INPI).
- Nouveau: L'étude des demandes de brevet concernant les algorithmes de VLB et les versions avec Codebook est terminée à l'INPI (France). Les deux brevets seront délivrés en Février ou Mars 2018 au plus tard.

Contacts et Commentaires :
   support@whmsoft.com