Nous considérons dans cette partie des sons monophoniques (c'est-à-dire où n'intervient qu'une voix : un orateur[Note : Voir la note de la page page:inform.] seul ou un chanteur seul ou un instrument seul), harmoniques (c'est-à-dire que le signal pour chaque zone stable se décompose en une somme de sinusoïdes disposées sur un peigne harmonique), et non modulés (c'est-à-dire que les sinusoïdes présentes pour chaque zone stable ne sont modulées ni en fréquence ni en amplitude). Le but est de segmenter ces sons en zones stables, et d'étiqueter chacune d'elles. Une zone stable, dans cette partie, correspond à une note ou à un phone harmonique. La segmentation consiste à détecter les variations brusques du signal, à détecter les transitions entre deux zones stables successives. L'étiquetage consiste à retranscrire la partition jouée.
Un programme pour segmenter en zones stables a été développé en c au cours de cette thèse. Nous l'avons appelé segmentation.
L'analyse est composée de quatre étapes.
Nous avons tout d'abord défini un ensemble de fonctions d'observation. Elles doivent résumer et faire ressortir les caractéristiques des sons : des zones stables séparées par des transitions brusques. La mise en évidence des transitions a été faite d'un point de vue purement traitement du signal ou d'un point de vue plus perceptif. Les fonctions d'observation sont présentées dans le deuxième chapitre (chapitre fo_seg) de cette partie. L'extraction de ces fonctions d'observation constitue la première étape de l'analyse segmentation en zones stables.
Ensuite nous avons défini un ensemble de critères permettant de déterminer, à partir des fonctions d'observation, à quels moments nous avons une variation importante du son, c'est-à-dire les moments où nous devons poser une marque de segmentation : il s'agit de la prise de décision. À partir de chaque fonction d'observation, nous obtenons une fonction de décision, c'est-à-dire une liste de marques de segmentation. Nous décrivons les procédures de prise de décision utilisées dans le troisième chapitre (chapitre chap:pridec) de cette partie. Ces prises de décision constituent la deuxième étape de l'analyse segmentation en zones stables.
Puis nous nous sommes intéressé dans le quatrième chapitre (chapitre fus_tou) de cette partie à la fusion des résultats des prises de décisions obtenus pour chacune des fonctions d'observation. Nous traitons aussi dans ce chapitre d'un problème qui se rencontre aussi bien au cours de la deuxième étape de l'analyse (chapitre chap:pridec) qu'au cours de celle-ci : il s'agit du traitement des marques de segmentation trop proches les unes des autres. Ce problème est dû au fait que les transitions ne sont pas instantanées et que certaines fonctions d'observation réagissent plutôt au début des transitions, d'autres plutôt à la fin des transitions, et d'autres plusieurs fois au cours d'une même transition. Nous obtenons une fonction de décision finale. Cette prise de décision finale constitue la troisième étape de l'analyse segmentation en zones stables.
L'étiquetage des segments est discuté succintement dans le cinquième chapitre (chapitre chap:label) de cette partie. Cet étiquetage constitue la quatrième étape de l'analyse segmentation en zones stables.
Dans le sixième chapitre (chapitre per_seg1) de cette partie, nous avons dans un premier temps observé le comportement des fonctions d'observation avec un son de flûte simple, c'est-à-dire parfaitement monophonique (pas de reverbération, etc.), harmonique, et quasi non modulé. Puis nous discutons les résultats obtenus avec le système complet sur un ensemble de signaux simulés ou réels.
Dans le septième chapitre (chapitre chap:corr_fo_ob) de cette partie, les corrélations entre les fonctions d'observation sont étudiées, d'abord en vue d'éliminer celles qui n'apportent pas d'information supplémentaire et donc de réduire le nombre de fonctions d'observation à utiliser. Nous indiquons dans la section sect:fusio (chapitre fo_seg) que la présence de deux capteurs absolument corrélés (fonctions de décision absolument identiques) implique que nous n'atteignons pas les performances optimales lors de la fusion de données. Les corrélations sont aussi étudiées en vue de caractériser perceptivement chaque fonction d'observation (elle réagit plutôt aux transitions en
, aux transitions en énergie, aux transitions en contenu spectral, ou à une combinaison de ces trois types de transitions).
Dans le huitième chapitre (chapitre nec_seg) de cette partie, nous faisons quelques remarques qui montrent que le système de segmentation tel qu'il est décrit dans cette partie n'est plus suffisant dès que le signal n'est plus monophonique, harmonique et/ou non modulé, et qu'il est nécessaire de mettre en place un niveau de segmentation supérieur à celui présenté dans cette partie. Nous appelons cet autre niveau (décrit dans la partie part:seg_cara) segmentation en caractéristiques. Cette segmentation, plus grossière en ce sens qu'elle nous donne des segments plus longs que la segmentation en zones stables, aide à la segmentation en zones stables.
Nous donnons une conclusion à cette partie dans le neuvième chapitre (chapitre chap:part2) de cette partie.
L'extraction de fonctions d'observation est la première étape de l'analyse segmentation en zones stables.
Nous avons vu dans l'introduction générale à cet exposé que, pour les sons monophoniques, harmoniques et non modulés, une variation brusque du signal peut avoir lieu :
D'autres fonctions d'observation, n'entrant pas dans ces trois catégories, sont décrites dans la cinquième section (section sect:fo_au) de ce chapitre. Elles tentent de détecter des variations brusques dans le signal lui-même, ou de mettre en évidence plusieurs types de variations brusques simultanément.
Les fonctions d'observation peuvent encore être séparées en deux groupes : celles qui sont unidimensionnelles et celles qui sont multidimensionnelles. Une fonction d'observation multidimensionnelle est une fonction d'observation qui nous donne par exemple un trajet pour chaque harmonique, ou pour chaque bande de fréquence considérée. Nous voulons réduire chaque fonction d'observation multidimensionnelle à une fonction d'observation unidimensionnelle. C'est-à-dire que nous voulons mixer les résultats obtenus pour chaque dimension : apparaissent les premiers problèmes de fusion de données. Leur discussion et leur résolution font l'objet de la sixième section (section sect:fusio) de ce chapitre.
Dans la septième section (section sect:fo_re) de ce chapitre, un récapitulatif des fonctions d'observation étudiées est fait.
Nous concluons ce chapitre avec sa huitième section (section sect:conc_chap1_part2).

Tout signal périodique peut être décomposé en une somme de
sinusoïdes dont les fréquences sont toutes multiples d'une
fréquence particulière, appelée fréquence fondamentale. Ces
sinusoïdes sont appelées les harmoniques, ou les partiels
harmoniques du signal. Et le signal est lui-même dit harmonique. Les
sons considérés dans cette partie sont harmoniques localement,
c'est-à-dire sur chaque note, ou encore sur chaque zone stable. Au
cours de chaque note, nous n'observons que quelques périodes du
signal. Pour un
(
) de durée un
quart de seconde, nous avons 110 périodes.
La fréquence fondamentale
d'un signal sonore est obtenue grâce au logiciel
développé à l' ircam (voir entre autres Thesis:Doval et Article:Garcia).
Nous présentons succintement le principe simplifié de la méthode.
Il est fait l'hypothèse que le signal à analyser est harmonique. Il est découpé en portions (ou fenêtres d'analyse, ou encore trames) larges de quelques dizaines de millisecondes, et décalées de quelques millisecondes. Un spectre d'amplitude est calculé pour chacune de ces portions, d'instant central
, multipliée par une fenêtre de pondération. Tous les pics significatifs du spectre d'amplitude sont détectés : ils ont pour fréquences respectives
. Il s'agit ensuite de déterminer quelle fréquence fondamentale explique au mieux l'ensemble de ces pics. Un ensemble, fixe quelque soit
, de
fréquences fondamentales candidates est utilisé :
. Chaque pic gardé, de fréquence
, pour une candidate
, correspond à l'harmonique de numéro d'ordre
, avec :
, où
est l'opérateur plus proche entier de
.
ensembles
, un par fréquence fondamentale candidate, sont obtenus : il s'agit de déterminer lequel est le plus vraisemblable, en prenant en compte la probabilité d'absence de chaque harmonique, la probabilité de dispersion de chaque harmonique
autour de sa fréquence théorique
, etc.
Nous obtenons donc le trajet de
dans le temps :
. Les sauts de
correspondent à un changement de note (de hauteur) et ce sont ces sauts que nous voulons détecter, dans cette section sect:fo_f0.

La fonction d'observation << valeur absolue de la dérivée de
>>,
, se calcule, à l'instant
, à partir des
que nous avons définis dans la section ssse:foncf0, ainsi :
Nous définissons la fonction d'observation << valeur absolue de la dérivée relative de
>> ainsi :
Les fonctions d'observation
et
et les fonctions d'observation
et
sont implémentées dans le programme segmentation. Beaucoup d'autres dérivées << numériques >> pourront être utilisées : voir entre autres celles données dans l'article Article:Boashash[Note : La dérivée
y est appelée << CFD >>, pour << Central Finite Difference >>, et la dérivée
y est appelée << BFD >>, pour << Backward Finite Difference >>.]. Il s'agit d'une perspective.
Nous calculons de la même façon les dérivées des harmoniques de numéros d'ordre supérieurs. Nous obtenons ainsi une fonction d'observation multidimensionnelle. Il faut alors fusionner les dimensions (voir la section sect:fusio). Ceci n'est pas fait dans le programme segmentation.
Nous calculons un indice de voisement pour chaque harmonique. Nous utilisons le trajet de
déterminé par le logiciel
.
La procédure est la suivante :
à l'instant
.
. La largeur
de cette portion est égale à quelques dizaines de millisecondes. Classiquement, elle doit couvrir trois ou quatre périodes du signal[Note : Communément, il est fait l'hypothèse que les signaux sonores sont stationnaires sur des périodes de 30 ou 40 millisecondes. Cette taille de fenêtre d'analyse permet d'assurer que les lobes principaux dus à deux harmoniques de numéros d'ordre successifs soient résolus, c'est-à-dire que leur somme ne forme pas qu'un seul lobe, repéré par un seul maximum local dans le spectre d'amplitude.] : ainsi, pour un
(
), nous obtenons une dizaine de millisecondes. Nous multiplions cette portion du signal par une fenêtre de pondération
, de transformée de Fourier
et de spectre d'amplitude
. Nous calculons le spectre d'amplitude
de cette portion pondérée du signal.
est tronqué autour des fréquences harmoniques de
.
est tronqué autour de la fréquence nulle. Nous calculons la corrélation entre chaque tronçon normalisé en énergie de
, et
tronqué et normalisé en énergie.
C'est-à-dire que nous calculons pour tous les
entre
et
, ou
correspond au numéro d'ordre de l'harmonique, l'indice de voisement :
où :
est tel que
(notons que
varie dans le
temps, c'est-à-dire avec
, suivant
) ;
est
la fréquence d'échantillonnage du signal sonore ;
est
l'opérateur plus proche entier de
;
est la largeur
de la troncature sur laquelle nous calculons la corrélation (la taille
des spectres d'amplitude tronqués est donc
) ; et
est l'opérateur normalisation de l'énergie de
à 1. La normalisation en énergie d'un spectre
d'amplitude
tronqué entre
et
se fait ainsi :
pour
. Dans notre cas
et
.
Nous donnons ici quelques notations, qui seront valables dans tout l'exposé.
est la largeur temporelle des fenêtres d'analyse (en seconde),
la même largeur en nombre d'échantillons.
est la taille des fft. Les échantillons fréquentiels des spectres sont numérotés de
à
, et les fréquences correspondantes sont
et
. À l'échantillon fréquentiel
, correspond une fréquence de
.
vaut
.
Chacun des indices de voisement
vaut 1 si une sinusoïde de fréquence
est présente et moins de 1 sinon. Nous obtenons ainsi une fonction d'observation multidimensionnelle. Il faut alors fusionner les données (voir la section sect:fusio).
>>
Si à l'instant
une petite erreur est faite sur
, quand nous calculons les indices de voisement comme nous l'indiquons ci-dessus dans la section ssec:prinmethvoi, les effets de cette erreur se répercutent pour tous ces indices de voisement
. Il vaut donc mieux relâcher la contrainte
. Ainsi, nous calculons les indices de voisement obtenus pour
échantillons fréquentiels autour de cette valeur
, et, ensuite, n'est pris en compte que le plus grand. L'indice de voisement de numéro d'ordre
devient :
Une petite erreur
sur
nous donne une erreur
sur l'harmonique
. Donc
doit être une fonction linéaire du numéro d'ordre
de l'harmonique. Nous prenons :
[Note : Il est un problème de notation. Dans tout cet exposé, nous considérons que le premier partiel harmonique ou premier harmonique correspond à la fréquence fondamentale, numérotée indifféremment
... ou
. Ainsi, en règle générale dans cet exposé :
... et donc ici
. ].
Les paramètres libres sont au nombre de 6. Ce sont :
, la largeur de chaque fenêtre d'analyse ;
, la demi-largeur de la troncature ;
, le nombre d'harmoniques pris en compte (
) ;
;
, la taille de la fft ; la fenêtre de pondération. Nous avons vu que
est de l'ordre de quelques dizaines de millisecondes.
est choisie de telle façon que
% de l'énergie totale de
soit gardée.
est choisi de l'ordre de 90.
n'est pas choisi très grand. Souvent l'amplitude des harmoniques diminue rapidement avec leur numéro d'ordre. Ainsi le lobe principal des harmoniques de numéro d'ordre élevé est trop déformé par le bruit pour que nous obtenions un indice de voisement proche de 1. Le plus souvent,
.
est égal à
, où
est petit (
par exemple). Plus
est grand, plus
est petit, et donc plus les
sont proches d'un
, où
est entier. Ainsi, si nous nous plaçons dans le cas d'un signal harmonique, plus
est grand, plus les indices de voisement sont proches de 1. Nous n'avons pas de contrainte de temps de calcul : alors nous pouvons utiliser un taux de bourrage de zéros[Note : Ou << zero-padding >>. Le bourrage de zéros consiste à ajouter
zéros à la fin du signal à analyser, de taille
. Le bourrage de zéros est utilisé pour deux raisons :
] grand. Le dernier paramètre libre est la fenêtre de pondération : souvent, nous utilisons celle de blackman.
soit une puissance de 2 (il s'agit de profiter des algorithmes de fft)
L'indice de voisement première forme implémenté dans le programme segmentation est l'indice
. La fonction d'observation finale est la << fusion des valeurs absolues des dérivées des indices de voisement première forme >>.
Nous avons vu que le logiciel
nous donne la fréquence fondamentale aux instants
. Dans le logiciel de l' ircam additive, il est fait l'hypothèse que le signal sonore est une somme de sinusoïdes quasi harmoniques. Une fois que
a été estimée à un instant donné
, additive détermine une sinusoïde (sa fréquence, son amplitude et sa phase) pour chaque bande de fréquences centrée autour de
, avec
variant de
à
. Il s'agit de détecter le maximum du spectre d'amplitude dans chaque bande de fréquence. La largeur des bandes de fréquence est au plus de
. Les positions de ces maximums nous donnent les fréquences
des harmoniques.
À chaque instant
et pour chaque harmonique de numéro d'ordre
(
variant de
à
) nous calculons l'indice d'inharmonicité
de la façon suivante :
où
est la fréquence du
harmonique obtenu avec additive.
L'idée ici est qu'au cours des transitions,
n'a plus de sens physique. Alors, l'inharmonicité devient importante pour tous les harmoniques.
Nous obtenons un critère de dimension
. Nous avons donc ici de nouveau un problème de fusion de données (voir la section sect:fusio).
>>
Dans la méthode présentée dans la section ssse:inhprin ci-dessus, nous accordons une grande confiance à
. Les effets d'une petite erreur sur
se répercutent pour tous les indices d'inharmonicité. Il vaut donc mieux relâcher la contrainte
. Nous calculons un nouvel
, appelé
, ainsi :
Bien sûr, dans les zones stables,
est très proche de
.
Nous calculons alors l'indice d'inharmonicité
de la façon suivante :
pour chaque harmonique de numéro d'ordre
, avec
variant désormais de
à
.
Le seul paramètre libre est
le nombre d'harmoniques pris en compte (
). Nous l'avons choisi petit, le plus souvent égal à trois. Ceci parce que l'amplitude de l'harmonique décroissant rapidement (en
par exemple) avec son numéro d'ordre, le bruit détériore l'estimation de ses trois paramètres, c'est-à-dire notamment de sa fréquence.
L'indice d'inharmonicité implémenté dans le programme segmentation est l'indice
. La fonction d'observation finale est la << fusion des valeurs absolues des dérivées des indices d'inharmonicité >>.
Nous avons adapté ici un programme implémenté en c par Laurent Cerveau lors d'un stage de dea effectué à l' ircam (voir Rapport:Cerveau).
À l'instant
, nous observons le signal, c'est-à-dire ici le trajet de
, sur deux portions adjacentes de taille
échantillons (voir la figure figu:tran) :
:
.
:
.
Nous faisons l'hypothèse que sur chaque portion nous obtenons
observations d'une variable aléatoire normale. Les densités de probabilité pour les deux variables aléatoires
et
sont normales et respectivement égales à
et
. Il s'agit de détecter les moments où
correspond à une note et
à une autre. L'écart maximal entre les deux suites aléatoires est obtenu quand la portion 1 couvre la fin d'une note et la portion 2 le début de la note suivante.
Nous calculons alors la probabilité que les modèles correspondants aux deux suites aléatoires soient au plus éloignés d'une distance
, c'est-à-dire que nous calculons la probabilité à tout instant
:
Nous donnons en annexe anne:proba les calculs qui nous permettent d'aboutir à cette intégrale. Nous n'obtenons pas une formule analytique : il reste cette intégrale, que nous calculons aisément numériquement. La taille des deux portions étant
, les moyennes sont estimées ainsi :
et les variances ainsi (voir l'annexe ann:varsig) :
,
qui sont des estimateurs non biaisés des variances ; ou ainsi :
,
qui sont des estimateurs biaisés des variances.
étant de l'ordre de quelques dizaines, c'est-à-dire étant petit, il est préférable d'utiliser l'estimateur non biaisé de la variance, quoique en variance il soit moins performant que l'estimateur biaisé.
Au lieu de considérer l'ensemble des valeurs
, nous considérons l'ensemble des valeurs
telles que :
. Le passage d'une note à une autre se déroulant sur un certain laps de temps (la transition n'étant pas instantanée), nous espérons en utilisant
plutôt que
augmenter la robustesse de l'algorithme.
Nous utilisons cet algorithme de la même façon sur les trajets des harmoniques de numéros d'ordre supérieurs. Il faut alors fusionner les résultats (voir la section sect:fusio). Ceci n'est pas fait dans le programme segmentation.
Ils sont au nombre de 4. Ce sont :
, la taille des portions ;
, le seuil ;
, le numéro de l'ensemble considéré[Note : Si nous considérons l'ensemble des
,
; si nous considérons l'ensemble des
,
: notons que ce sont les deux seules possibilités offertes par le programme segmentation. D'autres pourraient être envisagées : il s'agit d'une perspective.] ;
, le nombre d'harmoniques pris en compte.
ne doit ni être trop grande : il ne faut pas qu'une portion couvre plus d'une note ou deux ; ni trop petite : il ne faut pas que les variances des estimées
,
,
et
soient trop grandes. Il faut faire ici une hypothèse sur la longueur des notes : supposons qu'elle soit de l'ordre du quart de seconde. Souvent, le trajet de
est échantillonné à
, donc la valeur de
choisie est d'environ 25. Dans cette méthode-ci il est un seuil :
. Cependant, puisque nous analysons le trajet de la fréquence fondamentale,
peut facilement être relié à une donnée musicale, en l'occurence à un écart de ton.
Finalement, la fonction d'observation considérée est ou bien
, ou bien
. Les deux sont disponibles dans le programme segmentation. Par défaut,
est utilisée.
Une fois les marques de segmentation posées[Note : C'est-à-dire après avoir seuillé la fonction d'observation
: voir le chapitre chap:pridec. Initialement, dans le programme de Laurent Cerveau, ce seuillage était effectué avec la deuxième méthode de seuillage (voir l'annexe ann:seuil), qui n'est pas forcément la plus efficace.] aux instants
, leur validité est testée en définissant les deux fenêtres d'analyse ainsi :
Et en calculant le score
de la marque
de la façon suivante :
Si le score
est trop faible, il convient de réexaminer et la position de la marque
et le nombre de marques présentes entre
et
. Ceci n'est pas implémenté dans le programme segmentation.
Nous avons adapté ici un programme implémenté en c par Claude Barras au laforia et par Jérôme Daniel à l' ircam (voir Rapport:Daniel). L'algorithme est dû à Régine André-Obrecht (voir Article:Lepain, Rapport:Basseville, Techreport:Jehan et Books:Bassnik page 318 : << Divergence algorithm >>).
Le signal échantillonné
(ici le trajet de
), que nous devons segmenter, est considéré comme étant un processus auto-régressif.
Le signal
représente la réalisation d'un processus auto-régressif d'ordre
s'il satisfait l'équation :
où les coefficients
sont les paramètres ar et
un bruit normal
.
La densité spectrale de puissance[Note : Voir Article:Marple page 442 ou Article:Kay1 page 1388, où
est appelée << power spectral density (PSD) >>.] est alors donnée par la relation :
En écrivant l'auto-corrélation du signal ainsi :
, nous obtenons les équations de Yule-Walker :
Nous avons à notre disposition diverses méthodes permettant de résoudre récursivement (ordre variant de
à
) ces équations de Yule-Walker : Durbin-Levinson, Burg, Marple (pour plus de détails, voir Article:Marple et Article:Kay1). Ces trois méthodes ont été implémentées dans le programme segmentation.
La décision de rupture à un instant
est basée sur l'observation de l'entropie croisée de deux modèles ar du signal. Le premier est calculé à partir d'une portion
du signal, de taille fixe
et telle que
; et le second à partir d'une portion
du signal dont l'origine est fixe et correspond à l'instant de détection de la rupture précédente, que nous notons
, avec bien sûr
. Ainsi :
(voir la figure figu:rupt). Les moyennes de
et
sont normalisées à
. L'ordre des deux modèles est
:
Nous adoptons les notations suivantes :
les paramètres ar obtenus pour le premier modèle.
les paramètres ar obtenus pour le second modèle.
De plus :
correspond au passé de l'échantillon
.
et :
et
correspondent aux densités de probabilité conditionnelles associées respectivement à
et à
.
L'entropie croisée
est alors :
Ce qui s'écrit dans le cas gaussien (voir Rapport:Basseville) :
avec
l'erreur de prédiction pour le modèle
, avec
valant
ou
.
La statistique est définie comme étant la somme cumulée :
où
est un biais positif systématiquement ajouté, selon la règle de Page-Hinkley (voir Rapport:Basseville page 26 et Article:Lepain).
Le problème est à présent de détecter un maximum local de
, moyennant un certain seuil
. Cela se fait de la façon suivante :
alors
rupture à l'instant
,
, et réinitialisation de
à 0
Or,
a un comportement asymétrique par rapport aux modèles obtenus pour
et
. Cela veut dire que certains sauts sont plus facilement
détectables si nous nous déplaçons dans le sens temporel rétrograde que si
nous nous déplaçons dans le sens normal. Le signal est donc traité dans le sens
rétrograde dès qu'il est soupçonné qu'une omission a eu lieu. Nous décidons
qu'il y a eu peut-être omission quand :
. Alors nous allons dans le
sens rétrograde. Une fois que nous allons dans le sens rétrograde, si nous
détectons une rupture à l'instant
et si
, la rupture
à l'instant
est acceptée et nous reprenons l'analyse dans le sens temporel
normal à partir de l'instant
.
Nous utilisons cette algorithme de la même façon sur les harmoniques de numéros d'ordre supérieurs. Il faut alors fusionner les résultats (voir la section sect:fusio, en remarquant qu'ici nous obtenons des fonctions de décision, c'est-à-dire des listes de marques de segmentation, et non pas des fonctions d'observation). Ceci n'est pas fait dans le programme segmentation.
Ils sont au nombre de 7. Ce sont :
, l'ordre des modèles ar ;
, la taille de la fenêtre d'analyse de taille fixe ;
, le biais systématiquement ajouté ;
, le seuil de détection ;
, la longueur à partir de laquelle nous soupçonnons qu'une omission a eu lieu ;
, la longueur minimale entre une détection normale et une détection rétrograde ;
, le nombre d'harmoniques pris en compte. Par défaut, nous avons :
;
, telle que la largeur de la fenêtre de taille fixe soit de
millisecondes ;
;
. Par défaut, l'analyse dans le sens rétrograde n'est pas effectuée. Si elle est utilisée, nous avons :
;
.
Contrairement aux autres fonctions d'observation, la prise de décision est incluse dans la << rupture de modèles ar >>. Cette remarque, très importante, est valable aussi pour la << rupture de modèles ar >> sur le trajet de l'énergie (voir la section rupt_ene) et pour la << rupture de modèles ar >> directement sur le son (voir la section rupt_son). En fait, les deux premières étapes de l'analyse segmentation en zones stables sont confondues. Cette remarque implique que ce que nous présentons dans le chapitre chap:pridec ne s'applique pas ici.
Ce n'est pas le cas pour d'autres fonctions d'observation basées elles aussi sur la modélisation ar : voir les sections flux_ar et brandt.
Nous entendons par << énergie >>, ici, l'énergie calculée sur une portion du son de taille
échantillons (
classiquement correspond à une portion de quelques dizaines de millisecondes), c'est-à-dire que cela correspond plutôt à une puissance.
Nous obtenons le trajet de l'énergie
du signal sonore dans le temps. Elle change pour chaque note et, de plus, pour certains signaux, aux instants de transition, elle passe par des minimums très faibles. Nous voulons ici détecter les sauts de la fonction temporelle
.
Moorer (Thesis:Moorer), Morris et Schwartz (Article:Morris), notamment, utilisent l'énergie pour segmenter.
Cette fois-ci, le critère n'a qu'une dimension, et nous n'aurons pas les problèmes de fusion des résultats rencontrés pour les fonctions d'observation basées sur les variations de
et des harmoniques de numéros d'ordre supérieurs (voir la section ssse:apsup).
De la même façon que pour le trajet de
, nous utilisons, comme fonctions d'observation, pour le trajet de l'énergie :
,
,
et
du trajet de l'énergie. Elles sont implémentées dans le programme segmentation.
ou
sur le trajet de l'énergie. Elle n'est pas implémentée dans le programme segmentation.
Deux indices de voisement sont définis : le premier, qui est basé sur l'analyse des spectres d'amplitude, dans cette section voise_fo2 ; et le second, qui est basé sur l'analyse des spectres complexes, dans la suivante (section voise_fo3). Ils sont différents des indices de voisement définis dans la section voise_for1 en ce que nous ne tenons pas compte de
. Nous ne faisons ici aucune hypothèse sur l'harmonicité du signal. Ces considérations nous amèneront, dans le chapitre chap:detpol (partie part:poly), page page:poly, à faire une distinction, toute personnelle, entre << signal voisé >> et << signal harmonique >>.
Ces deux nouveaux indices de voisement ne sont pas encore implémentés en c, et donc ne sont pas inclus dans le programme segmentation.
Une portion du son large de quelques dizaines de millisecondes et d'instant central
est considérée. Cette portion est multipliée par la fenêtre de pondération
. Le spectre d'amplitude
de cette portion pondérée du signal est calculé. Le spectre d'amplitude
de la fenêtre de pondération
est calculé.
est tronqué autour de la fréquence nulle. Ce tronçon normalisé en énergie,
, est large de
échantillons fréquentiels. Nous considérons des tronçons normalisés en énergie
glissants de
.
est la position de l'échantillon fréquentiel central de chaque tronçon, et la largeur de chaque tronçon est de
échantillons fréquentiels. Nous corrélons
et chaque
. Rappelons que les normalisations en énergie se font ainsi (voir page page:nor) :
; et :
Les notations sont telles que pour l'échantillon fréquentiel d'indice
, la fréquence est
, pour l'échantillon fréquentiel d'indice
,
, pour l'échantillon fréquentiel d'indice
,
...
La corrélation pour le tronçon
de position centrale
se calcule ainsi :
Le spectre est calculé pour
échantillons fréquentiels entre 0 et
. Il est donc composé de
tronçons (
varie de
à
). Nous obtenons un vecteur de corrélation
composé de
points.
Nous détectons les maximums locaux de ce vecteur
. Pour chacun de ceux qui dépassent un seuil
, nous décidons que nous avons une sinusoïde en cet endroit
du spectre d'amplitude
. Il est nécessaire d'ajouter une << condition supplémentaire >> : cependant, si la distance
entre deux maximums locaux supérieurs à
consécutifs (
) est inférieure à
, nous ne gardons que la sinusoïde correspondant à la corrélation la plus grande[Note : Nous pourrions plutôt garder celle des deux sinusoïdes dont l'énergie est la plus grande ; ou mixer les deux tests (par exemple utiliser le produit de la corrélation par l'énergie pour chaque sinusoïde et ne garder que la sinusoïde correspondant au plus grand de ces produits). Il s'agit de perspectives.]. Cette << condition supplémentaire >> permet d'assurer qu'aucun échantillon fréquentiel n'est présent dans plusieurs des sinusoïdes gardées, que nous ne comptons pas plusieurs fois l'énergie d'un échantillon fréquentiel.
Nous calculons l'énergie de chaque sinusoïde gardée, c'est-à-dire l'énergie du tronçon concerné, de position centrale
:
Nous additionnons les énergies de toutes les sinusoïdes
gardées. Nous obtenons une énergie
. L'énergie totale du
signal est
. Si le rapport
des deux énergies est supérieur à un seuil
à
fixer, nous décidons que le signal est plutôt voisé,
c'est-à-dire plutôt composé de sinusoïdes ; sinon, nous
décidons qu'il n'est pas voisé[Note : Cette remarque concerne
les parties part:seg_cara et part:poly, c'est-à-dire la
segmentation en caractéristiques et la détection de la
polyphonie.]. Grâce à la condition supplémentaire, il est assuré
que le rapport
soit forcément inférieur ou égal à 1.
Nous avons obtenu ainsi un indice de voisement proche de celui défini dans la section voise_for1, mais, contrairement à celui-ci, indépendant de la détermination de
(pour l'indice de voisement défini dans la section voise_for1, nous corrélons avec les portions du spectre autour de
,
,
...).
La fonction d'observation implémentée sous matlab est la << valeur absolue de la dérivée de
>>, soit :
Il faut remarquer que quand le signal est du bruit, les corrélations ne sont pas nulles.
Si le signal est une suite aléatoire normale de loi
, nous prouvons (voir Book:Brillinger) que les parties
réelles et imaginaires du spectre complexe sont indépendantes et qu'elles suivent
des lois normales
.
Le spectre d'amplitude est le module du complexe
où
et
sont respectivement les parties réelles et
imaginaires du spectre complexe. Nous prouvons alors que
suit une loi de Rayleigh (voir Books:Charbit, pages
38 -- 39). La densité de probabilité de
est :
avec
.
Nous prouvons (voir l'annexe anne:annpois), que la moyenne de la variable aléatoire
tend vers
quand
tend vers l'infini. La valeur moyenne de l'amplitude de chaque échantillon fréquentiel est :
. Ainsi :
formule (1)
qui ne dépend pas des paramètres du bruit. Remarquons que puisque
est supérieur à la valeur vraie de
,
est supérieure à
. Ceci est représenté sur les figures figcor3, figcor2 et figcor1. Pour chaque figure, la courbe en trait interrompu représente la valeur théorique et la courbe en trait plein la valeur estimée des moyennes de
en fonction de
, la largeur de chaque tronçon étant
. Les fenêtres de pondération utilisées ont été la fenêtre rectangulaire, la fenêtre de Hanning et la fenêtre de Blackman. D'après ces courbes et la formule (1), nous constatons que plus
est grand plus la moyenne des corrélations avec le bruit est petite : ainsi, a priori, il faut prendre
le plus grand possible.
Appliquer un bourrage de zéros ne change rien aux résultats en ce qui concerne la corrélation avec le bruit ou les lobes secondaires d'une sinusoïde. En fait, dans le cas d'un signal suivant une loi normale
, les échantillons fréquentiels réels et imaginaires du spectre complexe suivent des lois normales
. Mais, puisque la moyenne des corrélations ne dépend pas de la variance des échantillons fréquentiels (voir la formule (1)), le bourrage de zéros n'a pas d'influence sur elles.
Les corrélations pratiques et théoriques en fonction de
sont montrées, sans bourrage de zéros sur la figure figcor1, et avec un taux de bourrage de zéros de 16 (la taille de la fft est 16 fois la taille du signal) sur la figure figcor4. Bien sûr, dans le second cas, il faut, pour obtenir des résultats comparables au cas sans bourrage de zéros, prendre des tronçons plus larges.
Par contre, le bourrage de zéros permet d'améliorer les résultats de la corrélation avec le lobe principal donné par une sinusoïde pure : ainsi, en moyenne, la fréquence de cette sinusoïde est d'autant plus proche de celle d'un échantillon fréquentiel du spectre que le taux de bourrage de zéros est important, et donc la corrélation s'approche d'autant plus de 1. En moyenne, car cela dépend bien sûr de la fréquence de la sinusoïde : il y a toujours le cas défavorable où la fréquence d'une sinusoïde tombe juste entre deux échantillons fréquentiels du spectre.
Dans ce cas, les échantillons fréquentiels du spectre d'amplitude ne suivent pas une loi de Rayleigh.
La fenêtre de pondération utilisée est la fenêtre Blackman. Les autres paramètres sont :
Ici, nous nous intéressons avant tout au cas où nous considérons un tronçon (de taille
) du spectre d'amplitude dans les fréquences éloignées de
. Les résultats sont présentés sur les figures cosbbl1, cosbbl2, cosbbl3 et cosbbl4. Nous constatons que la moyenne des corrélations avec les lobes secondaires est égale à la moyenne des corrélations avec le bruit.
Ils sont au nombre de 5. Ce sont :
, la demi-largeur[Note : La taille du tronçon est en fait
.] des tronçons pour la corrélation ;
, le seuil au-dessus duquel il est décidé qu'une sinusoïde est présente ;
, la taille de la fft ;
, la taille des fenêtres d'analyse ; et la fenêtre de pondération utilisée. Pour les signaux réels sur lesquels cette fonction d'observation a été testée (voir les figures novo page novo et novoi page novoi), nous avons choisi
;
;
;
(
) ; et la fenêtre de pondération de Blackman.
Cette fois nous avons :
et :
La corrélation s'écrit alors :
Les corrélations avec les lobes secondaires et dans le cas où le signal est un bruit normal sont montrés sur les figures cosbbl1c, cosbbl2c, cosbbl3c et cosbbl4c. Nous constatons que les corrélations avec les lobes secondaires sont nulles, mais que dès qu'un petit bruit est présent nous obtenons les mêmes résultats qu'avec l'indice de voisement deuxième forme calculé avec les spectres d'amplitude. Nous avons pris les mêmes valeurs pour les paramètres que ci-dessus (section ssse:casinu). Les paramètres libres sont les mêmes que pour l'indice de voisement deuxième forme calculé avec les spectres d'amplitude (section ssec:parlib).
La fonction d'observation implémentée sous matlab est la << valeur absolue de
la dérivée de
>>, soit :
.
est grande, plus les performances sont bonnes,
c'est-à-dire plus les corrélations sont proches de 0 quand nous utilisons les
spectres complexes et un signal non bruité et corrélons avec des portions de spectre
loin de la zone d'influence de la sinusoïde. De la même façon, plus
est
grande, plus les corrélations avec le bruit (et les lobes secondaires quand nous
utilisons le spectre d'amplitude) sont petites.
Cependant, si une perturbation (c'est-à-dire une modulation d'amplitude ou de
fréquence) vient déformer les lobes principaux, plus
est
grande, plus la corrélation avec ces lobes principaux est petite.
La première solution serait de trouver un compromis.
Une autre solution serait d'étudier l'influence de ces perturbations sur les lobes principaux et d'essayer d'améliorer les indices de voisement en conséquence. Quelques travaux ont été faits en ce sens, qui ne sont pas présentés dans cet exposé.
Le comportement de la fonction d'observation est très différent en ce qui concerne les lobes secondaires suivant que nous la calculons avec le spectre d'amplitude ou le spectre complexe : le spectre complexe donne de meilleurs résultats. Cependant, en présence de bruit, même de variance faible, cet apport n'est plus visible. Utiliser l'une ou l'autre de cette version de cette fonction d'observation ne semble donc pas déterminant.
Un flux spectral est la somme échantillon fréquentiel par échantillon fréquentiel de la valeur absolue de la différence entre deux spectres d'amplitude, entre deux enveloppes spectrales, ou entre un spectre d'amplitude et une enveloppe spectrale.
Les spectres d'amplitude sont calculés par fft (voir ci-dessous la section flux_spectres) ; les enveloppes spectrales à partir de la modélisation ar (voir ci-dessous la section flux_ar), du cepstre (voir ci-dessous la section ceps) ou des maximums locaux du spectre d'amplitude (voir la section calenvspe, dans la partie part:seg_cara).
Nous calculons le spectre d'amplitude sur une portion pondérée de largeur
du signal (
vaut quelques dizaines de millisecondes : c'est-à-dire que
vaut quelques centaines d'échantillons), puis sur une portion pondérée du signal décalée de quelques millisecondes (c'est-à-dire de
échantillons) par rapport à la première. Les spectres d'amplitude sont calculés pour
échantillons fréquentiels. Nous appelons le premier spectre d'amplitude
et le second
. Nous avons donc
et
pour
variant de
à
.
Nous normalisons les spectres d'amplitude
et
pour qu'ils aient la même énergie comme nous l'indiquons page page:nor, avec
et
. Nous obtenons
et
.
Il s'agit de calculer :
Aux moments des transitions, c'est-à-dire aux changements de notes, la fonction d'observation
, ou << flux spectral >>, croît, puisque le signal n'est plus stationnaire.
L'enveloppe spectrale d'un spectre d'amplitude est une fonction lisse enveloppant ses pics (voir la figure figu:envspe), correspondant chacun à une sinusoïde. Une petite variation de l'amplitude ou de la fréquence (due à un trémolo ou à vibrato, entre autres) de ces sinusoïdes ne modifie pas énormément, d'une portion du signal à la suivante, l'enveloppe spectrale, alors que le spectre d'amplitude lui est très différent. Les effets du vibrato et du trémolo, ainsi que ceux du bruit, sont donc moins importants sur les enveloppes spectrales que sur les spectres d'amplitude. Nous espérons en utilisant les enveloppes spectrales plutôt que les spectres d'amplitude augmenter la robustesse de la fonction d'observation << flux spectral >>.
Il existe plusieurs moyens permettant d'obtenir l'enveloppe spectrale d'un spectre d'amplitude. Tout d'abord il y a la modélisation auto-régressive ( ar) : voir la section ssec:autoreg. Le choix de l'ordre des modèles pose un problème : il ne doit pas être trop élevé pour ne pas avoir une résonance trop importante pour les sinusoïdes présentes dans le signal. De plus, le temps de calcul devient rapidement très grand quand l'ordre augmente. Cette méthode est celle qui a été implémentée dans le programme segmentation.
Mais nous pouvons aussi considérer le cepstre (voir ci-dessous la section ceps), ou, encore, interpoler, linéairement ou d'une autre façon, entre les pics les plus grands (le problème étant de choisir les pics correspondant réellement à des sinusoïdes : voir la section vibr de la partie part:seg_cara) d'un spectre d'amplitude obtenu par transformée de Fourier ; etc.
Ici, nous appelons la densité spectrale de puissance définie dans la section ssec:autoreg, page page:dsp, l'enveloppe spectrale.
Il y a deux versions possibles de cette fonction d'observation :
, où
est le spectre d'amplitude calculé pour une portion du signal large de quelques dizaines de millisecondes et où
est l'enveloppe spectrale calculée pour la même portion.
est le numéro d'ordre des échantillons fréquentiels. Dans les zones où le signal est composé de sinusoïdes (signal voisé), la différence
entre le spectre d'amplitude et l'enveloppe spectrale est plus grande que dans les parties où il est transitoire (signal non voisé).
, où
et
sont deux enveloppes spectrales ar calculées pour deux portions successives du signal, décalées de
échantillons.
Cette méthode est similaire à la méthode décrite dans 2 (section flux_ar). Elle diffère simplement par la technique utilisée pour calculer les enveloppes spectrales. Il y a deux versions possibles de la fonction d'observation :
, où
est le spectre d'amplitude calculé sur une portion du signal large de
échantillons et où
est le spectre d'amplitude reconstruit après liftrage (voir la section liftr de la partie part:sou pour une présentation du cepstre et du liftrage) calculé sur la même portion.
est le numéro d'ordre des échantillons fréquentiels.
, où
et
sont deux spectres d'amplitude reconstruits après liftrage calculés pour deux portions successives du signal, décalées de
échantillons.
Nous pouvons découper les spectres d'amplitude ou les enveloppes spectrales en plusieurs bandes de fréquence. Alors, nous normalisons en énergie chacune de ces bandes indépendamment des autres. Nous calculons le << flux spectral >> pour chacune de ces bandes. Nous avons la possibilité :
bandes de tailles égales.
bandes de tailles croissant linéairement. Les fréquences centrales des bandes de fréquence peuvent être disposées logarithmiquement, de telle manière que nous suivions une échelle Bark/Mels (voir Book:Zwicker par exemple).
étant à entrer en paramètre, ou à déterminer automatiquement, le but étant de déterminer dans quelle bande de fréquences le signal est plutôt stable et dans quelle bande de fréquences il correspond plutôt à du bruit (voir la section ssec:pade).
Ceci n'a pas été implémenté dans le programme segmentation. Le nombre de paramètres libres augmenterait d'une unité. Il faudrait ajouter
, le nombre de bandes considérées, ou
la position de la césure : nous n'avons pas essayé au cours de cette thèse de déterminer la position optimale de la césure. Il s'agit de perspectives.
Ils sont au nombre de 4. Ce sont :
L'ordre des modèles ar est choisi petit, de l'ordre de 6.
est tel que l'écart temporel entre les deux fenêtres soit de l'ordre de
millisecondes.
Cette fonction d'observation a été utilisée dans le but de mettre en évidence avant tout les variations du contenu fréquentiel. Plusieurs bandes de fréquence seraient à utiliser pour deux raisons. D'abord, une évolution lente de l'énergie, sans changement de hauteur, agit surtout sur les hautes fréquences : les harmoniques de numéros d'ordre élevés sortent du bruit ou disparaissent dans le bruit. Ensuite, à énergie et à hauteur restant constantes, le bruit, pour les harmoniques de numéros d'ordre élevés, d'amplitudes souvent petites, est important, ce qui rend le flux spectral inutilisable pour ces fréquences : c'est-à-dire que nous obtenons les mêmes valeurs pour le flux spectral dans les zones stables et aux moments des transitions. Cette raison explique que nous ayons considéré les enveloppes spectrales.
Le centroïde est défini dans la section masri de cette partie et dans la section cen_sou de la partie part:sou. Le centroïde est utilisé aussi dans la méthode de Masri (voir la section masri) et la méthode de Hajda (voir la section ssec:methhajda).
La fonction d'observation est
la << valeur absolue de la dérivée du centroïde >>. La taille des fenêtres d'analyse
et la fenêtre de pondération sont les paramètres libres. La méthode est implémentée seulement sous matlab.
Il s'agit d'appliquer la même méthode que dans les sections rupt_f0 et rupt_ene, mais cette fois directement sur le signal sonore. Les paramètres libres sont les mêmes que ceux décrits dans la section rupt_f0. Cette méthode est utilisée pour la parole par Rapport:Basseville et Books:Bassnik, et pour la musique par Article:Lepain. Nous essayons ici de détecter directement les variations brusques du signal. La fonction d'observation est appelée
.
L'algorithme (voir Article:Brandt et Techreport:Jehan) est basé sur l'étude de trois modèles ar calculés pour trois portions
,
et
du signal sonore. Leurs tailles sont fixes. Elles sont simultanément glissantes. Le degré de dissemblance entre ces trois modèles est mesuré. Cette mesure, nous donnant des pics au moment des transitions et un bruit dans les zones stables, est une fonction d'observation. Les trois portions sont disposées comme il est indiqué sur la figure disp.
Un modèle ar d'ordre
est calculé pour chacune de ces portions. Nous obtenons les variances des trois erreurs de prédiction (des trois bruits blancs générateurs) :
,
et
. La fonction d'observation est alors le test de Brandt :
est l'instant central de la fenêtre
. Le moment de dissemblance maximale est obtenu quand la portion
couvre la fin d'une note et la portion
le début de la note suivante.
Ils sont au nombre de 2. Ce sont :
, la taille de la portion
;
, l'ordre des modèles ar. En général,
est pris petit (quelques unités).
D'un point de vue statistique, un signal << stable >> peut être défini comme étant un signal stationnaire (au second ordre) et ergodique. Un processus aléatoire
(signal analogique) est stationnaire au second ordre s'il vérifie :
indépendant de
(I)
, et indépendant de
(II)
fonction uniquement de
(III)
De la même façon, pour une suite aléatoire
(signal échantillonné) nous avons :
indépendant de
(I)
, et indépendant de
(II)
fonction uniquement de
(III)
Et le processus ou la suite aléatoire est ergodique (à l'ordre
) si ses moyennes temporelles (jusqu'à l'ordre
) sont indépendantes du choix de la réalisation (IV).
Nous considérons deux portions du signal de taille
et décalées de
échantillons : ce sont nos deux observations. La somme de sinusoïdes et d'un bruit normal est un processus stationnaire au second ordre et ergodique au moins jusqu'à l'ordre 2. Soit le cas d'un signal constitué d'une somme de
sinusoïdes de fréquences
et d'amplitudes
(aucun bruit n'est présent) :
Nous obtenons alors :
La première idée est de considérer les coefficients d'auto-corrélation pour différents
et de fusionner les résultats. La fonction d'observation à la base est donc multidimensionnelle, avec tous les problèmes de fusion de données qui se posent alors (voir la section sect:fusio). Il est nécessaire de considérer plusieurs
. En effet, il peut fort bien arriver que pour certains
nous ayons :
où les
et les
correspondent aux fréquences et aux amplitudes des
composantes sinusoïdales présentes dans une zone stable et les
et les
aux fréquences et aux amplitudes des
composantes sinusoïdales présentes dans la zone stable juste adjacente à la première. Dans ce cas la transition n'est pas détectée.
La fonction d'observation choisie est la << moyenne arithmétique des valeurs absolues des dérivées numériques des coefficients d'auto-corrélation >>, c'est-à-dire :
où
est un jeu de décalages temporels à définir,
le temps et
. Pour
, nous obtenons ce que nous appelons la << dérivée de l'énergie >> dans la section der_ene.
Ils sont au nombre de 2. Ce sont :
, la taille des portions du signal sur lesquelles nous calculons les coefficients d'auto-corrélation ;
, le jeu de décalages temporels. Nous prenons en compte les petits coefficients d'auto-corrélation.
Les performances en présence d'un signal << perturbé >> (par exemple par la présence d'un vibrato) sont très dégradées. Il faut aussi voir qu'en pratique
est très loin de tendre vers l'infini : souvent, nous utilisons, pour estimer les coefficients d'autocorrélation, des fenêtres d'analyse de seulement quelques centaines d'échantillons (
vaut quelques dizaines de millisecondes).
Masri, dans Thesis:Masri et Article:Masrideux, définit une fonction d'observation sensible aux attaques (<< onset >>) de notes. Soit
un signal de taille
et
sa transformée de Fourier, de taille
(
varie de
à
). Nous avons :
(nous commençons à sommer à partir de
, c'est-à-dire que nous ne prenons pas en compte le continu) ; et (<<
: High Frequency Content >>, ou centroïde non normalisé en énergie) :
Un changement soudain dans un signal introduit des discontinuités de phase, donc de l'énergie apparaît dans les hautes fréquences. Voilà pourquoi nous les favorisons dans
.
Le signal
est une portion du signal sonore, portion multipliée par une fenêtre de pondération. Cette portion est glissante : le pas de déplacement est de
échantillons. Nous indiçons chaque portion temporellement par
.
Ainsi, la fonction d'observation
(pour Fonction d'Observation de Masri) s'écrit :
Il s'agit à présent de la seuiller. Le problème est le même que pour les autres fonctions d'observation : comment choisir automatiquement le seuil de détection ? Masri ne répond pas à cette question : il seuille à la main. Nous donnons des solutions à ce problème dans le chapitre chap:pridec et l'annexe ann:seuil. Nous tentons ici de détecter simultanément les variations de l'énergie et les variations du contenu spectral. Cette fonction d'observation n'a pas été implémentée, ni sous matlab, ni en c. Les paramètres libres sont
et
.
est telle que la taille de la fenêtre d'analyse vaut quelques dizaines de millisecondes ; et
est tel que le pas de déplacement vaut quelques millisecondes.
Hajda, dans Article:Hajda, utilise lui aussi
(qu'il appelle le centroïde) et l'énergie (calculée dans le domaine temporel, et non pas comme pour la méthode de Masri dans le domaine fréquentiel). Le but ici aussi est de simultanément détecter les variations de l'énergie et les variations du contenu spectral. Chaque note est découpée en quatre zones, qui se succèdent : l'attaque, la transition, l'état stable et la chute. Le comportement (croissance ou décroissance) de l'énergie et du centroïde est observé pour décider dans quelle zone nous sommes. Ainsi, Hajda donne (et explique), le tableau tabl:hajda.
Les étiquettes qui sont données ici (attaque, transition, état stable, chute) complètent la liste d'étiquettes donnée dans le chapitre chap:label de cette partie. Cette fonction d'observation n'a pas été implémentée, ni sous matlab, ni en c.
Smith, dans l'article Article:Smith, filtre un signal
, obtenu à partir du signal sonore
original en prenant en compte certaines caractéristiques de la cochlée (filtrage passe-bande, les fréquences centrales des filtres étant logarithmiquement placées (échelle Mels) ; redressement de chaque signal obtenu après ce filtrage passe-bande ; sommation des signaux redressés), par des filtres basés sur des idées appliquées en traitement de l'image (voir Article:Marr).
Ces filtres sont de la forme :
( DoE : pour << Difference of Exponentials Filter >>)
ou :
( HDoG : pour << Half Difference of Gaussians >>)
Et le signal à segmenter est alors (différence entre une moyenne sur un temps court et une moyenne sur un temps long) :
valant
ou
.
Smith appelle les fonctions
les opérateurs << onset/offset >>.
Le problème réside toujours dans la difficulté rencontrée pour seuiller et dans la détermination des paramètres libres
,
,
et
. Cette fonction d'observation n'a pas été implémentée, ni sous matlab, ni en c.
Au sujet de la fusion de données, voir, pour une introduction, le livre de Varshney Book:Varshney. Le problème peut se formuler ainsi : plusieurs capteurs imparfaits tentent de détecter le même phénomène ; il faut rassembler leurs résultats, ceci dans l'objectif d'obtenir de meilleurs performances que si un seul des capteurs était utilisé.
Deux types de relations entre les capteurs dont nous voulons fusionner les données sont considérées dans cet exposé :
Faisons l'hypothèse que
soient
variables aléatoires normales indépendantes
de même moyenne et de même variance. L'écart-type de
est
.
Soient pour une dimension d'une fonction d'observation particulière nos deux modes : le premier, correspondant au bruit, suit une loi normale
; le second, correspondant aux pics à détecter, suit une loi normale
. Ces densités de probabilité sont les mêmes pour les
dimensions de la fonction d'observation considérée. Après moyennage des dimensions, les densités de probabilité des deux modes sont respectivement
et
. Ce moyennage a éloigné les deux modes l'un de l'autre : voir la section ssect:test3, où nous montrons que plus la distance entre les deux modes est grande plus le seuillage automatique (ceci concerne la deuxième étape de l'analyse segmentation en zones stables : voir le chapitre chap:pridec) est efficace.
La fusion de données homogènes correspond à la fusion d'observations.
Si les dimensions de la fonction d'observation, ou si les fonctions d'observation, ne suivent pas les mêmes densités de probabilité, le raisonnement du précédent paragraphe ne tient plus : nous sommes en présence de données hétérogènes.
Supposons que nous ayons trois variables aléatoires normales indépendantes
,
et
. Considérons trois cas.
. La variance de la moyenne est
.
. La variance de la moyenne est
.
,
et
. La variance de la moyenne est
, c'est-à-dire supérieure à celle de la variable aléatoire
. Ainsi, ici, la fusion des observations dégrade les performances du système (utiliser un seul capteur,
, donne de meilleurs performances qu'en utiliser trois).
Aussi, nous devons d'abord prendre les décisions pour chaque dimension de la fonction d'observation ou chaque fonction d'observation, et fusionner les fonctions de décision obtenues.
Ceci a lieu lors de la troisième étape de l'analyse segmentation en zones stables (voir le chapitre fus_tou), c'est-à-dire quand nous confrontons les fonctions de décision, quand il y a compétition entre elles. La fusion de données hétérogènes correspond à la fusion de décisions.
Nous allons, dans la suite de l'exposé, faire l'hypothèse que les dimensions des fonctions d'observation multidimensionnelles correspondent à des données homogènes, alors que deux fonctions d'observation différentes correspondent à des données hétérogènes.
Nous avons présenté dans les sections précédentes des fonctions d'observation multidimensionnelles : les << valeurs absolues des dérivées relatives des trajets des harmoniques du signal >>, les << valeurs absolues des dérivées des indices d'inharmonicité >>... Le problème est que nous voulons réduire chaque fonction d'observation multidimensionnelle à une fonction d'observation unidimensionnelle. Nous avons fait l'hypothèse que les données des dimensions de chaque fonction d'observation multidimensionnelle sont homogènes. La méthode la plus simple pour réduire le nombre de dimensions est de les moyenner. Les moyennes qui peuvent être considérées sont (il s'agit des moyennes classiques) :
, où
est la fonction d'observation pour sa dimension
à l'instant
. Cette moyenne est celle qui est utilisée le plus communément.
.
.
La moyenne arithmétique est implémentée dans le programme segmentation pour toutes les fonctions d'observation multidimensionnelles. La moyenne géométrique (sans la racine d'ordre
) est implémentée dans le programme segmentation pour fusionner les valeurs absolues des dérivées des indices d'inharmonicité.
Dans les moyennes présentées ci-dessus, les dimensions ont toutes le même poids. Il pourrait être utile de moins prendre en compte celles qui concernent les hautes fréquences, de pondérer chacune d'elle par l'amplitude de l'harmonique qui la concerne, ou par l'énergie de la bande de fréquence qui la concerne
Il s'agit de perspectives.
Cette section concerne la fusion des fonctions de décision.
Les quatre décisions possibles sont
(le capteur a détecté quelque chose et il y avait quelque chose à détecter) ou
(le capteur n'a rien détecté alors qu'il y avait quelque chose à détecter) ; et
(le capteur a détecté quelque chose alors qu'il n'y avait rien à détecter) ou
(le capteur n'a rien détecté et il n'y avait rien à détecter).
Faisons l'hypothèse que nous ayons trois capteurs identiques (<< identiques >> veut dire qu'ils ont la même probabilité de bonne détection :
et la même probabilité de fausse alarme :
). Supposons que la probabilité de bonne détection
(c'est-à-dire : le capteur détecte quelque chose et il y a quelque chose à détecter) pour chacun d'eux soit égale à 0,8 (cas 1). Supposons que la probabilité de fausse alarme (c'est-à-dire : le capteur détecte quelque chose alors qu'il n'y a rien à détecter) pour chacun d'eux soit égale à 0,3 (cas 2).
Remarquons que les deux cas sont semblables, si nous formulons le second ainsi : << supposons que la probabilité de bonne détection (c'est-à-dire : le capteur ne détecte rien et il n'y a rien à détecter) pour chacun d'eux soit égale à 0,7 >>. Cela indique qu'il y a deux sortes de bonnes détections.
Considérons le premier cas : il y a quelque chose à détecter. Nous décidons qu'il y a quelque chose si au moins deux capteurs nous indiquent qu'ils ont détecté quelque chose (c'est-à-dire quand le poids du
est supérieur au poids du
: il s'agit de la règle de la majorité). Nous donnons dans le tableau tabl:fusiotrois1 les diverses configurations possibles (les trois capteurs ont détectés quelque chose, deux des capteurs ont détecté quelque chose, etc.), la probabilité d'apparition de chacune de ces configurations, le poids du
et du
pour chaque configuration et la décision finale pour chaque configuration. Grâce à la fusion des fonctions de décisions de ces trois capteurs, la probabilité de bonne détection (c'est-à-dire : on détecte quelque chose et il y a quelque chose à détecter) passe de 0,8 à 0,896 (somme des probabilités des configurations I, II, III et V).
Considérons le second cas : il n'y a rien à détecter. Nous travaillons toujours avec les trois mêmes capteurs. Grâce à la fusion des fonctions de décisions de ces trois capteurs, la probabilité de fausse alarme (c'est-à-dire : quelque chose est détecté alors qu'il n'y a rien à détecter) passe de 0,3 à 0,216.
Ci-dessus nous avons considéré trois capteurs identiques (mêmes probabilités de bonne détection et mêmes probabilités de fausse alarme). Clairement, la fusion des fonctions de décisions de ces trois capteurs permet d'obtenir une plus grande probabilité de bonne détection et une plus petite probabilité de fausse alarme.
Quand les capteurs ne sont pas identiques, l'apport de la fusion des fonctions de décisions devient incertain. Nous donnons quelques exemples dans le tableau tabl:fusiotrois2. Nous constatons que la fusion de données n'est pas efficace pour tous les exemples (la fusion de données est inefficace quand l'un des capteurs a une
supérieure à la
finale).
Dans deux cas la fusion de données est inefficace. Pour le cas 3, ceci est dû à ce que l'un des capteurs a des performances très supérieures à celles des deux autres. Pour le cas 7, ceci est dû à ce que l'un des capteurs a des performances très inférieures à celles des deux autres.
Ces exemples nous montrent qu'il faut utiliser la fusion de décisions avec prudence. Il faut d'abord s'assurer que les fonctions de décision obtenues aient des performances sensiblement identiques.
Nous pourrions ajouter des poids sur les capteurs : nous faisons plus confiance en tel ou tel capteur. Ceci ne ferait qu'augmenter la difficulté du processus de fusion.
Nous considérons dans cette section que nous avons 5 capteurs. Deux cas sont étudiés : ou bien deux des capteurs sont absolument corrélés (fonctions de décision identiques), ou bien ils sont tous décorrélés. Nous donnons dans le tableau tabl:fusiotrois3 la
finale pour plusieurs configurations des
des capteurs, ceci suivant que deux des capteurs sont absolument corrélés (dans ce cas, ce sont les capteurs 1 et 2 qui sont corrélés) ou décorrélés.
Ces exemples nous montrent que l'utilisation de fonctions de décision égales (capteurs absolument corrélés) fait que les performances de la fusion de données sont moins bonnes qu'espéré. Il faut d'abord s'assurer que les capteurs soient décorrélés.
Nous considérons dans cette section que nous avons
capteurs. La probabilité de bonne détection pour chaque capteur est
(capteurs identiques). Nous étudions la probabilité de bonne détection après la fusion de données. Plusieurs cas sont considérés :
.
capteurs dans ce cas est exactement égale à la probabilité de bonne détection obtenue pour
capteurs dans le cas précédent (1. .
La probabilité de bonne détection après la fusion de décisions, pour ces quatre cas, est donnée en fonction de
sur la figure figu:pbdncapteurs.
Ainsi nous pouvons voir qu'il est important d'utiliser des fonctions d'observation décorrélées.
Le recensement des fonctions d'observation utilisables pour la segmentation en zones stables d'un signal monophonique, harmonique et non modulé (c'est-à-dire pour la segmentation en notes et/ou en phones) est fait dans le tableau res1. Nous donnons dans ce tableau pour chaque fonction d'observation à quel endroit de cet exposé elle est décrite ; son nombre de dimensions ; son degré d'indépendance par rapport aux programmes de l' ircam ; si elle est implémentée dans le programme segmentation ; et son nom symbolique. Les performances de ces fonctions d'observation sont évaluées sur des bases de données qui sont présentées dans la section anna, ainsi que sur des signaux simulés.
Nous avons défini un processus de segmentation, décomposé en quatre étapes. Nous venons de décrire le première : l'extraction de fonctions d'observation. Tel est ce processus de segmentation que nous pouvons toujours implémenter d'autres fonctions d'observation et aisément les y intégrer. Ainsi, un certain nombre de fonctions d'observation ont été définies par différents auteurs, que nous n'avons pas présentées ici. La méthode d' Alkulaibi (voir la référence Article:Alkulaibi) nous donne une fonction d'observation basée sur les moments d'ordres supérieurs (<< Higher Order Moments : HOM >>). La méthode de Solbach (voir la référence Article:Solbach) nous donne une fonction d'observation basée sur les ondelettes. Dans Article:Faudemay et Article:Junqua sont définies des fonctions d'observation basées sur les coefficients cepstraux. Etc.
Seulement, quelques remarques sont à faire à propos de l'intégration d'éventuelles nouvelles fonctions d'observation :
Ceci sera discuté plus en détail dans les chapitres per_seg1 et nec_seg, puis dans les autres parties de l'exposé.
Lors du calcul de certaines fonctions d'observation, le programme segmentation offre la possibilité de tenir compte de la fonction d'audition de l'oreille (voir l'annexe anne:attenu). Ainsi, ces fonctions d'observation peuvent aussi bien être considérées d'un point de vue purement traitement du signal, que d'un point de vue plus perceptif. Pour les flux spectraux, cette prise en compte de la fonction d'audition de l'oreille se traduit par le calcul du produit de la valeur de chaque échantillon fréquentiel des spectres d'amplitude ou des enveloppes spectrales par la valeur de la fonction d'audition de l'oreille à la fréquence pour cet échantillon fréquentiel. Pour les indices de voisement et pour les indices d'inharmonicité, cette prise en compte de la fonction d'audition de l'oreille se traduit par le calcul du produit de chaque indice par la valeur de la fonction d'audition de l'oreille à la fréquence du partiel qui nous donne cet indice.
Les fonctions d'observation implémentées dans le programme segmentation sont au nombre de dix. Il s'agit de :
>>
>>
Seule la dernière fonction d'observation est basée sur un algorithme de décision. Pour les autres, il nous faut discriminer les pics qui ont un sens, c'est-à-dire ceux qui correspondent à une transition, de ceux qui correspondent à du bruit, c'est-à-dire qui sont présents dans les parties stables du signal. Ceci est la deuxième étape de l'analyse segmentation en zones stables.
Dans la deuxième section (section sect:seuil) de ce chapitre, est présentée la méthode de seuillage qui a été retenue.
Dans la troisième section (section sect:norma) de ce chapitre, nous discutons de la normalisation des fonctions d'observation, cette normalisation ayant pour but d'éviter le seuillage.
Nous donnons une conclusion dans la quatrième section (section sect:conper) de ce chapitre. Nous donnons aussi quelques perspectives.
Chaque fonction d'observation correspond à une variable aléatoire dont les échantillons se répartissent en deux classes : une qui correspond à du bruit (dans les zones stables) ; l'autre aux pics à détecter (aux moments des transitions). Il s'agit de discriminer ces deux classes, c'est-à-dire de poser un seuil. Il existe un grand nombre de méthodes pour seuiller automatiquement. Elles sont présentées, non exhaustivement, dans l'annexe ann:seuil. Leurs qualités et leurs défauts respectifs sont discutées dans cette même annexe. Elles viennent principalement du traitement des images : voir notamment Article:Survey.
Dans notre cas, les pics dus aux transitions sont très rares et leur variance est grande. Nous montrons dans l'annexe ann:seuil que les performances des méthodes de seuillage sont énormément dégradées quand la probabilité a priori d'une classe est très petite et quand la variance de cette même classe est très supérieure à la variance de l'autre classe.
La méthode implémentée dans le programme segmentation est la méthode des
. Si nous considérons que le bruit suit une loi normale, nous pouvons estimer
, l'écart-type, en retenant par exemple