FR 3112015 A1 20211231 FR 2006838 A 20200630 Codage optimisé d’une information représentative d’une image spatiale d’un signal audio multicanal L’invention se rapporte à un procédé de codage optimisé d’un signal sonore multicanal, comportant les étapes suivantes : - codage d’au moins un canal de signal audio issu du signal multicanal d’origine ; - division du signal multicanal d’origine en sous-bandes de fréquence ; - détermination d’une matrice de covariance par sous-bande de fréquence, représentatives d’une image spatiale du signal multicanal d’origine ; - décomposition des matrices de covariances déterminées en valeurs propres ; - codage par quantification des paramètres issus de la décomposition en valeurs propres comprenant à la fois des valeurs propres et des vecteurs propres. L’invention se rapporte également à un procédé de décodage pour décoder les paramètres issus de la décomposition en valeurs propres de la matrice de covariance du signal multicanal d’origine. Elle se rapporte à des dispositifs de codage et de décodage mettant en œuvre les procédés respectifs. Figure pour l'abrégé : Figure 1 Codage optimisé d’une information représentative d’une image spatiale d’un signal audio multicanal 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 répandus 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’audio 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 un système 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 où 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 pé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, 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 (où Z=0). Dans ce cas, le nombre de composantes est 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). 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. - Les coordonnées cartésiennes (x,y,z) d’un point 3D peuvent être converties en coordonnées sphériques (r, ,φ), où r est la distance à l’origine, est l’azimut et φ l’élévation. On utilise ici, sans perte de généralité, la convention mathématique où l’élévation est définie par rapport au plan horizontal (0xy) ; l’invention peut être facilement adaptée à d’autres définitions, dont la convention utilisée en physique où l’azimut est défini par rapport à l’axe Oz. 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 en parallèle à tous les canaux 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. 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é de tous les canaux est donnée, pour un signal stéréo ou multicanal, par le codage paramétrique. Pour ce type de codage, le signal multicanal d’entrée est réduit en nombre plus faible de canaux, après un traitement appelé « downmix », ces canaux sont codés et transmis et des informations de spatialisation supplémentaires sont également codées. Le décodage paramétrique consiste à augmenter le nombre de canaux après décodage des canaux transmis, en utilisant un traitement appelé « upmix » (typiquement mis en œuvre par décorrélation) et une synthèse spatiale en fonction des informations de spatialisation supplémentaires décodées. Un exemple de codage paramétrique stéréo est donné par le codec 3GPP e-AAC+. Un exemple de codage paramétrique pour l’ambisonique est donné par le codec DirAC (pour « Directional Audio Coding » en anglais) dont il existe plusieurs variantes pour un codage à l’ordre 1 ou à des ordres supérieurs. A l’ordre 1 (4 canaux W, X, Y, Z) la méthode DirAC peut prendre le signal W comme signal « downmix » et applique au signal ambisonique d’entrée une analyse temps/fréquences pour estimer deux paramètres par sous-bandes : la direction de la source principale et le caractère diffus de la scène. Pour ce faire on calcule le vecteur d’intensité active à l’intervalle temps/fréquence d’indice ( n , f ) à une constante de normalisation près: où * est le conjugué hermitien, Re (.) correspond à la partie réelle. A partir du vecteur intensité, on estime la direction d’arrivée (DoA) de la source : Où donne l’angle du vecteur 3D et l‘espérance mathématique, et on estime le caractère diffus de la scène par un paramètre de « diffuseness » défini par exemple comme : où || . || est le module complexe . Dans le cas des ordres ambisoniques supérieurs, la méthode DirAC découpe l’espace sonore en secteurs S m , correspondant à une partie de la sphère (unité). Pour chaque secteur S m , un traitement de formation de faisceaux directifs (« beamforming » en anglais) extrait 3 canaux X m , Y m , Z m , et un canal « omni » correspondant à la somme des 3 canaux appelé W m . De manière similaire à la méthode DirAC à l’ordre 1, pour chaque secteur le signal est codé avec les paramètres de spatialisation par sous-bandes (DoA et diffuseness). Pour plus de détails, on renvoie à l’ouvrage de V. Pulkki et al, Parametric time-frequency domain spatial audio, Wiley, 2017, pp. 89-159. L’opération de « downmix » des méthodes de codage paramétrique existantes engendre des dégradations de la spatialisation et des modifications de l’image spatiale du signal d’origine. L’approche DirAC décrite précédemment cherche à re-spatialiser une ou plusieurs sources dans l’espace, avec une limitation sur le nombre maximal de sources. La reproduction de la scène sonore au décodage n’est alors pas toujours optimale. Il existe donc un besoin de retrouver au décodage une scène sonore proche de la scène sonore d’origine tout en optimisant le débit de codage. On entend ici par « image spatiale », une répartition de l’énergie sonore de la scène sonore ambisonique à différentes directions de l’espace ; l’image spatiale décrit la scène sonore et elle correspond de façon générale à des grandeurs positives évaluées à différentes directions prédéterminées de l’espace - ces grandeurs positives peuvent être interprétées comme des énergies et sont vues comme telles par la suite. Une image spatiale associée à une scène sonore ambisonique représente donc l’énergie sonore (ou plus généralement une grandeur positive) en fonction de différentes directions dans l’espace. Une information représentative d’une image spatiale peut être par exemple une matrice de covariance calculée entre les canaux du signal multicanal ou bien une information d’énergie associée à des directions de provenance du son (associées à des directions de haut-parleurs virtuels répartis sur une sphère unité). L’information d’énergie peut être obtenue selon différentes directions (associées à des directions de haut-parleurs virtuels répartis sur une sphère unité). Pour cela, différentes méthodes de calcul d’image spatiale connues de l’homme de l’art peuvent être utilisées : méthode de type SRP (pour « Steered-Response Power » en anglais), pseudo-spectre MUSIC, histogramme de directions d’arrivée…. En général la représentation d’une image spatiale sous la forme d’une matrice de covariance implique de coder une matrice de taille KxK avec K(K+1)/2 coefficients non redondants. L’information d’énergie nécessite de coder au moins l’énergie en N=K points discrets répartis sur une sphère ; en pratique un nombre plus élevé de points (N>>K) doit être défini pour avoir une représentation suffisamment précise et utilisable. On s’intéresse donc plus particulièrement ici au problème du codage d’une matrice de covariance. L’approche connue de l’état de l’art est par exemple décrite dans l’article de Dai Yang et al., High-Fidelity Multichannel Audio Coding with Karhunen-Loève Transform, IEEE Trans. Speech and Audio Processing, vol. 11, no 4, July 2003. Le codage d’une matrice de covariance de taille KxK est effectué en codant K(K+1)/2 valeurs (correspondant au triangle inférieur ou supérieur - la matrice étant symétrique) avec une représentation à virgule flottante sur 16 bits (par coefficient). Par exemple, si une seule matrice de taille 4x4 (K=4 pour le FOA) est codée par trame de 20 ms, cela correspond à un débit de 16 x 10 bits / 20 ms = 8 kbit/s. Si plusieurs matrices de covariance sont transmises par trame, ce débit devient très significatif. L’invention vient améliorer l’état de la technique. A cet effet, l’invention vise un procédé de codage d’un signal sonore multicanal, comportant les étapes suivantes : - codage d’au moins un canal de signal audio issu du signal multicanal d’origine ; - division du signal multicanal d’origine en sous-bandes de fréquence ; - détermination d’une matrice de covariance par sous-bande de fréquence, représentatives d’une image spatiale du signal multicanal d’origine ; - décomposition des matrices de covariances déterminées en valeurs propres ; - codage par quantification des paramètres issus de la décomposition en valeurs propres comprenant à la fois des valeurs propres et des vecteurs propres. Ainsi, le codage des matrices de covariance par bande de fréquence, du signal multicanal d’origine va permettre au décodeur de reconstruire la scène sonore au plus proche de celle du signal d’origine en appliquant des corrections aux signaux transmis. La décomposition en valeurs propres des matrices de covariance et le codage de paramètres issus de cette décomposition permet de restreindre le nombre d’informations à transmettre au décodeur et ainsi d’optimiser le débit de codage de ces paramètres et de réduire la distorsion pour un budget donné. Selon un mode de réalisation de l’invention, le procédé de codage permet de décomposer les K(K+1)/2 degrés de liberté en deux parties sur lesquels un codage plus efficace est possible : K(K-1)/2 degrés de liberté (vecteurs propres sous forme de matrice de rotation en dimension K) + K degrés de liberté (valeurs propres). Typiquement, on obtient un débit de l’ordre de 2.5 kbit/s pour l’exemple d’une matrice 4x4 et des trames de 20 ms. Dans un mode de réalisation, les valeurs propres sont ordonnées avant quantification et la quantification s’effectue selon une quantification scalaire différentielle. Ainsi, le débit de codage est encore réduit pour quantifier ces valeurs propres. Selon un premier mode de réalisation, la décomposition d’une matrice de covariance en valeurs propres s’effectue selon les étapes suivantes : - obtention d’une matrice de vecteurs propres Q telle que C = Q Λ Q T avec C, la matrice de covariance et Λ=diag(λ 1 ,…, λ K ), une matrice diagonale de valeurs propres ; - modification de la matrice de vecteurs propres en fonction d’une valeur de déterminant de la matrice de vecteurs propres Q ; - conversion de la matrice de vecteurs propres Q dans le domaine des angles d’Euler généralisés ; les angles d’Euler généralisés obtenus faisant partie des paramètres à quantifier. La conversion dans le domaine des angles d’Euler permet de quantifier les angles résultants de cette conversion pour coder la matrice de vecteurs propres, ce qui permet réduire le débit de codage pour une distorsion donnée ou de réduire la distorsion pour un débit donné. La quantification, pour ce premier mode de réalisation est de plus de faible complexité. Aussi, dans un mode de réalisation particulier, la quantification des angles d’Euler généralisés s’effectue par quantification uniforme. Selon un deuxième mode de réalisation, la décomposition d’une matrice de covariance en valeurs propres s’effectue selon les étapes suivantes : - obtention d’une matrice de vecteurs propres Q telle que C = Q Λ Q T avec C, la matrice de covariance et Λ=diag(λ 1 ,…, λ K ), une matrice diagonale de valeurs propres ; - modification de la matrice de vecteurs propres en fonction d’une valeur de déterminant de la matrice de vecteurs propres Q ; - conversion de la matrice de vecteurs propres Q dans le domaine des quaternions ; au moins un quaternion obtenu faisant partie des paramètres à quantifier. La conversion dans le domaine des quaternions permet de quantifier les quaternions résultant de cette conversion pour coder la matrice de vecteurs propres, ce qui permet de réduire le débit de codage pour une distorsion donnée ou de réduire la distorsion pour un débit donné. Pour ce deuxième mode de réalisation, la quantification a une complexité plus importante mais la quantification vectorielle sphérique utilisée pour quantifier ces paramètres est plus performante qu’une quantification scalaire. Aussi, dans un mode de réalisation particulier, la quantification des quaternions s’effectue par quantification vectorielle sphérique. L’invention se rapporte aussi à un procédé de décodage d’un signal sonore multicanal, comportant les étapes suivantes : - décodage d’au moins un canal codé et obtention d’un signal multicanal décodé; - division du signal multicanal décodé en sous-bandes de fréquence ; - décodage de paramètres issus d’une décomposition en valeurs propres de matrices de covariance du signal multicanal d’origine ; -détermination des matrices de covariance du signal multicanal d’origine à partir des paramètres décodés : - détermination d’une matrice de covariance, par sous-bandes de fréquences, du signal multicanal décodé ; - détermination d’un ensemble de corrections à apporter au signal décodé à partir des matrices de covariance du signal multicanal d’origine (Inf. B ) et des matrices de covariance du signal multicanal décodé (Inf. ); - correction du signal multicanal décodé par l’ensemble de corrections déterminé ; Ainsi, le décodeur peut recevoir et décoder les matrices de covariance du signal multicanal d’origine avec une distorsion réduite pour un débit donné par rapport à des méthodes classique utilisant le codage direct de la matrice de covariance. Ces matrices de covariance décodées permettent alors de déterminer des corrections à apporter au signal multicanal décodé pour que l’image spatiale du signal multicanal décodé soit au plus proche de l’image spatiale du signal multicanal d’origine. L’invention se rapporte également à un dispositif de codage comportant un circuit de traitement pour la mise en œuvre du procédé de codage tel que décrit précédemment. L’invention se rapporte également à un dispositif de décodage comportant un circuit de traitement pour la mise en œuvre du procédé de décodage tel que décrit précédemment. L’invention se rapporte à un programme informatique comportant des instructions pour la mise en œuvre des procédés de codage ou de décodage tels que décrits précédemment, lorsqu’ils sont exécutés par un processeur. Enfin, l’invention se rapporte à un support de stockage, lisible par un processeur, mémorisant un programme informatique comportant des instructions pour l’exécution des procédés de codage ou de décodage décrits précédemment. D’autres caractéristiques et avantages de l’invention apparaîtront plus clairement à la lecture de la description suivante de modes de réalisation particuliers, donnés à titre de simples exemples illustratifs et non limitatifs, et des dessins annexés, parmi lesquels : La figure 1 illustre un mode de réalisation d’un codeur et d’un décodeur, d’un procédé de codage et d’un procédé de décodage selon l’invention ; La figure 2 illustre un mode de réalisation détaillé du bloc de détermination de l’ensemble de corrections ; La figure 3a illustre sous forme d’organigramme un mode de réalisation du bloc de codage de la matrice de covariance selon un mode de réalisation de l’invention ; La figure 3b illustre sous forme d’organigramme un mode de réalisation du bloc de décodage de la matrice de covariance selon un mode de réalisation de l’invention ; La figure 4 illustre des exemples de réalisation structurelle d’un codeur et d’un décodeur selon un mode de réalisation de l’invention. On rappelle ici la technique connue d’encodage (au sens acoustique) d’une source sonore au format ambisonique. Une source sonore mono peut être spatialisée artificiellement en multipliant le signal associé par les valeurs des harmoniques sphériques associées à sa direction de provenance (en supposant le signal porté par une onde plane) pour obtenir autant de composantes ambisoniques. Pour cela, on calcule les coefficients pour chaque harmonique sphérique pour une position déterminée en azimut et en élévation φ à l’ordre désiré : où s est le signal mono à spatialiser et Y ( ,φ) est le vecteur d’encodage définissant les coefficients des harmoniques sphériques associées à la direction ( , φ) pour l’ordre M. Un exemple de vecteur d’encodage est donné ci-après pour l’ordre 1 avec la convention SN3D et l’ordre des canaux SID ou FuMa: D’autres convention de normalisation (ex : maxN, N3D) et d’ordre des canaux (ex : ACN) existent et les différents modes de réalisation sont alors adaptés en fonction de la convention utilisée pour l’ordre ou la normalisation des composantes ambisoniques (FOA ou HOA). Cela revient à modifier l’ordre des lignes Y ( ,φ) ou multiplier ces lignes par des constantes prédéfinies. Pour les ordres supérieurs, les coefficients Y ( ,φ) des harmoniques sphériques peuvent être trouvés dans le livre de B.Rafaely, Fundamentals of Spherical Array Processing, Springer, 2015. De manière générale pour un ordre M, les signaux ambisoniques sont au nombre de K=(M+1) 2 . De même, on rappelle ici quelques notions sur le rendu ou restitution ambisonique par haut-parleurs. Un son ambisonique n’est pas fait pour être écouté tel quel ; pour une écoute immersive sur haut-parleurs ou sur casque, une étape de « décodage » au sens acoustique aussi appelé rendu (« renderer » en anglais) doit être faite. On considère le cas de N haut-parleurs (virtuels ou physiques) répartis sur une sphère – typiquement de rayon unité - et dont les directions ( , φ n ), n=0, …, N-1, en termes d’azimut et d’élévation sont connues. Le décodage, tel qu’on le considère ici, est une opération linéaire qui consiste à appliquer une matrice D aux signaux ambisoniques B pour obtenir les signaux s n des haut-parleurs, que l’on peut rassembler en une matrice S =[ s 0, … s N-1 ], S = D . B où . On peut décomposer la matrice D en vecteurs lignes d n , soit d n peut être vu comme un vecteur de pondération pour le nième haut-parleur, utilisé pour recombiner les composantes du signal ambisonique et calculer le signal joué sur le nième haut-parleur : s n =d n .B . Il existe de multiples méthodes de « décodage » au sens acoustique. La méthode dite de « décodage basique » également dénommée « mode-matching », se base sur la matrice d’encodage E associée à l’ensemble des directions de haut-parleurs virtuels : Selon cette méthode, la matrice D se définit typiquement comme la pseudo-inverse de E : D =pinv( E )= D T (D.D T ) -1 En alternative, la méthode que l’on peut appeler « de projection » donne des résultats similaires pour certaines distributions régulières de directions, et se décrit par l’équation : Dans ce dernier cas, on voit que pour chaque direction d’indice n, Dans le cadre de cette invention, de telles matrices serviront de matrice de formation de faisceaux directifs (« beamforming » en anglais) décrivant comment obtenir des signaux caractéristiques de directions de l’espace dans le but d’opérer une analyse et/ou des transformations spatiales. Dans le cadre de la présente invention, il est utile de décrire la conversion réciproque pour passer du domaine des haut-parleurs vers le domaine ambisonique. Il convient que l’application successive des deux conversions reproduise de façon exacte les signaux ambisoniques d’origine si aucune modification intermédiaire n’est appliquée dans le domaine des haut-parleurs. On définit donc la conversion réciproque comme mettant en jeu la pseudo-inverse de D : pinv ( D ). S = D T (D.D T ) -1 . S Quand K=(M+1) 2 , la matrice D de taille KxK est inversible sous certaines conditions et dans ce cas : B=D -1 .S Dans le cas de la méthode « mode-matching », il apparaît que pinv( D )= E . Dans des variantes, d’autres méthodes de décodage par D pourront être utilisées, avec la conversion inverse E correspondante ; la seule condition à vérifier est que la combinaison du décodage par D et de la conversion inverse par E doit donner une reconstruction parfaite (quand aucun traitement intermédiaire n’est réalisé entre le décodage acoustique et l’encodage acoustique). De telles variantes sont par exemple données par : - le décodage « mode-matching » avec un terme de régulation sous la forme D T (D.D T +ε D I) -1 où ε D est une faible valeur (par exemple 0.01), - Les décodages « in phase » ou « max-rE » connus de l’état de l’art - ou des variantes où la répartition des directions des haut-parleurs n’est pas régulière sur la sphère. La méthode décrite ci-dessous repose sur la transmission d’une représentation d’image spatiale sous la forme de matrice de covariance et la correction des dégradations spatiales, notamment pour s’assurer que l’image spatiale du signal décodé est la plus proche possible du signal d’origine. A l’opposé des approches de codage paramétrique connues pour les signaux stéréo ou multicanal, où des attributs perceptifs (« perceptual cues » en anglais) sont codés, l’invention ne repose pas sur une interprétation perceptuelle des informations d’image spatiale car le domaine ambisonique n’est pas directement « écoutable ». Dans le mode de réalisation décrit ci-dessous, on effectue un codage, avec de façon optionnelle, un downmix/upmix en utilisant une cartographie, appelée ci-après image spatiale de la scène sonore ambisonique d’origine. Au codage, un certain nombre de canaux (de façon préférentielle inférieur au nombre de canaux d’entrée) sont transmis au décodeur. Ces canaux peuvent être un sous-ensemble des canaux d’origine (ex : canal W ou X, 4 canaux du FOA en 3D, 3 canaux du FOA planaire, etc.) ou un rematriçage des canaux d’entrée (ex : downmix stéréo issu d’une entrée FOA). En plus de ces canaux, le codeur transmet une information issue d’une cartographie de la scène sonore d’origine. Cette information peut être définie sur un signal sur une seule bande de fréquence (ex : 0-16000 ou 100-14000 Hz pour un signal échantillonné à 32 kHz) mais dans le mode de réalisation privilégié on divise le spectre par sous-bandes (qui peuvent être dérivés des découpes existantes de type Bark, Mel, ou autres tels que décrits ultérieurement). Selon un mode de réalisation de l’invention, l’image spatiale de la scène sonore d’origine est une matrice de covariance telle que définie ultérieurement. Un codage optimisé de cette matrice de covariance est prévue afin d’optimiser le débit de codage de cette représentation d’une image spatiale, surtout lorsqu’elle est définie par sous-bandes. Au décodage, les signaux reçus et décodés sont étendus de façon optionnelle par « upmix » (par décorrélation) décrit ci-après. Selon le type d’information reçue, une cartographie de la scène sonore « dégradée » est réalisée. Une opération de transformation est déterminée pour recréer la scène sonore d’origine. Cette transformation est déterminée au décodeur à partir de la cartographie d’origine reçue et décodée (information de l’image spatiale du signal d’origine) et de la cartographie dégradée (information de l’image spatiale du signal multicanal décodé). Dans des variantes, on peut remplacer le downmix / upmix par un codage direct des canaux par exemple multimono ou multistéréo. La figure 1 représente un exemple de réalisation d’un codeur et d’un décodeur selon l’invention pour la mise en œuvre respectivement des procédés de codage et de décodage selon un mode de réalisation de l’invention. Le signal multicanal d’origine B de dimension KxL (soit K composantes de L échantillons temporels ou fréquentiels) est en entrée du codeur. On s’intéresse ici au cas d’un signal multicanal en représentation ambisonique, tel que décrit précédemment. L’invention peut s’appliquer également à d’autres types de signal multicanal comme un signal en B-format avec des modifications, comme par exemple la suppression de certaines composantes (ex : suppression de la composante R à l’ordre 2 pour ne garder que 8 canaux) ou le matriçage du B-format pour passer dans un domaine équivalent (appelé « Equivalent Spatial Domain ») comme décrit dans la spécification 3GPP TS 26.260 - un autre exemple de matriçage est donné par le « channel mapping 3 » du codec IETF Opus et dans la spécification 3GPP TS 26.918 (clause 6.1.6.3). Dans le mode de réalisation ainsi décrit, le signal d’entrée est échantillonné à 32 kHz. Le codeur fonctionne par trames qui sont de façon préférentielle d’une longueur de 20 ms, soit L=640 échantillons par trame à 32 kHz. Dans des variantes, d’autres longueurs de trame et fréquences d’échantillonnage sont possibles (par exemple L=480 échantillons par trame de 10 ms à 48 kHz). Dans un mode de réalisation privilégié, le codage de l’image spatiale est effectué en sous-bandes dans le domaine fréquentiel après transformée de Fourier discrète court-terme (STFT) temporel (sur une ou plusieurs bandes), cependant dans des variantes, l’invention peut être mise en œuvre en sous-bandes par application d’un banc de filtres réel ou complexe pour traiter des sous-bandes en temporel, ou en utilisant un autre type de transformée comme la transformée en cosinus discrète modifiée (MDCT) ou la Modulated Complex Lapped Transform (MCLT). Un bloc 110 de réduction du nombre de canaux (DMX) est mis en œuvre de façon optionnelle. Il consiste par exemple pour un signal d’entrée ambisonique d’ordre 1 à ne garder que le canal W et pour un signal d’entrée ambisonique d’ordre >1, à ne garder que les 4 premières composantes ambisoniques W, X, Y, Z (donc à tronquer le signal à l’ordre 1). D’autres types de downmix (sélection d’un sous-ensemble de canaux et/ou un matriçage, utilisation d’un « beamforming » de type « delay-sum ») peuvent être mis en œuvre sans que cela ne modifie le procédé selon l’invention. Le bloc 111 code le signal audio b’ k , k=1, …, K dmx (où K dmx ≤K) de B’ en sortie du bloc 110 . Dans un mode de réalisation privilégié, le bloc 111 utilise un codage multi-mono (COD) avec une allocation variable, où le codec cœur est le codec normalisé 3GPP EVS. Dans cette approche multi-mono, chaque canal b’ k est codé séparément par une instance du codec ; cependant, dans des variantes d’autres méthodes de codage sont possibles, par exemple un codage multi-stéréo ou un codage multicanal conjoint. On obtient donc, en sortie de ce bloc de codage 111, au moins un canal codé d’un signal audio issu du signal multicanal d’origine, sous forme de train binaire qui est envoyé au multiplexeur 140. Le bloc 120 extrait une bande de fréquences donnée (qui peut correspondre au signal pleine bande ou dans une bande restreinte) ou réalise une division en plusieurs sous-bandes fréquentielles. Dans des variantes, l’extraction d’une bande donnée ou la division en sous-bandes pourra réutiliser des traitements équivalents effectués dans les blocs 110 ou 111. De façon générale, le découpage en sous-bandes peut être uniforme ou non-uniforme. Dans un mode de réalisation privilégié, lorsque le signal n’est pas codé en une bande fréquentielle, les canaux du signal audio multicanal d’origine sont divisés en fréquences en utilisant des intervalles fréquentiels définis selon l’échelle Bark. L’échelle Bark est définie sur les 24 intervalles suivants (en Hz) pour un signal échantillonné à 32 kHz: [20, 100], [100, 200], [200, 300], [300, 400], [400, 510], [510, 630], [630, 770], [770, 920], [920, 1080], [1080, 1270], [1270, 1480], [1480, 1720], [1720, 2000], [200, 2320], [2320, 2700], [2700, 3150], [3150, 3700], [3700, 4400], [4400, 5300], [5300, 6400], [6400, 7700], [7700, 9500], [9500, 12000], [12000, 16000] Ce découpage prédéfini peut être modifié pour le cas d’une fréquence d’échantillonnage pour utiliser un nombre différent de bandes, par exemple en ne gardant que 21 bandes à 16 kHz et en changeant le dernier intervalle en [6400, 8000] ou en rajoutant une bande [16000, 20000] à 48 kHz. Ce découpage en sous-bandes, qui est mis en œuvre dans le domaine de la transformée de Fourier discrète à court-terme (STFT) calculée sur des trames de 20 ms avec un fenêtrage sur 30 ms (10 ms de signal passé), revient à un filtrage passe-bande dans le domaine de Fourier. Dans des variantes, on pourra appliquer un banc de filtres avec ou sans échantillonnage critique pour obtenir des signaux réels ou complexes correspondant aux sous-bandes. On notera que l’opération de découpage en sous-bandes implique en général un retard de traitement qui est fonction du type de banc de filtres mis en œuvre ; selon l’invention un alignement temporel pourra être appliqué avant ou après codage-décodage et/ou avant l’extraction d’informations d’image spatiale, de sorte que les informations d’image spatiale soient bien synchronisées temporellement avec le signal corrigé. Dans la suite de la description, on décrit les différentes étapes du codage et du décodage comme s’il s’agissait d’un traitement dans le domaine fréquentiel complexe. Le cas réel est également décrit en variante. Le bloc 121 détermine (Inf. B ) une information représentative d’une image spatiale du signal multicanal d’origine. Dans le mode de réalisation décrit ici, l’information représentative de l’image spatiale du signal multicanal d’origine est une matrice de covariance des canaux d’entrée B dans chaque bande fréquentielle prédéterminée par le bloc 120. On notera ici que pour simplifier, la description ne distingue pas ici l’indice de sous-bande pour la matrice C . Dans le mode de réalisation privilégié, l’invention est mise en œuvre dans un domaine par transformée à valeurs complexes, la covariance se calcule comme suit : C =Re ( B.B H ) à un facteur de normalisation près. Cette matrice est calculée comme suit dans le cas réel : C = B.B T à un facteur de normalisation près. 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) sous la forme : Cij(n) = n/(n+1) Cij(n-1) + 1/(n+1) bi(n) bj(n). Dans des variantes, des opérations de lissage temporel de la matrice de covariance pourront être utilisés. Dans des variantes, la matrice de covariance C pourra être régularisée avant quantification sous la forme C+ ε I ou en appliquant un seuillage sur les coefficients diagonaux de C pour assurer une valeur minimale ε (par exemple ε=10 -9 si les signaux ambisoniques en entrée sont normalisés en amplitude sur l’intervalle +/-1). La matrice de covariance C (de taille KxK) est, par définition, symétrique, K étant le nombre de composantes ambisoniques. Le bloc 130 réalise une quantification des coefficients de la matrice. La figure 3a illustre les étapes mises en œuvre par le bloc 130 pour quantifier les coefficients d’une matrice de covariance selon un mode de réalisation de l’invention. Ainsi, selon l’invention, le codage de la matrice de covariance est réalisé selon les étapes suivantes : On suppose à cette étape que la matrice de covariance a été estimée et qu’elle a été modifiée (régularisée) pour assurer qu’aucune valeur propre ne soit nulle. Cela peut être réalisé en remplaçant les valeurs Cii de la diagonale de C par Cii=max(Cii, ɛ), où ε est une faible valeur fixée par exemple à 10 -9 (si les valeurs du signal ambisonique en temporel sont définies dans l’intervalle +/-1) . Dans des variantes, on pourra modifier la matrice C = C +ɛ I où I est la matrice identité. La matrice de covariance C (ainsi régularisée) est décomposée en valeurs propres à l’étape S1, sous la forme : C = Q Λ Q T où Q est une matrice orthogonale (avec en particulier det Q = +/-1) et Λ=diag (λ 1 ,…, λ K ) est une matrice diagonale de valeurs propres. Sans perte de généralité on suppose que λ 1 ≥ … ≥ λ K ≥0. On note que la régularisation de C , si elle est appliquée, garantit que les valeurs propres sont strictement positives. Plusieurs méthodes sont connues dans l’état de l’art pour effectuer cette factorisation : décomposition QR (itérative), transformation de Householder, rotations de Givens ou des variantes de ces méthodes comme la décomposition « sorted QR ». Peu importe la méthode choisie si les valeurs propres λ i (i=1..K) ne sont pas positives et ne sont pas ordonnées en ordre décroissant, selon l’invention, si λ i i et du vecteur propre associé ; les valeurs propres seront également permutées le cas échéant pour respecter la contrainte λ 1 ≥ … ≥ λ K ≥0 en appliquant les mêmes permutations aux vecteurs propres (colonnes) dans Q . A l’étape S2, on calcule le déterminant de la matrice de vecteurs propres Q et on détermine si det Q = -1. Si c’est le cas (O à l’étape S2), on modifie Q à l’étape S3, de façon préférentielle en inversant le signe du vecteur propre associé à la plus faible valeur propre de façon à obtenir une matrice de rotation (matrice orthogonale, unitaire avec det Q = +1). La matrice de vecteurs Q est donc appelée ci-dessous « matrice de rotation » après l’étape S2. Pour le cas du FOA planaire (trois canaux) l’étape S2 est adaptée à un calcul de déterminant de taille 3x3 et pour l’ambisonique du FOA (4 canaux) on utilise un déterminant d’une matrice 4x4. Un exemple de réalisation est donné pour le cas 4x4 en ANNEXE 3. A l’étape S4, on convertit la matrice Q résultant de l’étape S3 ou de l’étape S1, selon la valeur du déterminant à l’étape S2. Cette conversion se fait, soit dans le domaine des angles d’Euler (K=3) ou des angles d’Euler généralisés (K>4), soit dans le domaine des quaternions dans le cas du FOA (K=3 ou 4). La conversion en angles d’Euler (pour K=3) est par exemple donnée dans l’Appendix I de l’article de K. Shoemake, Animating Rotation with Quaternion Curves Proc. SIG-GRAPH 1985, pp. 245 - 254. On rappelle qu’il existe des variantes de définition des angles d’Euler selon les axes de rotations choisies (X,Y,Z) et selon que les axes soient fixes ou non. Dans des variantes de l’invention, on pourra utiliser d’autres variantes de définition des angles d’Euler que celle adoptée dans l’article de K. Shoemake pour la conversion. La conversion en angles d’Euler généralisés (pour K>3) est par exemple détaillée dans l’article D.K. Hoffman, R.C. Raffenetti, and K. Ruedenberg, “Generalization of Euler Angles to N-Dimensional Orthogonal Matrices,” Journal of Mathematical Physics, vol. 13, no. 4, pp. 528–533, 1972. Cette paramétrisation par angles d’Euler généralisés est générale et s’applique à n’importe quelle dimension. Dans des variantes, dans le cas K=3, on peut convertir la matrice de rotation Q (après les étapes S1 et S2) en un seul quaternion unitaire. Un exemple de réalisation est donné dans l’Appendix I de l’article de Ken Shoemake, Animating Rotation with Quaternion Curves Proc. SIG-GRAPH 1985, pp. 245 – 254. Dans le cas K=4, une paramétrisation de Q par double quaternion unitaire est également possible ; la conversion en double quaternion est donnée par exemple dans l’article P. Mahé, S. Ragot, S. Marchand, "First-Order Ambisonic Coding with PCA Matrixing and Quaternion-Based Interpolation," Proc. DAFx, Birmingham, UK, Sept. 2019. A l’étape S5, les paramètres obtenus à l’étape S4 sont quantifiés. Pour les angles d’Euler (K=3) ou angles d’Euler généralisés (K>3), notés en ANNEXE 1 angles [i] (i=1,…,6 pour l’exemple K=4), dans le mode de réalisation privilégié, on applique par exemple une quantification scalaire avec un pas de quantification (noté en ANNEXE 1 « stepSize ») identique pour chaque angle. On définit par exemple un budget de 5 et 6 bits pour intervalle de longueur π et 2π ce qui donne un budget de 33 bits pour 6 angles d’Euler généralisés. Un pseudo-code réalisant cette opération de quantification est donné en ANNEXE 1. Dans le cas K=3, avec 3 angles d’Euler on aurait par exemple un budget de 17 bits (6+6+5 bits pour 2 angles définis sur un intervalle de longueur 2π et un angle sur un intervalle de longueur π). Dans des variantes d’autres méthodes de quantification des angles d’Euler peuvent être utilisées. Dans le cas K=3, si la matrice de rotation Q est convertie en seul quaternion unitaire, on code ce quaternion de façon préférentielle avec un dictionnaire hémisphérique de quantification vectorielle sphérique en dimension 4. Dans un exemple de réalisation on pourra prendre les sommets d’un polytope de dimension 4, en utilisant de façon préférentielle les sommets d’une 600-cell tronquée (7200 sommets) ou omnitronquée (14400 sommets) comme définis dans la littérature ou encore les 7200 sommets d’une « 120-cell snub » dont les mots de code (coordonnées en dimension4) sont disponibles par exemple dans : http://paulbourke.net/geometry/hyperspace/120cell_snub.ascii.gz (début du fichier, lignes 2-7201). La quantification vectorielle sphérique se fait par simple comparaison par produit scalaire en dimension 4 avec des mots de code (typiquement normalisés à une norme unitaire égale à 1). La recherche exhaustive du plus proche voisin peut être réalisée efficacement en prenant en compte les permutations possibles d’un même mot de code dans le dictionnaire. Selon l’invention, on pourra tronquer le dictionnaire en un hémisphère pour ne retenir dans la recherche du plus proche voisin que les mots de code dont la dernière (quatrième) composante est positive (ou négative selon la convention alternative qui peut être utilisée dans des variantes). Dans des variantes, la troncature par le signe pourra être faite sur l’une des trois autres composantes du quaternion unitaire. Dans des variantes, on pourra ne pas tronquer le dictionnaire de quantification à un hémisphère. On ne rappelle pas ici les principes connus de quantification vectorielle sphérique avec l’utilisation de « leaders », qui sont par exemple définis dans l’article de C. Lamblin and J.-P. Adoul. Algorithme de quantification vectorielle sphérique à partir du réseau de Gosset d'ordre 8. Ann. Télécommun., vol. 43, no. 3–4, pp. 172–186, 1988 (Lamblin, 1988). Ici, le produit scalaire est calculé pour tous les éléments du dictionnaire (avec ou sans restriction à l’hemisphère) et le nombre de calcul peut être de façon équivalente réduit à un sous-ensemble en listant les « leaders » signés ou non signés dans une table pré-calculée. Le calcul de l’indice de quantification est donné soit par l’indice dans la table exhaustive, soit par l’ajout d’un indice de permutation et d’un offset de cardinalité, selon des approches connues de l’homme de l’art. On trouve un exemple de quantification sphérique (qui peut être facilement adapté) dans la clause 6.6.9 de la recommandation UIT-T G.729.1. Dans le cas K=4, dans le cas des doubles quaternions, la paire de quaternions unitaires et est quantifiée par un dictionnaire de quantification sphérique en dimension 4 ; par convention on quantifie avec un dictionnaire hémisphérique (car et correspondent à une même rotation 3D) et est quantifié avec un dictionnaire sphérique. Des exemples de dictionnaires peuvent être donnés par des points prédéfinis dans des polyèdres de dimension 4. Les dictionnaires de quantification pour et peuvent être intervertis pour la quantification. La quantification est mise en œuvre comme expliquée plus haut en répétant le cas K=3 pour et avec un dictionnaire hémisphérique et un sphérique. A l’étape S5, on code également la matrice de valeurs propres. Selon l’invention, les valeurs propres sont ordonnées de sorte que . Dans un exemple de réalisation, on utilise une quantification scalaire différentielle sur une échelle logarithmique. Un exemple de quantification consiste à coder λ 1 en absolu sur 5 bits, puis à coder la différence (en dB) entre λ k et λ k-1 sur 3 bits, soit un budget de 17 bits pour K=4. Un exemple de réalisation est donné à l’ANNEXE 4 en utilisant un logarithme en base 2 – dans des variantes une base 10 (ou autre) pourra être utilisée. Dans des variantes, d’autres réalisations de la quantification scalaire logarithmique pourront être utilisées. On pourra également utiliser une quantification vectorielle après avoir converti les valeurs propres dans le domaine logarithmique, par exemple en utilisant une quantification de type Pyramidal Vector Quantization (PVQ) décrite dans l’article T. Fischer, “A pyramid vector quantizer,” IEEE transactions on infor- mation theory, vol. 32, no. 4, pp. 568–583, 1986, ou dans des variantes (comme dans le codec Opus défini dans IETF RFC 6716). La quantification vectorielle n’utilise qu’un quadrant des mots de code possibles car les valeurs propres sont positives et ordonnées, donc l’indexation des mots de code peut être simplifiée pour tenir compte de ces deux contraintes. Pour le cas de la PVQ, un exemple de réalisation privilégié met à l’échelle les valeurs propres avant d’appliquer la recherche sur une face pyramide de dimension 4. Dans des variantes, on pourra normaliser les valeurs propres pour ne coder que K-1 valeurs propres normalisées λ 2 /λ 1, …, λ K/ λ 1 . On utilise alors une quantification scalaire sur une échelle logarithmique sur 14 bits pour K=4. Dans ce cas, la même contrainte de normalisation doit être appliquée au décodage sur la matrice de covariance calculée sur le signal décodée. L’exemple de réalisation peut être adapté pour coder directement des indices différentiels. Dans des variantes les valeurs propres issues de la décomposition de la matrice C pourront être quantifiées de manière prédictive en utilisant une prédiction inter-trame ou intra-trame. Dans d’autres variantes, si le codage utilise une division en plusieurs sous-bandes on pourra utiliser une quantification conjointe des valeurs propres de toutes les sous-bandes. Les indices de quantification de la matrice de rotation et de la matrice de valeurs propres sont envoyés au multiplexeur (bloc 140). Les valeurs quantifiées (index_angle[i], …) sont envoyées au multiplexeur 140. Dans l’exemple de mise en œuvre pour le cas FOA à 4 canaux (avec 6 angles d’Euler généralisés codés sur 33 bits et 4 valeurs propres codées sur 17 bits), on obtient donc un budget de 50 bits (soit 2.5 kbit/s) pour coder une matrice de covariance de taille 4x4 dans chaque sous-bande. A titre d’exemple, si une division par sous-bandes est définie avec respectivement 4, 6, 12 ou 24 sous-bandes et si une matrice de covariance est transmise pour chacune des sous-bandes, on obtient un débit de « méta-données » décrivant l’image spatiale de 10, 15, 30, ou 60 kbit/s. Le décodeur illustré à la figure 1, reçoit dans le bloc démultiplexeur 150, un flux binaire comportant au moins un canal codé d’un signal audio issu du signal multicanal d’origine et l’information représentative d’une image spatiale dans au moins une bande fréquentielle (une sous-bande ou une bande unique qui peut couvrir jusqu’à la bande de Nyquist) du signal multicanal d’origine. Le bloc 160 décode (Q -1 ) la matrice de covariance dans chaque bande ou sous-bande définie par le codeur ou une autre information représentative de l’image spatiale du signal d’origine. Pour ne pas alourdir les notations, la matrice de covariance décodée est également notée C comme au codeur. Le bloc 160 met en œuvre les étapes illustrées à la figure 3b pour décoder la matrice de covariance. Les étapes sont fonction de la paramétrisation utilisée au codeur. Si la matrice Q a été codée dans le domaine des angles d’Euler généralisés, le bloc 160 peut décoder en S’1 les indices de quantification des angles d’Euler généralisés. Dans le cas FOA (à 4 canaux) on donne le pseudo-suivant en ANNEXE 2. La même approche est facilement adaptée au cas de trois angles d’Euler pour K=3 ou dans le cas général K>3. Si la matrice Q a été codée dans le domaine des quaternions, on décode le ou les indice(s) de quantification correspondant par exemple à un mot de code dans un dictionnaire de quantification en dimension 4 (éventuellement restreint à un hémisphère par restriction du signe d’une des composantes du quaternion unitaire dans le dictionnaire). A l’étape S’2, le bloc 160 reconstruit la matrice décodée Q en appliquant la conversion d’angles d’Euler généralisés ou quaternion(s) vers une matrice de rotation, par exemple selon les articles précités pour la partie codeur. On décode également les valeurs propres en S’1, pour obtenir Λ=diag(λ 1 ,…, λ K ) puis on calcule à l’étape S’3 la matrice de covariance : C = Q Λ Q T . Le bloc 170 de la figure 1, décode (DEC) le signal audio tel que représenté par le flux binaire. Le décodage mis en œuvre dans le bloc 170 permet d’obtenir un signal audio décodé qui est envoyé en entrée du bloc 171 d’upmix. Ainsi, le bloc 171 met en œuvre une étape (UPMIX) d’augmentation du nombre de canaux. Dans un mode de réalisation de cette étape, pour le canal d’un signal mono , elle consiste à convoluer le signal par différentes réponses impulsionnelles spatiales qui mettent en œuvre des filtres décorrélateurs passe-tout normalisés en énergie aux différents canaux du signal . Dans des variantes, on pourra convoluer le signal par des réponses impulsionnelles de salle (SRIR pour « Spatial Room Impulse Response »); ces SRIRs sont définis à l’ordre ambisonique d’origine de B . Dans d’autres variantes, la décorrélation sera mise en œuvre dans un domaine transformé ou en sous-bandes (par l’application d’un banc de filtres réel ou complexe). L’upmix va ajouter un nombre de canaux pour obtenir , avec le nombre de canaux du signal d’origine. Dans un mode de réalisation particulier, avec un signal de downmix FOA, (le canal W) et . Le bloc 172 met en œuvre une étape (SB) de division en sous-bandes dans un domaine transformé. Dans des variantes, on pourra appliquer un banc de filtres pour obtenir des signaux dans le domaine temporel ou fréquentiel. Une étape inverse, dans le bloc 191, recombine les sous-bandes pour reconstruire un signal décodé en sortie. Dans le mode de réalisation privilégié, la decorrélation du signal (bloc 171) est mise en œuvre avant la division en sous-bandes (bloc 172) mais il est tout à fait possible dans des variantes d’intervertir ces deux blocs. La seule condition à vérifier est de s’assurer que la décorrélation est adaptée à la bande ou sous-bandes prédéfinies. Le bloc 175 détermine (Inf ) une information représentative d’une image spatiale du signal multicanal décodé de manière similaire à que ce qui a été décrit pour le bloc 121 (pour le signal multicanal d’origine), appliqué cette fois-ci au signal multicanal décodé obtenu en sortie du bloc 171. De la même façon que ce qui a été décrit pour le bloc 121, dans un mode de réalisation, cette information est une matrice de covariance des canaux du signal multicanal décodé. Dans un mode de réalisation, dans le domaine STFT, on utilisera le cas complexe où à un facteur de normalisation près. Cette matrice de covariance est obtenue comme suit dans le cas réel : à un facteur de normalisation près. On pourra éventuellement normaliser les matrices par le terme associé au canal W, si une normalisation similaire est appliquée sur la matrice C . Dans des variantes, des opérations de lissage temporel de la matrice de covariance pourront ê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). Dans des variantes, la matrice Ĉ de covariance du signal décodé pourra être décomposée en valeurs propres (ordonnées comme à l’encodeur) et les valeurs propres pourront être normalisées par la plus grande valeur propre. A partir des informations représentatives des images spatiales respectivement du signal multicanal d’origine (Inf. B ) et du signal multicanal décodé (Inf. ) , par exemple, les matrices de covariance C et Ĉ, le bloc 180 met en œuvre une étape de détermination (Det.Corr) d’un ensemble de corrections par sous-bandes (dans au moins une bande). Pour cela, une matrice de transformation T à appliquer au signal décodé est déterminée, de sorte que l’image spatiale modifiée après application de la matrice de transformation T au signal décodé soit la même que celle du signal d’origine B . La figure 2 illustre cette étape de détermination mise en œuvre par le bloc 180. Dans ce mode de réalisation, on considère que les informations représentatives de l’image spatiale du signal multicanal d’origine et du signal multicanal décodé sont les matrices de covariance respectives C et Ĉ . On cherche donc une matrice T qui vérifie l’équation suivante : T.Ĉ.T T =C où C=B.B T est la matrice de covariance de B et est la matrice de covariance de , dans la trame courante. Dans ce mode de réalisation, on utilise une factorisation dite factorisation de Cholesky pour résoudre cette équation. Etant donnée une matrice A de taille n x n, la factorisation de Cholesky consiste à déterminer une matrice L triangulaire (inférieure ou supérieure) telle que A=LL T (cas réel) et A=LL H (cas complexe). Pour que la décomposition soit possible, la matrice A doit être une matrice symétrique définie positive (cas réel) ou hermitienne définie positive (cas complexe) ; dans le cas réel, les coefficients diagonaux de L sont strictement positifs. Dans le cas réel, une matrice M taille n x n est dite symétrique définie positive si elle est symétrique ( M T =M ) et définie positive ( x T Mx>0 pour tout ). Pour une matrice symétrique M , il est possible de vérifier que la matrice est définie positive si toutes ses valeurs propres sont strictement positives ( ). Si les valeurs propres sont positives ( ), la matrice est dite semi-définie positive. Une matrice M taille n x n est dite hermitienne symétrique définie positive si elle est hermitienne ( M H =M ) et définie positive ( z H Mz est un réel >0 pour tout ). La factorisation de Cholesky est par exemple utilisée pour trouver une solution à un système d’équation linaire du type Ax=b . Par exemple, dans le cas complexe, il est possible de transformer A en LL H par la factorisation de Cholesky, de résoudre Ly=b puis de résoudre L H x=y . De façon équivalente, la factorisation de Cholesky peut s’écrire comme A=U T U (cas réel) et A=U H U (cas complexe), où U est une matrice triangulaire supérieure. Dans le mode de réalisation décrit ici, sans perte de généralité, on ne traite que le cas d’une factorisation de Cholesky par matrice triangulaire L . Ainsi, la factorisation de Cholesky permet de décomposer une matrice C=L.L T en deux matrices triangulaires à la condition que la matrice C soit symétrique définie positive. Cela donne l’équation suivante : . Par identification, on trouve : Soit : Les matrices de covariance C et Ĉ étant en général des matrices semi-définies positives, la factorisation de Cholesky ne peut pas être utilisée telle quelle. On note ici quand les matrices L et sont triangulaires inférieures (respectivement supérieures), la matrice de transformation est aussi triangulaire inférieure (respectivement supérieure). Ainsi, le bloc 210 force la matrice de covariance C à être définie positive. Cette modification de la matrice C peut être omise pour la matrice de covariance décodée si la quantification garantit que les valeurs propres sont bien non nulles. Si elle est utilisée, on pourra remplacer les valeurs de la diagonale Cii par max(Cii, ɛ) où ε est une faible valeur fixée par exemple à 10 -9 (si les valeurs du signal ambisonique en temporel sont définies dans l’intervalle +/-1). Dans des variantes, ɛ est ajoutée (Fact. C pour factorisation de C ) sur les coefficients de la diagonale de la matrice pour garantir que la matrice soit bien définie positive : C = C +ɛ I , et I est la matrice identité. De manière similaire, le bloc 220 force la matrice de covariance Ĉ à être définie positive, en remplaçant les valeurs de la diagonale Cii par max(Cii, ɛ) où ε est une faible valeur fixée par exemple à 10 -9 (si les valeurs du signal ambisonique en temporel sont définies dans l’intervalle +/-1) ou en modifiant cette matrice sous la forme Ĉ= Ĉ +ɛ I . Dans le mode de réalisation privilégié ce conditionnement des matrices de covariance est de préférence intégré dans les blocs 121 (au codeur) pour la matrice C et 175 (au décodeur) pour la matrice Ĉ . Une fois que les deux matrices de covariance C et Ĉ sont conditionnées (régularisées) pour être définies positives, le bloc 230 calcule les factorisations de Cholesky associées et trouve (Det.T) la matrice de transformation optimale T sous la forme . Dans ce mode de réalisation, il est possible que la différence relative d’énergie entre le signal ambisonique décodé et le signal ambisonique corrigé soit très importante, notamment au niveau des hautes fréquences qui peuvent être fortement détériorées par les codeurs tels que le codage EVS multi-mono. Pour éviter d’amplifier de manière trop importante certaines zones fréquentielles un terme de régularisation peut être ajouté. Le bloc 240 se charge de manière optionnelle de normaliser (Norm. T ) cette correction. Dans le mode de réalisation privilégié, un facteur de normalisation est donc calculé pour ne pas amplifier de zones fréquentielles. A partir de la matrice de covariance Ĉ du signal multicanal codé puis décodé et de la matrice de transformation T on peut calculer la matrice de covariance du signal corrigé comme : Seule la valeur du premier coefficient R 00 de la matrice R , correspondant à la composante omnidirectionnelle (canal W), est conservée pour être appliquée comme facteur de normalisation à T et éviter une augmentation du gain global due à la matrice de correction T : T norm = g norm .T avec où Ĉ 00 correspond au premier coefficient de la matrice de covariance du signal multicanal décodé. Dans des variantes, le facteur de normalisation g norm pourra être déterminé sans calculer toute la matrice R , car il suffit de ne calculer qu’un sous-ensemble d’éléments matriciels pour déterminer R 00 (et donc g norm ). La matrice T ou T norm ainsi obtenue dans chaque bande ou sous-bande correspond aux corrections à apporter au signal multicanal décodé dans le bloc 190 de la figure 1. Le bloc 190 effectue l’étape de correction du signal multicanal décodé par application dans chaque bande ou sous-bande de la matrice de transformation T ou T norm directement au signal multicanal décodé, dans le domaine ambisonique (de façon préférentielle dans le domaine transformé), pour obtenir le signal ambisonique de sortie corrigé ( corr). Même si l’invention s’applique au cas ambisonique, dans des variantes on pourra convertir d’autres formats (multicanal, objet…) en ambisonique pour appliquer les procédés mis en œuvre selon les différents modes de réalisation décrits. Un exemple de réalisation d’une telle conversion d’un format multicanal ou objet à un format ambisonique est décrit à la figure 2 de la spécification 3GPP TS 26.259 (v15.0.0). On a illustré sur la figure 4 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 d’un signal multicanal d’origine B , par exemple un signal ambisonique réparti sur différents canaux (par exemple quatre canaux W, Y, Z, X à l’ordre 1) en vue de son codage en compression au sens de l’invention ; - un processeur PROC1 pour recevoir ce signal et le traiter en exécutant les instructions de programme informatique que stocke la mémoire MEM1, en vue de son 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 corrigés ( Corr) par exemple sous forme de canaux ambisoniques W…X, en vue de leur restitution. Bien entendu, cette figure 4 illustre un exemple d’une réalisation structurelle d’un codec (codeur ou décodeur) au sens de l’invention. Les figures 1 à 3 commentées ci-dessus décrivent en détails des réalisations plutôt fonctionnelles de ces codecs. ANNEXE 1 min_angle[6] = { -PI_2, -PI_2, -PI, -PI_2, -PI, -PI } max_angle[6] = { PI_2, PI_2, PI, PI_2, PI, PI } excess_bit[6] = { 0, 0, 1, 0, 1, 1 } bits = 5 + v_excess_bit[i] stepSize = (max_angle[i] - min_angle[i]) / (1 index_angle[i] = int((angles[i] - min_angle[i]) / stepSize) + 0.5) index_angle[i] = index_angle[i] % (1 ANNEXE 2 min_angle[6] = { -PI_2, -PI_2, -PI, -PI_2, -PI, -PI } max_angle[6] = { PI_2, PI_2, PI, PI_2, PI, PI } excess_bit[6] = { 0, 0, 1, 0, 1, 1 } bits = 5 + v_excess_bit[i] stepSize = (max_angle[i] - min_angle[i]) / (1 angles_q[i] = index*stepSize + min_angle[i] ANNEXE 3 Calcul du determinant d = det M sous forme littérale pour une matrice M = [aij] de taille 4x4 : d = a11*a22*a33*a44+a11*a24*a32*a43+a11*a23*a34*a42-a11*a24*a33*a42 -a11*a22*a34*a43-a11*a23*a32*a44-a12*a21*a33*a44-a12*a23*a34*a41 -a12*a24*a31*a43+a12*a24*a33*a41+a12*a21*a34*a43+a12*a23*a31*a44 +a13*a21*a32*a44+a13*a22*a34*a41+a13*a24*a31*a42-a13*a24*a32*a41 -a13*a21*a34*a42-a13*a22*a31*a44-a14*a21*a32*a43-a14*a22*a33*a41 - a14*a23*a31*a42+a14*a23*a32*a41+a14*a21*a33*a42+a14*a22*a31*a43 ANNEXE 4 En supposant un conditionnement de matrice C par ε=10 -9 (l’intervalle des indices est adapté en fonction de cette valeur): Quantification : index_val[i] = round(1/2 log2 (λi)), i=1,…,K-1 index_val[i] = clip( index_val[i], [-15,37]) #saturation dans l’intervalle [-15,37] diff_index_val[i] = index_val[i]-index[i-1], i=2..K-1 diff_index_val[i] = clip(diff_index_val[i], [0, 7]) #saturation dans l’intervalle [0,7] Décodage: index_val[i] = index_val[i-1]+diff_index[i], i=2…K-1 λi =2 ½ index_val[i] Procédé de codage d’un signal sonore multicanal, comportant les étapes suivantes : - codage (111) d’au moins un canal de signal audio issu du signal multicanal d’origine ; - division (120) du signal multicanal d’origine en sous-bandes de fréquence ; - détermination (121) d’une matrice de covariance par sous-bande de fréquence, représentatives d’une image spatiale du signal multicanal d’origine ; - décomposition (130) des matrices de covariances déterminées en valeurs propres ; - codage (130) par quantification des paramètres issus de la décomposition en valeurs propres comprenant à la fois des valeurs propres et des vecteurs propres. Procédé selon la revendication 1, dans laquelle les valeurs propres sont ordonnées avant quantification et la quantification s’effectue selon une quantification scalaire différentielle. Procédé selon l’une des revendications 1 à 2, dans lequel la décomposition d’une matrice de covariance en valeurs propres s’effectue selon les étapes suivantes : -obtention d’une matrice de vecteurs propres Q telle que C = Q Λ Q T avec C, la matrice de covariance et Λ=diag(λ 1 ,…, λ K ), une matrice diagonale de valeurs propres ; -modification de la matrice de vecteurs propres en fonction d’une valeur de déterminant de la matrice de vecteurs propres Q ; -conversion de la matrice de vecteurs propres Q dans le domaine des angles d’Euler généralisés ; les angles d’Euler généralisés obtenus faisant partie des paramètres à quantifier. Procédé selon la revendication 3, dans laquelle la quantification des angles d’Euler généralisés s’effectue par quantification uniforme. Procédé selon l’une des revendications 1 à 2, dans lequel la décomposition d’une matrice de covariance en valeurs propres s’effectue selon les étapes suivantes : -obtention d’une matrice de vecteurs propres Q telle que C = Q Λ Q T avec C, la matrice de covariance et Λ=diag(λ 1 ,…, λ K ), une matrice diagonale de valeurs propres ; -modification de la matrice de vecteurs propres en fonction d’une valeur de déterminant de la matrice de vecteurs propres Q ; -conversion de la matrice de vecteurs propres Q dans le domaine des quaternions ; au moins un quaternion obtenu faisant partie des paramètres à quantifier. Procédé selon la revendication 5, dans lequel, la quantification des quaternions s’effectue par quantification vectorielle sphérique. Procédé de décodage d’un signal sonore multicanal, comportant les étapes suivantes : - décodage (170) d’au moins un canal codé et obtention d’un signal multicanal décodé; - division (172) du signal multicanal décodé en sous-bandes de fréquence ; - décodage (160) de paramètres issus d’une décomposition en valeurs propres de matrices de covariance du signal multicanal d’origine ; -détermination (160) des matrices de covariance du signal multicanal d’origine à partir des paramètres décodés : - détermination (175) d’une matrice de covariance, par sous-bandes de fréquences, du signal multicanal décodé ; - détermination (180) d’un ensemble de corrections à apporter au signal décodé à partir des matrices de covariance du signal multicanal d’origine (Inf. B ) et des matrices de covariance du signal multicanal décodé (Inf. ); - correction (190) du signal multicanal décodé par l’ensemble de corrections déterminé ; 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 à 6. 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 7. 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 à 6 ou du procédé de décodage selon la revendication 7.