Résumé
Le codec VLR a été mis au point non seulement pour compresser très fortement les données audio, mais aussi pour minimiser la fréquence d'émission des trames audio.
On peut l'utiliser pour réduire considérablement les latences dans les communications vocales bidirectionnelles.
Enfin, on peut envisager de l'utiliser avec les réseaux de neurones, notamment avec l'apprentissage profond par renforcement.
Des systèmes d'alertes peuvent être mis en place pour la surveillance des signes vitaux.
On peut utiliser les données provenant de l'Internet des Objets (IoT, ou Internet of Things en Anglais).
Les besoins de stockages sont diminués, les calculs sont simplifiés, les prédictions et les aides à la décision sont facilitées.
Le Codec VLR
Le codec VLR a été mis au point non seulement pour compresser très fortement les données audio, mais aussi pour minimiser la fréquence d'émission des trames audio:
- Les trames audio similaires consécutives ne sont pas émises, le récepteur est autorisé à les répéter jusqu'à épuisement d'un crédit de répétitions.
- Une recherche en arrière peut être effectuée pour rechercher un trame similaire. Dans ce cas, en envoie juste un en-tête contenant un numéro pointant sur la trame similaire située en arrière.
- L'en-tête de chaque trame (complète ou incomplète) permet de connaître le nombre de trames non transmis.
Pour plus d'informations, voir aux adresses suivantes:
Algorithmes
VLB
Une implémentation existe dans le programme vlrPhone, en n'utilisant que le premier algorithme (non émission des trames audio similaires consécutives).
Dans cette implémentation, avec la version actuelle du programme, nous avons donné la priorité au taux de compression au dépend de la qualité et de la latence.
En changeant les paramètres (précisions des magnitudes et des phases, plus de points dans l'avant plan, ...), on peut augmenter la qualité et diminuer la latence pour certaines applications (comme les jeux) sans pour autant diminuer les taux de compression moyens.
En diminuant la taille des tampons FFT, on diminue les latences mais on diminue aussi les taux de compression instantanés.
Pour plus d'informations, voir à l'adresse suivante:
Page d'Ecoute
L'objectif de ce document est de signaler que les algorithmes de ce codec peuvent être aussi utilisés de manière satisfaisante en intelligence artificielle, notamment en apprentissage profond (deep learning en Anglais) avec les réseaux de neurones (neural network en Anglais), pour tous les signaux unidimensionnels (objets connectés, maintenance industrielle, signes vitaux, informations financières, ...).
Nous nous intéresserons en particulier aux problèmes de prédiction plutôt qu'aux problèmes d'actions à effectuer selon un état, les actions se limitant uniquement à prédire le type de trame qui va venir.
Généralités sur les Réseaux de Neurones
Un réseau de neurones artificiels, ou réseau neuronal artificiel, est un ensemble d'algorithmes dont la conception est à l'origine très schématiquement inspirée du fonctionnement des neurones biologiques, et qui par la suite s'est rapproché des méthodes statistiques.
Pour plus d'informations:
Réseau de Neurones Artificiels
Un réseau de neurones récurrents est un réseau de neurones artificiels présentant des connexions récurrentes.
Les réseaux de neurones récurrents sont adaptés pour des données d'entrée de taille variable. Ils conviennent en particulier pour l'analyse de séries temporelles.
Ils sont utilisés en reconnaissance automatique de la parole ou de l'écriture manuscrite - plus en général en reconnaissance de formes - ou encore en traduction automatique.
Pour plus d'informations:
Réseau de Neurones Récurrents
Les réseaux de neurones récurrents (RNN, ou Recurrent Neural Network en Anglais) peuvent être utilisés avec les codecs VLC en général en travaillant avec l'enveloppe spectrale: on génère des splines cubiques reliant les points ou les pics locaux, on choisit des points régulièrement espacés, comme si on avait une série temporelle.
L'apprentissage par renforcement fait référence à une classe de problèmes d'apprentissage automatique, dont le but est d'apprendre, à partir d'expériences, ce qu'il convient de faire en différentes situations, de façon à optimiser une récompense quantitative au cours du temps.
Formellement, la base du modèle d'apprentissage par renforcement consiste en:
- un ensemble d'états S de l'agent dans l'environnement;
- un ensemble d'actions A que l'agent peut effectuer;
- Un ensemble de valeurs scalaires "récompenses" R que l'agent peut obtenir.
Pour plus d'informations:
Apprentissage par Renforcement
L'apprentissage par différence temporelle (TD Learning ou Temporal Difference Learning en Anglais) est une méthode d'apprentissage automatique basée sur la prédiction.
Il a été principalement utilisé pour le problème d'apprentissage par renforcement, et est dit être une combinaison d'idées de Monte Carlo et d'idées de programmation dynamique (DP ou Dynamic Programming en Anglais).
Il est bien adapté pour résoudre les problèmes de prédiction actualisée à horizon infini.
Il est très souvent lié à la théorie des processus de décision markoviens.
Pour plus d'informations (en Anglais):
Apprentissage par Différence Temporelle
Plus récemment, des résultats très convaincants ont été obtenus avec le projet Alpha GO Zéro par rapport au projet Alpha GO initial, en ne faisant intervenir que des cases noires et blanches au lieu des vecteurs de caractéristiques (features).
Pour plus d'informations (en Anglais):
Alpha GO Zero
Les Algorithmes du Codec VLR et les Réseaux de Neurones
L'unité dans le temps est une trame FFT complète (Fast Fourier Transform en Anglais).
L'objectif est de faire des prédictions à court terme, à moyen terme et à long terme, avec des réajustements automatiques, au fur et à mesure que les trames sont reçues.
A tout instant t, avant la réception d'une trame, le système doit dire si la trame qui arrive est une nouvelle trame (valeur 0), est identique à la précédente (valeur 1), ou est identique à une trame située en arrière à la position k.
Si les prévisions sont exactes, le système reçoit un récompense R, sinon il reçoit une pénalité P. La récompense R pourra varier en fonction de k.
L'état est représenté par l'énergie de la trame, qui peut être transmise via l'entête de la trame ou calculée à partir d'une trame complète reçue. L'énergie pourra être en dB ou en niveaux (par exemple niveaux bas, moyen ou élevé).
Avec ce système, les prédictions sont faites à l'aide de la méthode de la différence temporelle.
Pour les prédictions:
- La trame courante est identique à la précédente, le système répète la dernière trame.
- La trame courante est située à la position k, le système répète la trame située à la position k.
- Une nouvelle trame est reçue, le système insère une trame nulle, ou mieux il répète la dernière trame dans la limite du crédit de répétitions.
A la réception (ou à la non réception) d'une trame, le système est capable de mettre à jour ses états, ses récompenses ou ses pénalités, ainsi que ses données.
Pour les ajustements des données:
- Trame identique à la précédente, le système répète la dernière trame.
- Trame située à la position k, le système répète la trame située à la position k.
- Nouvelle trame, le système insère la trame reçue.
L'Internet des Objets
Avec l'Internet des objets, il y a des capteurs et des actionneurs.
Un robot a plusieurs capteurs, par exemple: des odomètres, des caméras, des capteurs de proximité, des capteurs de pression, des scanners laser, etc.
De même, une maison a également des capteurs tels que des thermomètres, des compteurs électriques, des caméras de sécurité, des détecteurs de fumée, des microphones, etc.
Dans une maison, les actionneurs peuvent être: des interrupteurs d'éclairage, des stores, des mouvements de caméra, des alarmes incendie, des serrures, etc.
Les applications possibles concernent la consommation d'énergie, les services d'information personnalisés, les applications de contrôle adaptatives pour l'utilisateur, etc.
Pour prendre en compte ces cas complexes, il faut passer en multicanal hétérogène. Chaque canal contient les données d'un capteur ou d'un actionneur.
Les récompenses et les pénalités peuvent concerner une seule cible (par exemple la température ou la consommation électrique).
Il faut travailler avec des états prenant en compte deux ou quelques canaux importants pour le problème à traiter (par exemple une cible et un ou plusieurs actionneurs).
Notes
- Un recouvrement de trames de 50% ou moins est nécessaire pour éviter les effets de bord.
- Dans le domaine des fréquences, les signaux quasi-stationnaires sont caractérisés par un taux élevé de répétitions successives et un bon taux de répétitions non successives. Les autres sont caractérisés par un faible taux de répétitions successive et un taux moyen ou faible de répétitions non successives.
- On pourra commencer par entraîner le système avant de passer en mode direct pour qu'il y ait le moins de nouvelles trames possibles.
- Ce système pourra être utilisé en détecteur d'anomalies, s'il se comporte bien pour les cas normaux. Dans ce cas, il y a entraînement du système sans ajustements de données.
- L'état est représenté par l'énergie de la trame (en dB ou en niveaux). On pourra modifier cette énergie pour avoir un état différent pour chaque nombre de répétitions passées, avec une limite.
- On pourra aussi travailler avec des états prenant en compte l'énergie de la dérivée première de la trame, et / ou de la dérivée seconde de la trame. Dans le domaine des fréquences, la dérivation se fait facilement.
- Les actionneurs peuvent être des signaux quelconques permettant de simuler, notamment, des actions discrètes ou continues.
- En utilisant les codecs VLC et VLR (y compris les versions avec Codebook), on peut non seulement caractériser l'émotion à un instant donné, mais aussi prévoir son évolution en fonction de diverses interactions appliquées. Ces fonctionnalités sont très utiles, notamment pour rendre les Chatbots sensibles à l'émotion.
- L'utilisation des codecs VLC et VLR pour caractériser et prévoir l'évolution de l'émotion fera l'objet d'un article séparé et complet.
- L'étude des demandes de brevet concernant les algorithmes de VLR 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.