FR 3136099 A1 20231201 FR 2205172 A 20220530 Codage audio spatialisé avec adaptation d’un traitement de décorrélation L’invention se rapporte à un procédé de codage de signaux sonores formant une succession dans le temps de trames (t-1, t) d’échantillons, dans chacun de n canaux en représentation ambisonique d’ordre supérieur à 0, le procédé comportant : - déterminer pour la trame courante à coder, la valeur d’une indication d’activation d’un traitement de décorrélation à appliquer aux signaux de la trame courante et coder cette valeur dans le train binaire; - dans le cas où la dite indication a une valeur positive, coder dans le train binaire des informations de traitement de décorrélation ; - générer un signal de sortie à coder dans le train binaire, en fonction du la dite indication dans la trame courante et la trame précédente. L’invention se rapporte également à un procédé de décodage correspondant ainsi qu’à des dispositifs de codage et de décodage mettant en œuvre les procédés de codage et de décodage respectifs. Figure de l’abrégé : Figure 3 Codage audio spatialisé avec adaptation d’un traitement de décorrélation La présente invention concerne le codage/décodage de données sonores spatialisées, notamment en contexte ambiophonique (noté ci-après également « ambisonique »). Les codeurs/décodeurs (ci-après appelés « codecs ») qui sont utilisés actuellement en téléphonie mobile sont mono (un seul canal de signal pour une restitution sur un seul haut-parleur). Le codec 3GPP EVS (pour « Enhanced Voice Services ») permet d’offrir une qualité « Super-HD » (aussi appelée voix « Haute Définition Plus » ou HD+) avec une bande audio en bande super-élargie (SWB pour « super-wideband » en anglais) pour des signaux échantillonnés à 32 ou 48 kHz ou pleine bande (FB pour « Fullband ») pour des signaux échantillonnés à 48 kHz ; la largeur de bande audio est de 14,4 à 16 kHz en mode SWB (de 9,6 à 128 kbit/s) et de 20 kHz en mode FB (de 16,4 à 128 kbit/s). La prochaine évolution de qualité dans les services conversationnels proposés par les opérateurs devrait être constituée par les services immersifs, en utilisant des terminaux tels que des smartphones équipés de plusieurs microphones ou des équipements de conférence audio spatialisée ou de visioconférence de type télé-présence ou vidéo 360°, ou encore des équipements de partage de contenus audio « live », avec un rendu sonore spatialisé en 3D autrement plus immersif qu’une simple restitution stéréo 2D. Avec les usages de plus en plus répandus d’écoute sur téléphone mobile avec un casque audio et l’apparition d’équipements audio avancés (accessoires tels qu’un microphone 3D, assistants vocaux avec antennes acoustiques, casques de réalité virtuelle, etc.) la captation et le rendu de scènes sonores spatialisées sont désormais assez communes pour offrir une expérience de communication immersive. A ce titre, la future norme 3GPP « IVAS » (pour « Immersive Voice And Audio Services ») propose l’extension du codec EVS à l’immersif en acceptant comme format d’entrée du codec au moins les formats de son spatialisé listés ci-dessous (et leurs combinaisons): - Format multicanal (channel-based en anglais) de type stéréo ou 5.1, où chaque canal vient alimenter un haut-parleur (par exemple L et R en stéréo, ou L, R, Ls, Rs et C en 5.1) ; - Format objet (object-based en anglais), où des objets sonores sont décrits comme un signal audio (en général mono) associé à des métadonnées décrivant les attributs de cet objet (position dans l’espace, largeur spatiale de la source, etc.), - Format ambisonique (scene-based en anglais) qui décrit le champ sonore en un point donné, en général capté par un microphone sphérique ou synthétisé dans le domaine des harmoniques sphériques. On s’intéresse ci-après typiquement au codage d’un son au format ambisonique, à titre d’exemple de réalisation (au moins certains aspects présentés en lien avec l’invention ci-après pouvant également s’appliquer à d’autres formats que de l’ambisonique). L’ambisonique est une méthode d’enregistrement (« codage » au sens acoustique) de son spatialisé et de reproduction (« décodage » au sens acoustique). Un microphone ambisonique (à l’ordre 1) comprend au moins quatre capsules (typiquement de type cardioïde ou sous-cardioïde) arrangées sur une grille sphérique, par exemple les sommets d’un tétraèdre régulier. Les canaux audio associés à ces capsules s’appellent le « A-format ». Ce format est converti dans un « B-format », dans lequel le champ sonore est décomposé en quatre composantes (harmoniques sphériques) notées W, X, Y, Z, qui correspondent a quatre microphones virtuels coïncidents. La composante W correspond à une captation omnidirectionnelle du champ sonore alors que les composantes X, Y et Z, plus directives, sont assimilables a des microphones à gradients de pression orientés suivant les trois axes orthogonaux de l’espace. Un système ambisonique est un système flexible dans le sens où l’enregistrement et la restitution sont séparés et découplés. Il permet un décodage (au sens acoustique) sur une configuration quelconque de haut-parleurs (par exemple, binaural, son « surround » de type 5.1 ou périphonie (avec élévation) de type 7.1.4). L’approche ambisonique peut être généralisée à plus de quatre canaux en B-format et cette représentation généralisée est couramment nommée « HOA » (pour « Higher-Order Ambisonics »). Le fait de décomposer le son sur plus d’harmoniques sphériques améliore la précision spatiale de restitution lors d’un rendu sur haut-parleurs. Un signal ambisonique à l’ordre M comprend K=(M+1)² composantes et, à l’ordre 1 (si M=1), on retrouve les quatre composantes, W, X, Y, et Z, qui est couramment appelé FOA (pour First-Order Ambisonics). Il existe aussi une variante dite « planaire » de l’ambisonique (W, X, Y) qui décompose le son défini dans un plan qui est en général le plan horizontal. Dans ce cas, le nombre de composantes est de K =2M+1 canaux. L’ambisonique d’ordre 1 (4 canaux : W, X, Y, Z), l’ambisonique d’ordre 1 planaire (3 canaux : W, X, Y), l’ambisonique d’ordre supérieur sont tous désignés ci-après par « ambisonique » indistinctement pour faciliter la lecture, les traitements présentés étant applicables indépendamment du type planaire ou non et du nombre de composantes ambisoniques. Par la suite, on appellera « signal ambisonique » un signal en B-format à un ordre prédéterminé avec un certain nombre de composantes ambisoniques. Cela comprend également les cas hybrides, où par exemple à l’ordre 2 on ne dispose que de 8 canaux (au lieu de 9) – plus précisément, à l’ordre 2, on retrouve les 4 canaux de l’ordre 1 (W, X, Y, Z) auxquels on ajoute normalement 5 canaux (habituellement notés R, S, T, U, V), et on peut par exemple ignorer un des canaux d’ordre supérieur (par exemple R). Cela comprend aussi les cas où un signal ambisonique a subi des prétraitements pour le transformer en des canaux prétraités avant codage. Les signaux à traiter par le codeur/décodeur se présentent comme des successions de blocs d’échantillons sonores appelés « trames » ou « sous-trames » ci-après. En outre, ci-après, les notations mathématiques suivent la convention suivante : - Scalaire : s ou N (minuscule pour les variables ou majuscule pour les constantes) - l’opérateur Re(.) désigne la partie réelle d’un nombre complexe - Vecteur : u (minuscule, gras) - Matrice : A (majuscule, gras) Les notations A T et A H indique respectivement la transposition et la transposition hermitienne (transposée et conjuguée) de A . - Un signal unidimensionnel à temps discret, s(i), défini sur un intervalle temporel i=0, …, L-1 de longueur L est représenté par un vecteur ligne On pourra aussi écrire : s = [s 0 ,…, s L-1 ] pour éviter l’usage des parenthèses. - Un signal multidimensionnel à temps discret, b (i), défini sur un intervalle temporel i=0, …, L-1 de longueur L et à K dimensions est représenté par une matrice de taille LxK: . On pourra aussi noter : B = [B ij ], i=0,…K-1, j=0…L-1, pour éviter l’usage des parenthèses. Par ailleurs, on ne rappelle pas ici les conventions connues de l’état de l’art en ambisonique concernant l’ordre des composantes ambisoniques (dont ACN pour « Ambisonic Channel Number », SID pour « Single Index Designation », FuMA pour « Furse-Malham ») et la normalisation des composantes ambisoniques (SN3D, N3D, maxN). Plus de détails peuvent être trouvés par exemple dans la ressource disponible en ligne : https://en.wikipedia.org/wiki/Ambisonic_data_exchange_formats Par convention, la première composante d’un signal ambisonique correspond en général à la composante omnidirectionnelle W. L’approche la plus simple pour coder un signal ambisonique consiste à utiliser un codeur mono et à l’appliquer séparément à chacun des canaux individuels avec éventuellement une allocation des bits différente selon les canaux. Cette approche est appelée ici « multi-mono ». On peut étendre l’approche multi-mono à du codage multi-stéréo (où des paires de canaux sont codées séparément par un codec stéréo) ou plus généralement à l’utilisation de plusieurs instances parallèles d’un même codec cœur. Le signal d’entrée est divisé en canaux (un canal mono ou plusieurs canaux). Ces canaux sont codés séparément en fonction d’une répartition et d’une allocation binaire prédéterminées. Au décodage les canaux décodés sont recombinés selon la convention du signal d’entrée. La qualité du codage multi-mono ou multi-stéréo varie selon le codage et le décodage cœur utilisé, et elle n’est en général satisfaisante qu’à très haut débit. Par exemple, dans le cas multi-mono, le codage EVS peut être jugé quasi-transparent (d’un point de vue perceptif) à un débit d’au moins 48 kbit/s par canal (mono); ainsi pour un signal ambisonique à l’ordre 1 on obtient un débit minimal de 4x48 = 192 kbit/s. L’approche de codage multi-mono ne prenant pas en compte la corrélation entre canaux, elle produit des déformations spatiales avec l’ajout de différents artéfacts comme l’apparition de sources sonores fantômes, de bruits diffus ou de déplacements des trajectoires de sources sonores. Ainsi, le codage d’un signal ambisonique selon cette approche engendre des dégradations de la spatialisation. Une approche alternative au codage séparé des canaux est donnée par le codage paramétrique comme le codage DiRAC décrit par exemple dans l’article V. Pulkki, Spatial sound reproduction with directional audio coding, Journal of the Audio Engineering Society, vol. 55, no. 6, pp. 503-516, 2007. Dans ce document, une analyse directionnelle du signal ambisonique est réalisée par trame et sous-bandes pour déterminer des directions de source (DoA). Les DoA sont complétées par des paramètres de « diffuseness », ce qui donne une description paramétrique de la scène sonore. Le signal d’entrée multicanal est codé sous la forme de canaux de downmix (typiquement un signal mono ou stéréo obtenu par réduction de multiples canaux captés) et des métadonnées spatiales (DoA et « diffuseness » par sous-bandes). On s’intéresse dans l’invention à une autre approche particulière de codage ambisonique, décrite dans les publications suivantes : P. Mahé, S. Ragot, S. Marchand, "First-order ambisonic coding with quaternion-based interpolation of PCA rotation matrices," Proc. EAA Spatial Audio Signal Processing Symposium, Paris, France, Sept. 2019, pp. 7-12 P. Mahé, S. Ragot, S. Marchand, "First-Order Ambisonic Coding with PCA Matrixing and Quaternion-Based Interpolation," Proc. DAFx, Birmingham, UK, Sept. 2019. Cette approche, appelée par la suite codage par analyse en composantes principales ou simplement codage PCA (pour Principal Component Analysis) utilise la quantification et l’interpolation de matrices de rotations associées aux vecteurs propres d’une analyse PCA, comme décrit également dans la demande de brevet WO2020177981. La stratégie de ce type de codage ambisonique est de décorréler les canaux du signal ambisonique et de coder ensuite séparément les canaux transformés avec un codec cœur (par exemple multi-mono). Cette stratégie permet de limiter les artéfacts spatiaux dans le signal ambisonique décodé. Dans cette approche, pour un signal ambisonique d’ordre 1, des matrices de rotation de taille 4x4 en 3D (issues d’une analyse PCA/KLT telle que décrite par exemple dans la demande de brevet suscitée) sont converties en paramètres, par exemple 6 angles d’Euler généralisés ou deux quaternions unitaires, qui sont codés. Sans perte de généralité, on retient ici plus particulièrement le domaine des quaternions qui permet d’interpoler efficacement les matrices de transformation calculées pour l’analyse PCA/KLT ; les matrices de transformation étant des matrices de rotation, au décodage, l’opération de matriçage inverse s’effectue simplement en transposant la matrice appliquée au codage. La illustre cette méthode de codage dans le cas où la représentation par quaternions est utilisée à la fois pour le codage et l’interpolation des matrices de rotation. Le codage se déroule en plusieurs étapes. Le signal multicanal d’origine A de dimension KxL (soit K composantes de L échantillons temporels ou fréquentiels) est en entrée. Dans le bloc 100 on réalise une analyse PCA divisée en plusieurs étapes : - Les signaux des canaux (par exemple W, Y, Z, X pour le cas FOA) sont supposés être sous une forme matricielle avec une matrice (pour canaux ambisoniques (ici 4) et échantillons par trame). On peut optionnellement pré-traiter ces canaux par exemple par un filtre passe-haut. Une matrice de covariance du signal multicanal A est obtenue, par exemple comme suit : C = A.A T à un facteur de normalisation près (dans le cas réel) ou C = Re( A.A H ) à un facteur de normalisation près (dans le cas complexe) Des opérations de lissage temporel de la matrice de covariance peuvent être utilisées. Dans les cas d’un signal multicanal dans le domaine temporel, la covariance peut être estimée de façon récursive (échantillon par échantillon). On peut également diviser la trame en sous-trames et déterminer une matrice de covariance par sous-trames qui est ensuite lissée. On note en particulier les éléments diagonaux de C sous la forme C ii , ils représentent l’énergie du i-ème canal d’entrée du traitement PCA. - On applique une analyse en composantes principales PCA ou de façon équivalente une transformée de Karhunen-Loeve (KLT), avec une décomposition en valeurs propres de la matrice de covariance C , pour obtenir des valeurs propres et une matrice de vecteurs propres U de sorte que - La matrice de vecteurs propres initiale U , obtenue pour la trame courante t, subit des permutations signées pour qu’elle soit la plus alignée possible avec la matrice de même nature V de la trame précédente , afin d’assurer une cohérence maximale entre les matrices de transformation entre deux trames. On s’assure en outre que la matrice de vecteurs propres de la trame courante , ainsi corrigée par permutations signées, représente bien l’application d’une rotation. Dans le bloc 110, la nouvelle matrice de vecteurs propres V pour la trame courante (qui est une matrice de rotation) est convertie dans un domaine approprié de paramètres de quantification. La matrice de valeurs propres correspondante est ici noté . On prend ici le cas d’une conversion en 2 quaternions unitaires pour une matrice 4x4 ; on aurait un seul quaternion unitaire pour une matrice 3x3 dans le cas ambisonique planaire. En dimension 4 ( ), une matrice de rotation V peut être paramétrée par le produit de deux quaternions unitaires et sous la forme matricielle : où les quaternions sont et , avec par exemple : Et Inversement, étant donné une matrice de rotation 4x4, il est possible de retrouver un double quaternion associé ( , ) et les matrices correspondantes. Autrement dit, on peut factoriser cette matrice en un produit de matrices sous la forme , par exemple avec la méthode dite « factorisation de Cayley ». Cela implique en général de calculer une matrice intermédiaire appelée « matrice associée » (ou « transformée tétragonale ») et d’en déduire les quaternions à une indétermination près sur le signe des deux quaternions. Ces paramètres , sont codés selon une méthode de codage de l’état de l’art (bloc 120) sur un nombre de bits alloués à la quantification de paramètres. Par exemple on pourrait utiliser 19 bits pour et 18 bits pour , ce qui donne un budget N Q =37 bits par trame. La trame courante est découpée en sous-trames, dont le nombre ici est supposé fixe. La représentation par quaternions codés est interpolée (bloc 130) par sous-trames successives d’indice t’ depuis la fin de la trame précédente jusqu’à fin de la trame courante , afin de lisser dans le temps la différence entre matriçage inter-trames. Les quaternions interpolés dans chaque sous-trame sont convertis en matrices de rotation (t’) (bloc 140) puis on applique les matrices résultantes de rotation décodées et interpolées dans chaque sous-trame (bloc 150). On obtient en sortie du bloc 150 une matrice représentant chacune des sous-trames des signaux des canaux ambisoniques pour décorréler ces signaux et obtenir le signal transformé B . Une allocation binaire aux canaux séparés est également effectuée (bloc 160) à partir du nombre de bits global auquel on retranche les N Q bits utilisés dans le bloc 120. La illustre le décodage correspondant. Les indices de quantification des paramètres de quantification de la matrice de rotation dans la trame courante sont dé-multiplexés (bloc 200) et décodés dans le bloc 230 selon une méthode de décodage correspondant au codage (bloc 120). Les canaux transformés sont également décodés (bloc 220), à partir de l’allocation binaire (bloc 210) identique au codeur (bloc 160). Les étapes de conversion et d’interpolation (blocs 240, 250) du décodeur sont identiques à celles effectuées à l’encodeur (blocs 130 et 140). Le bloc 260 applique par sous-trame le matriçage inverse issu du bloc 250 aux signaux décodés des canaux ambisoniques, en rappelant que l’inverse d’une matrice de rotation est sa transposée. On notera que le retard algorithmique lié au codage-décodage (blocs 170 et 220) doit être compensé en mémorisant de façon adéquate les valeurs de matriçage inverse. Le codage ambisonique tel que réalisé aux figures 1 et 2 suppose que les canaux d’entrée sont (suffisamment) corrélés. En particulier il suppose que la décorrélation par le bloc 150 apporte un gain de codage ; de plus, il suppose que le matriçage est stable d’une trame à l’autre pour ne pas générer d’artéfacts audio au niveau du signal transformé B . On note également que le codage des métadonnées (bloc 120) utilise un débit typiquement de l’ordre de 2 kbit/s (par exemple 1.85 kbit/s quand N Q =37 bits par trame de 20 ms) qui est pris au budget de codage des canaux (blocs 160 et 170). Cependant, pour certains signaux tels que des enregistrements d’applaudissement où le champ sonore est relativement diffus, le gain de décorrélation peut être faible. Pour des signaux instables spatialement, par exemple des sons percussifs dont la localisation alterne rapidement à chaque trame dans l’espace sonore, l’analyse PCA (bloc 100) peut conduire à une très forte variation du matriçage par . Dans ces deux cas, une utilisation constante de métadonnées pour représenter la transformation PCA s’avère peu pertinente. La présente invention vient améliorer cette situation. Elle propose à cet effet un procédé de codage de signaux sonores formant une succession dans le temps de trames (t-1, t) d’échantillons, dans chacun de n canaux en représentation ambisonique d’ordre supérieur à 0, le procédé comportant : - déterminer pour la trame courante à coder, la valeur d’une indication d’activation d’un traitement de décorrélation à appliquer aux signaux de la trame courante et coder cette valeur dans le train binaire; - dans le cas où la dite indication a une valeur positive, coder dans le train binaire des informations de traitement de décorrélation ; - générer un signal de sortie à coder dans le train binaire, en fonction du la dite indication dans la trame courante et la trame précédente. Ainsi, la présente invention permet d’adapter l’utilisation d’une décorrélation entre les n canaux en fonction des caractéristiques du signal d’entrée. Dans un mode de réalisation, la détermination de la valeur de l’indication s’effectue selon au moins un critère de gain de codage de signaux avant et après traitement de décorrélation. Ce critère permet ainsi de s’assurer que le traitement de décorrélation apporte un gain suffisant pour être activer. Selon un mode particulier de réalisation, le gain de codage est défini par la valeur logarithmique suivante : avec les énergies des canaux d’entrée du traitement de décorrélation et les valeurs propres des canaux d’entrée, la valeur de l’indication étant déterminée négative pour une valeur du gain G prédéfinie. Dans un mode de réalisation, la détermination de la valeur de l’indication s’effectue selon un critère de distance inter-trame entre matrices de rotation appliquant le traitement de décorrélation. Ainsi, selon la valeur de cette distance, on adapte la génération du signal à coder pour éviter de trop fortes variations de la matrice de transformation appliquant le traitement de décorrélation. Selon un mode de réalisation particulier, dans lequel les matrices de rotation sont représentées en double quaternion, la distance inter-trame entre matrices de rotation s’exprimant à partir d’un produit scalaire entre les quaternions à la trame courante et ceux de la trame précédente. Dans un mode de réalisation, la détermination de la valeur de l’indication s’effectue selon un critère de distance entre une matrice de rotation, appliquant le traitement de décorrélation, de la trame courante et la matrice identité. Ainsi, là aussi, selon la valeur de cette distance, on adapte la génération du signal à coder pour éviter de trop fortes variations de la matrice de transformation appliquant le traitement de décorrélation par rapport à un codage direct de l’entrée. Dans un mode de réalisation particulier, dans lequel les matrices de rotation sont représentées en double quaternion, la distance entre la une matrice de rotation de la trame courante et la matrice identité s’exprimant sous la forme d’un produit scalaire entre les quaternions à la trame courante et des quaternions unitaires. L’invention s’applique à un procédé de décodage de signaux sonores formant une succession dans le temps de trames (t-1, t) d’échantillons, dans chacun de n canaux en représentation ambisonique d’ordre supérieur à 0, le procédé comportant : - recevoir, pour une trame courante (t), en plus des signaux des n canaux de cette trame courante, une indication d’activation d’un traitement de décorrélation appliqué au signaux de la trame courante ; - dans le cas où la dite indication a une valeur positive, décoder des informations de traitement de décorrélation reçues dans le train binaire; - générer un signal de sortie, en fonction du la dite indication dans la trame courante et la trame précédente. Le procédé de décodage a les mêmes avantages que le procédé de codage correspondant. La présente invention vise aussi un dispositif de codage comportant un circuit de traitement pour la mise en œuvre du procédé de codage présenté précédemment. Elle vise aussi un dispositif de décodage comportant un circuit de traitement pour la mise en œuvre du procédé de décodage ci-avant. Elle vise aussi un programme informatique comportant des instructions pour la mise en œuvre du procédé ci-avant, lorsque ces instructions sont exécutées par un processeur d’un circuit de traitement. Elle vise aussi un support mémoire non-transitoire stockant les instructions d’un tel programme informatique. D’autres avantages et caractéristiques et caractéristiques de l’invention apparaitront à la lecture d’exemples de réalisation présentés dans la description détaillée ci-après, et à l’examen des dessins annexés sur lesquels : illustre un mode de réalisation d’un codeur et d’un procédé de codage selon une méthode de l’état de l’art ; illustre un mode de réalisation d’un décodeur et d’un procédé de décodage selon une méthode de l’état de l’art ; illustre un mode de réalisation d’un codeur et d’un procédé de codage selon un mode de réalisation de l’invention ; illustre un mode de réalisation d’un décodeur et d’un procédé de décodage selon un mode de réalisation de l’invention ; illustre des exemples de réalisation structurelle d’un codeur et d’un décodeur au sens de l’invention. Sans perte de généralité le signal d’entrée est supposé être un signal ambisonique d’ordre 1 FOA au format ACN et selon la normalisation SN3D. Dans des variantes, le signal d’entrée pourra avoir subi des prétraitements, pour obtenir 4 canaux dérivés d’un signal ambisonique (FOA) original. La illustre une méthode de codage selon l’invention où la décorrélation par PCA est appliquée de façon adaptive (PCA active ou non) dans chaque trame supposée ici de longueur 20 ms (par exemple L=960 échantillons à 48 kHz). On suppose que R bits sont alloués à la trame courante pour le codage, par exemple à 256 kbit/s on a R = 5120 bits. Dans des variantes, ce budget R pourra être diminué en fonction de bits déjà utilisés par d’éventuelles opération de prétraitement sur le signal avant codage par PCA. La décision d’adaptation est donnée par le bloc 300 qui détermine la valeur d’une indication d’activation ou non d’un traitement de décorrélation (PCA) à appliquer à la trame courante, cette indication correspond à mode =ON (PCA active ou activée) ou OFF (PCA inactive ou désactivée). Les critères de décision seront décrits ultérieurement. Le fonctionnement du codeur dépend du mode dans la trame courante d’indice t ( mode ) et celui de la trame précédente d’indice t-1 ( prev_mode ). Sans perte de généralité, on suppose qu’au démarrage du codeur, l’état initial de la trame précédente est prev_mode =OFF. On distingue les 4 combinaisons possibles : Si mode = ON et prev_mode = ON, on retrouve un fonctionnement identique à celui de la , c'est-à-dire que les blocs 100, 110, 120, 320, 140, 150 et 170 de la appliquent respectivement les mêmes traitements que les blocs 100, 110, 120, 130, 140, 150 et 170 décrits à la . La branche 2 pour laquelle le signal d’entrée subit une transformation est sélectionnée par le bloc 330. Dans le bloc d’allocation 340, on prend en compte le fait que le codage par PCA utilise 1 bit pour indiquer le mode (ON) de la trame courante, N Q bits pour coder les métadonnées et R-1-N Q bits pour coder les canaux (bloc 170). Si mode = OFF et prev_mode = OFF, la décorrélation par PCA est « court-circuitée », la branche 1 est sélectionnée par le bloc de sélection 330. Le signal à coder B est identique au signal d’entrée A . Le bloc d’allocation 340 prend en compte le fait qu’on utilise 1 bit pour indiquer le mode (OFF) de la trame courante et R-1 bits pour coder les canaux (bloc 170). Par défaut, on fixe les vecteurs propres à la matrice identité et les quaternions codés et à (1,0,0,0) dans la trame courante – à la prochaine trame, ces valeurs seront utilisées pour définir l’état de la trame précédente. Si mode = OFF et prev_mode = ON, on fixe les vecteurs propres à la matrice identité et les quaternions codés et à (1,0,0,0), on réalise une interpolation (bloc 320) entre ces valeurs et les valeurs de la trame précédente. Les détails de cette interpolation sont précisés ci-dessous. Le module de sélection active la branche 2, dans laquelle les signaux d’entrée sont transformés en 150 par une matrice issue de l’interpolation effectuée en 320. Il n’est pas nécessaire ici de coder des informations sur la matrice de transformation de la trame courante puisque l’indication a une valeur négative pour cette trame courante. Le module d’insertion de ces données codées en 310 est donc déconnecté. Le bloc d’allocation 340 prend en compte le fait qu’on utilise 1 bit pour indiquer le mode de la trame courante et R-1 bits pour coder les canaux (bloc 170). Si mode = ON et prev_mode = OFF, on réalise une interpolation (bloc 320) entre les valeurs courantes des quaternions codés et et les valeurs (par défaut) à (1,0,0,0) de la trame précédente. Les détails de cette interpolation sont précisés ci-dessous. Le module de sélection active la branche 2, dans laquelle les signaux d’entrée sont transformés en 150 par une matrice issue de l’interpolation effectuée en 320. Le module d’insertion des données de transformation de la trame courante codées, en 310 est ici connecté car une transformation PCA et donc un traitement de décorrélation est bien appliqué pour cette trame courante. Ces données sont codées sur N Q bits. Le bloc d’allocation 340 prend en compte le fait qu’on utilise 1 bit pour indiquer le mode de la trame courante et R-1-N Q bits pour coder les canaux (bloc 170). A l’issue du traitement de la trame précédente, les vecteurs propres et les quaternions codés et à la trame courante t sont mémorisés pour définir le nouvel état de la trame précédente t-1 avant de traiter la prochaine trame. La décision de mode ( mode ) de la trame courante t est également mémorisée pour définir le nouvel état ( prev_mode ) de la trame précédente t-1 avant de traiter la prochaine trame. Le module de multiplexage 350 insère ainsi les données codées dans le train binaire selon l’allocation définie au bloc 340 et en fonction de l’indication d’activation déterminée pour la trame courante et pour la trame précédente. On décrit maintenant des réalisations de l’interpolation (bloc 320). Ce bloc s’appuie sur les quaternions codés (t) et à la trame courante t et les quaternions codés (t-1) et à la trame précédente t-1. L’interpolation peut être mise en œuvre selon le pseudo code suivant où on utilise N sous-trames, par exemple N=40 : Détermination du chemin le plus court pour les quaternions : d1 = (t-1). (t) d2 = (t-1). (t) si d1 d1) ou (si d1 d0) : (t) (t) (t) (t) Interpolation par sous-trames des quaternions sur N sous-trames selon la méthode NLERP (pour Normalized linear interpolation) : Pour t’ = 0 à N-1 : = 1 – 0.5 ( 1 - cos( (t’ / N-1)) = norm ( (t’)* (t-1) + ( 1 - (t’)) (t)) = norm ( (t’)* (t-1) + ( 1 - (t’)) (t)) Où norm est l’opération de normalisation (à la norme unité) de quaternion qui correspond à une normalisation sur la sphère unité en dimension 4. Dans des variantes la définition de pourra être modifiée, par exemple en prenant = t’ / (N-1). L’utilisation de la fonction 1-0.5 (1-cos(x)) permet ici d’assurer une interpolation plus lente sur les extrémités. Dans des variantes, d’autres interpolations de quaternions (ex : SLERP pour Spherical linear interpolation ou autre) sont possibles. La méthode NLERP est ici utilisée car elle est moins complexe et plus stable pour une précision numérique limitée. Conversion de et en (qui correspond au bloc 140 et est connue dans l’état de l’art) Ainsi cette interpolation conduit à des valeurs de matriçage constantes par morceaux avec une découpe régulière en N sous-trames. Dans des variantes, d’autres méthodes d’interpolation seront possibles. Par exemple, il sera possible d’appliquer l’interpolation échantillon par échantillon au début de la trame (sur les N premiers échantillons) avant de conserver une valeur constante (t) et sur le reste de la trame (soit L-N échantillons) ; dans ce cas l’indice t’ ci-dessus correspond à l’indice de l’échantillon, la sous-trame comprend un seul échantillon. Dans des variantes d’autres réalisations de l’interpolation sont possibles avec une découpe en sous-trames différente. On décrit maintenant des exemples de réalisation du bloc de décision 300. Dans un exemple de réalisation, la détermination de l’indication d’activation du traitement de décorrélation, utilise plusieurs critères avec des décisions par seuil : Gain de codage de la PCA Distance inter-trame entre matrices de rotation (qui peut se voir comme une mesure de stabilité spatiale) Distance entre la matrice de rotation dans la trame courante et une matrice identité Les motivations des différents critères sont respectivement les suivantes : S’assurer que la décorrélation par PCA apporte un gain suffisant pour justifier son activation par rapport à un codage direct S’assurer que l’interpolation entre la matrice de rotation dans la trame courante et celle de la trame précédente n’occasionne pas de variations très fortes du matriçage dans le temps S’assurer que l’interpolation entre la matrice de rotation dans la trame courante et une éventuelle désactivation de la PCA n’occasionne pas de variations très fortes du matriçage dans le temps. On donne ci-dessous des exemples de réalisation de ces critères de décision. On reprend ici la définition du gain de codage pour une transformation PCA/KLT dans le cas d’une source gaussienne avec canaux : Ce qui correspond au ratio entre la moyenne arithmétique et la moyenne géométrique des variances (énergies) des composantes à coder (dans le cas gaussien). Selon l’invention on prend plutôt le ratio des moyennes géométriques entre les énergies des canaux d’entrée A au numérateur et les valeurs propres au dénominateur. Le gain exprimé en valeur logarithmique devient : On suppose que les valeurs propres sont en ordre décroissant et positives. Le terme est par exemple fixé à pour conditionner le calcul du logarithme. Le gain G correspond en fait à la somme (dans le domaine logarithmique) des gains de codage (ou décorrélation) entre les canaux individuels (séparés) pris avant et après PCA. Dans des variantes, on pourra aussi normaliser les valeurs propres, dans ce cas le facteur de normalisation est également appliqué aux valeurs d’énergie . On définit maintenant un exemple de critère de distance entre matrices. Dans le mode de réalisation privilégié, on s’appuie sur la représentation en double quaternion, et on détermine la distance angulaire par un produit scalaire entre les quaternions à la trame courante t et ceux de la trame précédente t-1: P1 = . P2 = . La distance entre les matrices de rotations associées aux trames t et t-1 est évaluée comme : minP=min(P1, P2) De façon similaire, on peut définir la distance entre la matrice de rotation à la trame t et une matrice identité (représentée par les quaternions unitaires ) comme : Et minP2 = min( ) Alors la décision (bloc 300) peut être réalisée dans un exemple comme suit : lorsque l’indication d’activation est par défaut positive, c'est-à-dire telle que mode = ON, l’indication bascule en mode négatif telle que mode = OFF si le gain de codage G est inférieur à un seuil prédéfini, par exemple à 6 ou si la distance inter-trame entre matrice de rotation est inférieure à un seuil par exemple 0.8 ou encore si la distance entre la matrice de rotation de la trame courante et une matrice identité est inférieure à un seuil, par exemple 0. On a alors : Si G mode = OFF Si minP mode = OFF Si minP2 mode = OFF Dans des variantes, les valeurs des seuils (respectivement 6, 0.8, 0) peuvent être différentes. Dans des variantes l’indication d’activation est par défaut négative, c'est-à-dire telle que mode = OFF, et l’indication bascule en mode positif telle que mode = ON si tous les critères vérifient les conditions opposées à celles définies ci-dessus. Cela revient donc à simplement inverser la logique de décision pour le même résultat. Dans d’autres variantes, au moins un des trois critères définis selon l’invention est utilisé, les autres peuvent ne pas être utilisés ou remplacés par d’autres critères. On décrit maintenant des variantes des critères de décision. Dans des variantes on pourrait prendre d’autres définitions des critères, par exemple le gain de codage pourrait être: Ou Dans des variantes, d’autres mesures de distance entre matrices de rotation peuvent être définies, par exemple une distance de Fröbenius ou une autre distance entre les matrices de rotation et . Dans des variantes, le bloc de décision pourra réaliser une décision « en boucle fermée », cela revient à appliquer un traitement PCA pour les blocs 100 à 150 afin d’obtenir une version initiale du signal transformé B avant de confirmer que la décision mode dans la trame courante d’indice t est ON. On peut dans ce cas remplacer les valeurs propres par les énergies respectives des canaux de la version initiale B . Si la décision est finalement à OFF, il faut alors remplacer la version initiale du signal transformé B . Dans des variantes, où la décision en boucle fermée est utilisée, on pourra ajouter des critères de décision d’activation supplémentaires, comme la détection de valeur absolue maximale dans chaque canal individuel avant et après PCA (dans A et B ), si cette valeur absolue (dans la trame courante) dans l’un des canaux de B dépasse celle du canal correspondant dans le signal d’entrée A le mode est mis à OFF dans la trame courante. La illustre un décodeur mettant en œuvre le procédé de décodage selon un mode de réalisation de l’invention. Le train binaire est démultiplexé en 400 et le décodeur 220 reçoit les canaux du signal multicanal à décoder selon une allocation binaire déterminé en 420. Le module 410 reçoit l’indication d’activation d’un traitement de décorrélation pour la trame courante et applique les traitements de décodage et de transformation adaptés à cette indication, de la même façon que ceux effectués au codage. En fonction de la valeur de l’indication de la trame précédente, on distingue les 4 combinaisons suivantes : Si mode = ON et prev_mode = ON, on retrouve un fonctionnement identique à celui de la , c'est-à-dire que les blocs 220, 230, 430, 250 et 260 de la appliquent respectivement les mêmes traitements que les blocs 220, 230, 240, 250 et 260 décrits à la . La branche 2 pour laquelle le signal décodé subit une transformation par le bloc 260 est sélectionnée par le bloc 440. Le module de décodage des informations de transformation reçues dans le train binaire est mis en œuvre par le bloc de connexion 430. Le bloc d’allocation 420 utilise les R-1-N Q bits pour décoder les canaux en 220. Par défaut, on fixe les vecteurs propres à la matrice identité et les quaternions codés et à (1,0,0,0) dans la trame courante – à la prochaine trame, ces valeurs seront utilisées pour définir l’état de la trame précédente. Si mode = OFF et prev_mode = OFF, la décorrélation par PCA est « court-circuitée », la branche 1 est sélectionnée par le bloc de sélection 440. Le signal décodé est identique au signal décodé de sortie . Le bloc d’allocation 420 utilise les R-1 bits pour décoder les canaux en 220. Si mode = OFF et prev_mode = ON, on fixe les vecteurs propres à la matrice identité et les quaternions codés et à (1,0,0,0) dans la trame courante, on réalise une interpolation (bloc 430) entre ces valeurs et les valeurs de la trame précédente, de façon identique au bloc 320. Le module de sélection 440 active la branche 2, dans laquelle les signaux décodés sont transformés en 260 par une matrice issue de l’interpolation effectuée en 430. Il n’est pas nécessaire ici de décoder des informations sur la matrice de transformation de la trame courante puisque l’indication a une valeur négative pour cette trame courante. Le module de décodage de ces données est donc déconnecté par le bloc 430. Le bloc d’allocation 420 utilise les R-1 bits pour décoder les canaux en 220. Si mode = ON et prev_mode = OFF, on réalise une interpolation (bloc 430) entre les valeurs courantes des quaternions codés et les valeurs (par défaut) de la trame précédente de façon identique au bloc 320. Le module de sélection 440 active la branche 2, dans laquelle les signaux décodés sont transformés en 260 par une matrice issue de l’interpolation effectuée en 430. Le module de décodage 230 des données de transformation de la trame courante codées, est ici connecté par le module 430, car une transformation PCA et donc un traitement de décorrélation est bien appliqué pour cette trame courante. Le bloc d’allocation 420 utilise les R-1-N Q bits pour décoder les canaux en 220. On notera que le retard algorithmique lié au codage-décodage (blocs 170 et 220) doit être compensé en mémorisant les valeurs de matriçage inverse pour chaque sous-trame dans la trame courante ainsi que dans la trame précédente. Par exemple, lorsque le codage-décodage (blocs 170-220) est un codage EVS multi-mono on aura typiquement un retard de 12 ms à compenser. Si l’interpolation utilise N=40 sous-trames dans une trame de 20 ms (soit des sous-trames de 0.5 ms), il faudra donc utiliser une mémoire de 40+24=64 valeurs de matriçage (matrices 4x4) et le bloc 260 appliquera le matriçage décalé dans le temps de 24 sous-trames dans le passé. A l’issue du traitement de la trame précédente, les vecteurs propres et les quaternions codés et à la trame courante t sont mémorisés pour définir le nouvel état de la trame précédente t-1 avant de traiter la prochaine trame. La décision de mode ( mode ) de la trame courante t est également mémorisée pour définir le nouvel état ( prev_mode ) de la trame précédente t-1 avant de traiter la prochaine trame. On a illustré sur la un dispositif de codage DCOD et un dispositif de décodage DDEC, au sens de l’invention, ces dispositifs étant duals l’un de l’autre (dans le sens de « réversibles ») et reliés l’un à l’autre par un réseau de communication RES. Le dispositif de codage DCOD comporte un circuit de traitement incluant typiquement : - une mémoire MEM1 pour stocker des données d’instructions d’un programme informatique au sens de l’invention (ces instructions pouvant être réparties entre le codeur DCOD et le décodeur DDEC) ; - une interface INT1 de réception de signaux ambisoniques répartis sur différents canaux (par exemple quatre canaux W, Y, Z, X à l’ordre 1) en vue de leur codage en compression au sens de l’invention ; - un processeur PROC1 pour recevoir ces signaux et les traiter en exécutant les instructions de programme informatique que stocke la mémoire MEM1, en vue de leur codage ; et - une interface de communication COM 1 pour transmettre les signaux codés via le réseau. Le dispositif de décodage DDEC comporte un circuit de traitement propre, incluant typiquement : - une mémoire MEM2 pour stocker des données d’instructions d’un programme informatique au sens de l’invention (ces instructions pouvant être réparties entre le codeur DCOD et le décodeur DDEC comme indiqué précédemment) ; - une interface COM2 pour recevoir du réseau RES les signaux codés en vue de leur décodage en compression au sens de l’invention ; - un processeur PROC2 pour traiter ces signaux en exécutant les instructions de programme informatique que stocke la mémoire MEM2, en vue de leur décodage ; et - une interface de sortie INT2 pour délivrer les signaux décodés sous forme de canaux ambisoniques W’, Y’, Z’, X’, par exemple en vue de leur restitution. Bien entendu, cette illustre un exemple d’une réalisation structurelle d’un codec (codeur ou décodeur) au sens de l’invention. Les figures 3 à 4 décrivent en détails des réalisations plutôt fonctionnelles de ces codecs. Procédé de codage de signaux sonores formant une succession dans le temps de trames (t-1, t) d’échantillons, dans chacun de n canaux en représentation ambisonique d’ordre supérieur à 0, le procédé comportant : - déterminer (300) pour la trame courante à coder, la valeur d’une indication d’activation d’un traitement de décorrélation à appliquer aux signaux de la trame courante et coder cette valeur dans le train binaire; - dans le cas où la dite indication a une valeur positive, coder (310) dans le train binaire des informations de traitement de décorrélation ; - générer (330) un signal de sortie à coder dans le train binaire, en fonction de la dite indication dans la trame courante et la trame précédente. Procédé selon la revendication 1, dans lequel la détermination de la valeur de l’indication s’effectue selon au moins un critère de gain de codage de signaux avant et après traitement de décorrélation. Procédé selon la revendication 2, dans lequel le gain de codage est défini par la valeur logarithmique suivante : avec les énergies des canaux d’entrée du traitement de décorrélation et les valeurs propres des canaux d’entrée, la valeur de l’indication étant déterminée négative pour une valeur du gain G prédéfinie. Procédé selon la revendication 1, dans lequel la détermination de la valeur de l’indication s’effectue selon un critère de distance inter-trame entre matrices de rotation appliquant le traitement de décorrélation. Procédé selon la revendication 4, dans lequel les matrices de rotation sont représentées en double quaternion, la distance inter-trame entre matrices de rotation s’exprimant à partir d’un produit scalaire entre les quaternions à la trame courante et ceux de la trame précédente. Procédé selon la revendication 1, dans lequel la détermination de la valeur de l’indication s’effectue selon un critère de distance entre une matrice de rotation, appliquant le traitement de décorrélation, de la trame courante et la matrice identité. Procédé selon la revendication 6, dans lequel les matrices de rotation sont représentées en double quaternion, la distance entre la une matrice de rotation de la trame courante et la matrice identité s’exprimant sous la forme d’un produit scalaire entre les quaternions à la trame courante et des quaternions unitaires. Procédé de décodage de signaux sonores formant une succession dans le temps de trames (t-1, t) d’échantillons, dans chacun de n canaux en représentation ambisonique d’ordre supérieur à 0, le procédé comportant : - recevoir (410), pour une trame courante (t), en plus des signaux des n canaux de cette trame courante, une indication d’activation d’un traitement de décorrélation appliqué au signaux de la trame courante ; - dans le cas où la dite indication a une valeur positive, décoder (430) des informations de traitement de décorrélation reçues dans le train binaire; - générer (440) un signal de sortie, en fonction du la dite indication dans la trame courante et la trame précédente. Dispositif de codage comportant un circuit de traitement pour la mise en œuvre des étapes du procédé de codage selon l’une des revendications 1 à 7. Dispositif de décodage comportant un circuit de traitement pour la mise en œuvre des étapes du procédé de décodage selon la revendication 8. Support de stockage, lisible par un processeur, mémorisant un programme informatique comportant des instructions pour l’exécution du procédé de codage selon l’une des revendications 1 à 7 ou du procédé de décodage selon la revendication 8.