Archives de catégorie : module: audio et langage

Machine Learning: Biblio et TP Perceptron

Bibliographie

Lire ces deux chapitres d’un cours de machine learning de l’université de Stanford (orienté pour la classification d’images mais beaucoup d’idées restent les mêmes pour d’autres types de données) :
http://cs231n.github.io/classification/
http://cs231n.github.io/linear-classify/
Il faut surtout comprendre et arriver à bien distinguer les notions suivantes : « features » (caractéristiques), « labels » (classes), « feature extraction », familles de classifieurs (k-nn, arbre décisionnel, modèles linéaires, etc), « loss function » (fonction de coût), « hyperparameters » (hyperparamètres), « cross validation » (validation croisée). N’hésitez pas à compléter avec des recherches personnelles (cours/tuto en ligne, wikipedia, etc).

TP sur le Perceptron

Le TP/tuto sur le perceptron est disponible à cette adresse :
http://nbviewer.jupyter.org/github/kgourgou/Linear-Perceptron/blob/master/Perceptron-Algorithm.ipynb
(format notebook avec plusieurs cellules de code)
Vous devez comprendre chaque étape du tuto et reproduire les figures vous-même. Il n’y a pas de questions ni de rapport à rendre.

Conseils/Debug

– Pour ceux n’ayant pas d’installation de python, je recommande d’installer la distribution Anaconda Python 2.7 (dispo ici : https://www.continuum.io/downloads )
– installer le package python « seaborn »
– copier/coller chaque cellule de code les unes à la suite des autres dans un script python (.py)
– dans la 1ere cellule, effacer la ligne « %matplotlib inline » (qui n’est utile que si vous utilisez un notebook au lieu d’un script .py)
– pour visualiser la figure produite par une cellule de code, ajouter la ligne « pl.show() » à la fin de la cellule
– pour les utilisateurs de python 3 qui ont une erreur avec « xrange », utiliser « range » à la place


Mastane ACHAB (mastane.achab_at_telecom-paristech.fr)

Module : Synthèse sonore

Contact : Roland Badeau (roland.badeautelecom-paristech.fr)

Descriptif
La synthèse sonore regroupe l’ensemble des procédés et algorithmes destinés à produire des sons musicaux. Ces procédés sont utiles notamment pour mettre en son des morceaux de musique décrits de manière symbolique (partition, format MIDI, format textuel). Ils peuvent être différenciés selon qu’ils sont fondés,

1-sur un modèle de signal : on construit des formes d’onde qui sont ensuite utilisées pour fabriquer le son. Exemples :

  • synthèse additive : le son est reconstruit en additionnant des composantes élémentaires comme des partiels (composantes sinusoïdales) d’un son de cloche ;
  • synthèse granulaire : c’est un cas particulier de synthèse additive mais cette fois les formes élémentaires sont localisées en temps et en fréquence (sinusoïdes modulées en amplitude par des courbes en cloche) ;
  • synthèse à table d’onde (dite également « par échantillonnage ») : le son est reconstruit par rééchellonnage en temps et/ou fréquence de formes d’onde élémentaires contenues en mémoire ;

2- sur un modèle de production : on choisit les paramètres d’un modèle mettant en relation des éléments sources et des opérateurs. Exemples :

  • synthèse par modulation de fréquence (FM) : on connecte des opérateurs élémentaires tels que oscillateurs, additionneurs, gains et tables de lecture pour produire le son. La cascade de deux oscillateurs sinusoïdaux produit une configuration élémentaire de synthèse FM;
  •  synthèse source/filtre ;

3- sur la discrétisation d’un modèle physique de fonctionnement d’un instrument. Cette synthèse, dite par modèle physique, vise à reproduire le comportement réel de l’instrument via une description mathématique en terme de source, d’équations d’évolution (ou de propagation) et de conditions aux limites.

  • synthèse par discrétisation des équations de propagation (différences finies ou éléments finis), description physique de l’interaction avec la source et simulation du rayonnement acoustique ;
  • synthèse par lignes de transmission : adaptées aux propagations mono-dimensionnelles comme les cordes (méthode de Karplus-Strong) ou les instruments à vent (tubes acoustiques).


Le composant dans le projet PACT

Parmi ces diverses méthodes, les méthodes les plus susceptibles d’être mise en œuvre dans PACT, de part leur facilité d’implémentation et leur souplesse d’utilisation sont préférentiellement (CTU=connaissances techniques utiles) :

  • la synthèse FM (ici des slides joints), CTU: Fourier, modulation de fréquence
  • la synthèse par rééchantillonnage, CTU: Echantillonnage, Interpolation, Eléments sur les gammes musicales
  • la synthèse source-filtre (ici un document joint), CTU: Fourier, Filtrage, mécanismes de production vocale
  • la synthèse additive sinusoïdale ou granulaire, CTU: Fourier, Ondelettes
  • la synthèse de Karplus-Strong (ici des slides joints), CTU : Production du son dans les instruments à cordes, filtrage

Documents pour étudier :

Bibliographie et sites web

  • Audionumérique (C. Roads), dispo en bibliothèque

Outils de prototypage
FM-dream (freeware, archive fournie) : permet de tester des configurations rapidement.

Les composants SES associés :
Usages de la synthèse et des effets sonores (influences de la généralisation des sons électroniques, pourrait rentrer dans une question plus vaste de l’influence de la technologie)
Economie et marché de la synthèse sonore.

 

Module : Détection d’attaque / fonction de détection

Titre du module : Détection d’attaque
proposé par :

  • Geoffroy Peeters (geoffroy.peeters_at_telecom-paristech.fr)
  • Slim Essid (slim.essid_at_telecom-paristech.fr)
  • Roland Badeau (roland.badeau_at_telecom-paristech.fr)

 

Descriptif
Le mot « attaque » désigne le début d’un évènement sonore, et par extension, l’instant correspondant ou par exemple, une note est jouée. Détecter ces attaques est un aspect fondamental nécessaire dans les applications d’inférences rythmique (tempo, métrique, mesure) et plus généralement dans l’analyse de scènes audio. La fonction de détection est le terme utilisé pour décrire un signal temporel ou les attaques sont mises en évidence sous forme de pics saillants.L’algorithme de base de ce type de détecteur est le suivant :

  1. Détection d’enveloppe :  traduit les propriétés énergétiques locales de ce dernier. La détection d’enveloppe permet d’obtenir cette information. En général obtenue à l’aide d’un filtrage passe-bas de l’énergie instantannée.
  2. Dérivation de cette fonction enveloppe : on utilise un filtre RIF qui simule l’opérateur de dérivation. Les valeurs positives de de cette dérivée mettent en évidence les front montant d’énergie et constituent une bonne fonction de détection.

 

Ressources dont le module dépend
  • wikipédia : filterbank, spectrogram, filter, cours oasis (SI101) filtrage
  • bibliothèques JAVA à mettre en oeuvre : math common api
  • compléments : un  tp de 2007 en signal, détecteur de mélodie (contient de la détection d’enveloppe et de la détection de hauteur notamment).
  • biblio et slides : sur cette page (intranet)

 

Exemples d’utilisation du module
  • dans des composants pact :
    • dans la détection du rythme
    • pour synchroniser musique et image
  • dans des systèmes existants :
    • editeurs audio (beat tracking)
    • détection d’activité
Résultats attendus
  • connaissances : filtrage RIF, passe-bas, passe-haut, dérivateur, méthode de Parks-mc Lellan (ou Remez)
  • compétence : savoir expliquer avec ses propres mots le principe de fonctionnement d’un détecteur d’attaque, savoir choisir les filtres (longueur, type), être capable de mettre un oeuvre un filtre numérique simple
  • PAN 2 : notice descriptive précise (choix de paramètres, justifications des choix, description mathématique, description informatique) contenant le pseudo-code à mettre en oeuvre, éventuellement implémenté en matlab/octave sour forme de fonction.
  • PAN3 :
    • code java commenté et structuré de manière à être lisible.
    • tests de la fonction d’attaque :
      • sur un signal avec des sons bien séparé de batterie
      • sur des signaux plus complexes
  • PAN 4 (éventuel) :
    • pour des signaux plus complexes : rajouter un banc de filtre (module banc de filtre)
    • calculer une fonction de détection dans chaque bande et fusionner l’ensemble (somme pondérée des fonctions dans chaque bande)
    • tester les améliorations par rapport au modèle plus simple précédent sur des cas plus complexes que vous définirez vous même.

Module : synthèse à table d’onde

Titre du module : Synthèse à table d’onde
proposé par :

  • Geoffroy Peeters (geoffroy.peeters_at_telecom-paristech.fr)
  • Slim Essid (slim.essid_at_telecom-paristech.fr)
  • Roland Badeau (roland.badeau_at_telecom-paristech.fr)

 

Descriptif
La synthèse sonore regroupe un ensemble de procédés numériques et d’algorithmes destinés à produire des sons. Ces sons peuvent être environnementaux, comme par exemple dans le cas des jeux vidéo (vent, bruits lors de contacts ou d’interaction avec des objets, bruits d’ambiance tels que les chants d’oiseaux…) ou musicaux. La synthèse à table d’onde consiste à enregistrer simplement les sons en mémoire morte pour les rejouer ensuite. En général on n’enregistre pas tous les sons possibles : il est nécessaire de reconstituer les sons par rééchantillonnage et interpolation à partir des notes dont on dispose. Souvent, le son est enregistré en plusieurs morceaux (attaque-sustain-release) par exemple et il est nécessaire de boucler dans la partie de maintien tant que la note est jouée.

 

Ressources dont le module dépend
  • Cours SI340, synthèse sonore, Curtis Roads « Audionumérique », M. Kahrs « Application of digital signal processing to audio and acoustics »
  • en anglais : wavetable synthesis.
  • bibliothèques JAVA à mettre en oeuvre : math common api

 

Exemples d’utilisation du module
  • dans des composants pact :
    • synthèse sonore
  • dans des systèmes existants :
    • la plupart des ordinateurs
    • synthétiseurs dit « à échantillonnage »

 

Résultats attendus
  • connaissances : synthèse sonore, sous/sur échantillonnage, filtrage, interpolation fractionnaire
  • compétence : savoir expliquer les problèmes liés au rééchantillonnage d’un signal, savoir expliquer les problèmes liés au bouclage d’une forme d’onde, savoir mettre en oeuvre plusieurs types d’interpolation et comparer leur effets sur le spectre des sons produits.
  • PAN2 : notice descriptive précise (principe général et systèmes mis en oeuvre, choix et réglages des paramètres) contenant le pseudo-code à mettre en oeuvre, év. une implémentation de démo sous matlab ou octave. Définition de la base de sons préenregistrée.
  • PAN3 : code java commenté et structuré de manière à être lisible mettant en oeuvre une interpolation d’ordre 1 et év. bouclage (selon les sons choisis).
  • PAN4 : eventuel : code java et démonstration avec interpolation d’ordre supérieur (B-splines). comparaisons et tests d’écoute. Mise en oeuvres de traitements complémentaires (filtrages, reverb, modifications de timbre)

 

Module : Descripteurs audio "chromas"

Module: Descripteurs audio « chromas »
proposé par :

  • Geoffroy Peeters (geoffroy.peeters_at_telecom-paristech.fr)
  • Slim Essid (slim.essid_at_telecom-paristech.fr)
  • Roland Badeau (roland.badeau_at_telecom-paristech.fr)

 

Descriptif
La représentation en chromas permet de répartir l’intensité d’un son complexe, potentiellement polyphonique sur une échelle musicale tempérée ramené sur un octave. Les chromas peuvent être calculés sur un signal audio avec différentes résolutions (sixième de ton, demi-ton, ..). Ils peuvent aussi être calculés sur partition (la résolution est automatiquement en demi-tons) mais différentes précisions en nombres d’harmoniques (1, 3, ..) peuvent être utilisées. Par exemple, pour un do4 sur la partition, le chroma théorique correspondant pour une résolution d’une harmonique est le vecteur C=(1,0,0,0,0,0,0,0,0,0,0,0) où les composantes représentent les valeurs de chromas pour les différentes notes (C, C#, D, .., B) .

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • dans un système simple de reconnaissance des accords
  • dans un système simple d’alignement entre musique et partition

 

Résultats attendus
  • connaissances : Compréhension de la représentation en chromas, Compréhension de son utilisation en reconnaissance d’accords ou de tonalité
  • compétence : à l’issue de ce module vous aurez écrit en Java un programme qui calcule la représentation en chromas à partir d’un signal audio

 

  • PAN 1: description du module, et du rôle des chromas
  • PAN 2: étude biblio, pseudo-code, savoir expliquer avec ses propres mots le fonctionnement et le principe des chromas. Calcul de chromas théoriques à partir d’une représentation MIDI ou partition en utilisant une résolution à 1 ou 3 harmonique(s) (à l’aide de JAVA ou matlab/octave)
  • PAN 3: mise en œuvre sur des données audio. Représentation en chromagramme (par analogie au spectrogramme) pour un segment musical simple
Volume
  • 4TH programmées pour un binôme

 

Module : Traitement Automatique du Langage

Traitement Automatique du Langage (TAL)
proposé par :
Chloé Clavel (at telecom-paristech.fr, 7254)
complexité : moyenne

 

Descriptif
Le traitement automatique du Langage (TAL, en anglais NLP pour Natural Language Processing) est un domaine à la frontière entre l’informatique, et la linguistique. Il rassemble l’ensemble des développements visant à modéliser et reproduire, à l’aide de machines, la capacité humaine à produire et à comprendre des énoncés linguistiques dans des buts de communication (1).  Il est utilisé dans de nombreuses applications (la recherche d’information, l’extraction d’information, la traduction automatique, la reconnaissance vocale, l’analyse d’opinions sur les réseaux sociaux, le classement de documents, l’interaction humain-machine, les correcteurs orthographiques, la synthèse de la parole etc.).Le TAL repose sur deux types de méthodes : les méthodes linguistiques et les méthodes statistiques. Le premier type de méthode consiste à décrire l’information à extraire pour un métier, un domaine spécifique ou une thématique en modélisant l’information sous forme de patrons/règles linguistiques. Le deuxième type de méthode inclut par exemple des méthodes de type classification supervisé ou non supervisé, permettant de regrouper des documents similaires en fonction de leur contenu linguistique. Les méthodes utilisées font appel au domaine de l’apprentissage statistique et de la reconnaissance des formes (lien avec l’UE SI221, et le module kppv) avec une représentation des données spécifiques aux données textuelles.

 

Ressources dont le module dépend
  • aucune dépendance a priori mais possibilité d’établir des liens avec le module kppv, le module 3D et Interface (Avatar et Agents Conversationnels), le module reconnaissance de la parole
  • UE de reconnaissance des formes (SI221), Traitement des signaux audio-fréquence (parole – traitements linguistiques UE SI340)

 

 

Exemples d’utilisation du module
  • la recherche d’information, l’extraction d’information, la traduction automatique, la reconnaissance vocale, l’analyse d’opinions sur les réseaux sociaux, le classement de documents, l’interaction humain-machine, les correcteurs orthographiques, synthèse de la parole

 

 Objectifs d’apprentissage
  • Notion en apprentissage automatique et en représentation des données textuelles
  • Compétence à développer : à l’issue de ce module vous vous serez familiarisé avec les enjeux du TAL et vous aurez implémenté un système d’analyse de données textuelles

 

 Résultats attendus
  • PAN1 :
    • Savoir définir les termes suivants : TFIDF, analyse morpho-syntaxique, classification supervisée et non supervisée.
    • Savoir expliquer en quoi le TAL est a priori intéressant dans le projet du groupe.
  • PAN2 :
    • Livrable : Etude bibliographique sur le TAL
    • Livrable : Pseudo code implémentant un système d’analyse de données textuelles
  • PAN3 :
    • Livrable : code et premières mesures de performance 
  • PAN4 : Livrable : rapport de performance, en situation d’usage.

Module : Manipulation de fichiers ou d’appareils MIDI

Module: Lecture, traitement et sauvegarde de fichiers ou appareils MIDI
proposé par :

  • Jean-Claude Dufourd (dufourd_at_telecom-paris.fr, 7733, bureau E501)

 

Descriptif
Ce module concerne les manipulations habituelles simples de fichiers ou appareils MIDI, sur PC ou sur Android.

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • pour tout traitement de midi, lu, calculé, modifié, stocké

 

Résultats attendus
  • connaissances : maitrise du son en version midi, pour des traitements courants
  • compétence :  à l’issue de ce module vous aurez  écrit en Java un programme qui lit du midi dans un fichier et le joue, modifie des séquences midi et les stocke dans un fichier, génère une séquence midi à partir d’une autre notation.
  • livrable 1: programme qui lit un fichier midi, le joue sur PC
  • livrable 1b: idem sur Android
  • livrable 2: programme qui génère ou modifie une séquence midi, l’enregistre dans un fichier sur PC
  • livrable 2b: programme qui génère ou modifie une séquence midi, l’enregistre dans un fichier sur Android
  • livrable 3: programme qui se connecte à un appareil Midi (ex: clavier/piano) et qui traite les informations reçues en temps réel depuis l’appareil
Séquencement
Le séquencement précis de ce module par rapport aux PANs est flexible et sera négocié au début du module.

 

Module : Synthèse de la parole

Module: Synthèse de la parole à partir du texte
proposé par :

  • Geoffroy Peeters (geoffroy.peeters_at_telecom-paristech.fr)
  • Slim Essid (slim.essid_at_telecom-paristech.fr)
  • Roland Badeau (roland.badeau_at_telecom-paristech.fr)

 

Descriptif
La synthèse de la parole permet de vocaliser un texte. Ce module permet de réaliser un synthétiseur complet par concaténation d’éléments pré-enregistrés (e.g. les diphones) et permet ainsi de synthétiser n’importe quel mot. Pour la partie de « transcription graphème-phonème » (e.g. conversion du texte en suite de phonèmes), on utilisera un phonétiseur distribué librement (LIAPhon) qu’il s’agira de comprendre. Pour un système de synthèse à vocabulaire limité, on pourra se contenter de prophétiser manuellement les différents mots du vocabulaire.

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • dans un système où une information textuelle doit être vocalisée, ou dans le cadre d’une interface Homme-Machine

 

Résultats attendus
  • connaissances : Compréhension de l’algorithme de synthèse par concaténation de diphones, connaissances sur le traitement de la parole, Traitement du signal pour la concaténation de sons élémentaires
  • compétence : à l’issue de ce module vous aurez écrit en Java un programme qui synthétise un texte à vocabulaire ouvert. Vous aurez aussi interfacé votre programme avec un phonétiseur distribué librement.
  • livrable 1: Interfaçage avec le phonétiseur du LIA (LIAPhon) ou constitution d’un dictionnaire de mots phonétisés
  • livrable 2: pseudo-code du programme de synthèse par concaténation de diphones
  • livrable 3: code java + tests d’évaluation et d’intélligibilité  sur des textes  simples.
Volume
  • 12 TH programmées pour un binôme (avec intégration du phonétiseur LIAPhon)
  • 6 TH pour un système à vocabulaire limité (sans intégration du phonétiseur LIAPhon).

 

Module : Programmation dynamique pour la reconnaissance de parole par DTW

Module: Programmation dynamique pour la reconnaissance de parole par DTW
proposé par :

  • Geoffroy Peeters (geoffroy.peeters_at_telecom-paristech.fr)
  • Slim Essid (slim.essid_at_telecom-paristech.fr)
  • Roland Badeau (roland.badeau_at_telecom-paristech.fr)

 

Descriptif
La programmation dynamique (ou Dynamic programmming) est une approche qui permet, sous certaines conditions, d’obtenir la solution optimale à un problème de minimisation d’un critère d’erreur sans devoir considérer toutes les solutions possibles. Pour la reconnaissance vocale, elle permettra de comparer deux séquences de vecteurs de paramètres (par exemples deux séquences de vecteurs MFCC) en autorisant une déformation temporelle dynamique des séquences. Le problème se ramène à calculer la meilleure distance D(Tx, Ty) entre deux séquences x et y, où x et y peuvent être déformées temporellement suivant des contraintes pré-déterminées.

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • dans un système simple de reconnaissance de la parole
  • dans un système d’alignement entre musique et partition

 

Résultats attendus
  • connaissances : Compréhension de l’algorithme de programmation dynamique, Compréhension de son utilisation en reconnaissance de la parole
  • compétence : à l’issue de ce module vous aurez écrit en Java un programme qui compare deux séquences de vecteurs (par ex. une séquence de vecteurs MFCC). Vous aurez au préalable testé votre algorithme sur des séquences simples de scalaires.
  • PAN 1: description du module, et du rôle de la DTW
  • PAN 2: étude biblio, pseudo-code, savoir expliquer avec ses propres mots le fonctionnement et le principe de la DTW. Démonstration sur un cas synthétique (à l’aide de JAVA ou matlab/octave)
  • PAN 3 mise en oeuvre sur des données réelles. Evaluation des performances sur une base de données simple ou démo live.
Volume
  • 4TH programmées pour un binôme

 

Module : Reconnaissance vocale simple

Titre du module : Reconnaissance vocale
proposé par :

  • Geoffroy Peeters (geoffroy.peeters_at_telecom-paristech.fr)
  • Slim Essid (slim.essid_at_telecom-paristech.fr)
  • Roland Badeau (roland.badeau_at_telecom-paristech.fr)

 

 

Descriptif
Ce module permet de construire un système simple de reconnaissance de la parole d’une dizaine de mots. Il repose sur les modules « descripteurs audio MFCC » et « Programmation dynamique pour la reconnaissance de parole par DTW » qui seront réalisés au préalable.

 

Ressources dont le module dépend

 

Exemples d’utilisation du module
  • Pour faire une interface homme-machine naturelle de style « commande vocale ».

 

Résultats attendus
  • connaissances :  Compréhension des modules « descripteurs audio MFCC » et « Programmation dynamique pour la reconnaissance de parole par DTW,
  • compétence :  Savoir réaliser un système simple de reconnaissance voacle mono locuteur, savoir le rendre plus robuste aux variations de prononciations et aux différents locuteurs
  • livrable 1 : notice descriptive précise (choix de paramètres, justifications des choix, description mathématique, description informatique) contenant le pseudo-code à mettre en oeuvre
  • livrable 2 : code java commenté et structuré de manière à être lisible.
  • livrable 3 : tests du système de reconnaissance sur une base de 10 répétitions de 10 chiffres (base fournie); test du système de reconnaissance avec vocabulaire défini pour le projet

Volume

  • 7 TH programmées pour un binôme

Signatures :