Brevet FR3109049A1 — publié le 20211008

Procédé (100) adaptatif de contrôle de retour acoustique, le signal d’entrée (e) étant une fonction d’un signal capté (y) et d’une estimation d’un retour acoustique (x), selon les étapes suivantes : - déterminer (101) une réponse impulsionnelle (RI) d’un filtre (A) selon une partition de blocs (b 0 , …b i , …, b Nb ) temporels, selon les étapes suivantes : - pour chaque sous-bloc (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ) de chaque bloc de la réponse impulsionnelle (RI) calculer (1013) une transformée fréquentielle (F 1,i , F 2,i ,…F j,i ,… F Ni,i ) ; - répéter les étapes suivantes : - appliquer (102) au signal de sortie (u) le filtre (A) en utilisant la transformée fréquentielle (F 1,i , F 2,i ,…F j,i ,… F Ni,i ) de chaque sous-bloc (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ); - mettre à jour la transformée fréquentielle (F 1,i , F 2,i ,…F j,i ,… F Ni,i ) de chaque sous-bloc (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ) en fonction du signal de sortie et du signal d’entrée sur la base de la même partition que celle utilisée à l’étape d’application (102) du filtre (A). Figure 1 Procédé de contrôle de retour acoustique avec filtrage adaptatif La présente invention concerne le domaine du traitement du signal pour l’annulation d’un écho associé à un signal acoustique, et en particulier pour lutter contre l’effet Larsen dans les systèmes de diffusion sonore. Il est connu de modéliser une fonction de transfert entre un signal de sortie u d’un dispositif de diffusion sonore et un signal de retour acoustique x, généré par l’environnement à partir du signal de sortie u, pour estimer une contribution dudit signal de retour acoustique x à un signal capté y par un microphone ; cette estimation permet d’en déduire par différence entre y et une estimation du signal source s, purifié du signal de retour acoustique x généré par le ou les échos. Il est en particulier connu de modéliser la fonction de transfert avec un filtre adaptatif, dont la réponse impulsionnelle finie, est partitionnée dans le temps de manière non uniforme. Les procédés connus, basés sur l’utilisation d’un filtre adaptatif dont la réponse impulsionnelle est partitionnée dans le temps de manière non uniforme, obligent à calculer explicitement la réponse impulsionnelle dans le domaine temporel, ce qui augmente la complexité algorithmique. L’invention a donc pour but de proposer une solution à tout ou partie de ces problèmes. A cet effet, la présente invention concerne un procédé adaptatif de contrôle de retour acoustique dans un signal de sortie d’un dispositif de diffusion sonore, le dispositif de diffusion sonore recevant en entrée un signal d’entrée, le signal d’entrée étant une fonction d’un signal capté par un microphone et d’une estimation d’un signal de retour acoustique, le signal capté étant égal à la somme d’un signal source acoustique et du signal de retour acoustique, l’estimation du signal de retour acoustique comprenant les étapes suivantes : - déterminer un filtre, une réponse impulsionnelle du filtre étant partitionnée en une partition comprenant une pluralité de blocs dans le domaine temporel, chaque bloc de la pluralité comprenant un nombre d’échantillons de la réponse impulsionnelle, ledit nombre d’échantillons étant égal à une taille dudit bloc, chaque bloc de la pluralité de blocs comprenant un nombre de sous-blocs, le nombre de sous-blocs étant supérieur ou égal à un, l’étape de détermination comprenant en outre les étapes suivantes : - pour chaque sous-bloc de chaque bloc de la réponse impulsionnelle calculer une transformée fréquentielle à partir dudit sous-bloc; - répéter les étapes suivantes : - appliquer au signal de sortie le filtre en utilisant la transformée fréquentielle de chaque sous-bloc de chaque bloc de la réponse impulsionnelle, pour obtenir l’estimation du signal de retour acoustique; - adapter le filtre, en mettant à jour la transformée fréquentielle de chaque sous-bloc de chaque bloc de la réponse impulsionnelle en fonction du signal de sortie et du signal d’entrée, caractérisé en ce que : l’adaptation du filtre est réalisée par une mise à jour de la transformée fréquentielle calculée et adaptée sur la base de la même partition que celle déterminée à l’étape de détermination, et utilisée à l’étape d’application du filtre. Selon ces dispositions, l’étape d’adaptation du filtre utilise la même partition de la réponse impulsionnelle que celle déterminée à l’étape de détermination et utilisée à l’étape d’application du filtre, ce qui permet d’éviter d’avoir à effectuer les étapes de création, et de calcul à chaque itération du procédé. Selon un mode de mise en œuvre, l’invention comprend une ou plusieurs des caractéristiques suivantes, seules ou en combinaison techniquement acceptable. Selon un mode de mise en œuvre, la taille d’un bloc est différente d’une autre taille d’au moins un autre bloc. Selon un mode de mise en œuvre, la transformée fréquentielle est une transformation de Fourier. Selon un mode de mise en œuvre, chaque sous-bloc dudit bloc a une même taille que les autres sous-bloc dudit bloc. Selon un mode de mise en œuvre, le calcul de la transformée fréquentielle d’un sous sous-bloc d’un bloc de la réponse impulsionnelle comprend les étapes suivantes : - créer un sous-bloc concaténé en concaténant ledit sous-bloc avec des échantillons virtuels, de sorte qu’une taille du sous-bloc concaténé est égale à au moins deux fois la taille dudit sous-bloc ; - calculer la transformée fréquentielle du sous-bloc concaténé créé pour ledit sous-bloc; Selon un mode de mise en œuvre, la valeur d’au moins un échantillon virtuel est comprise entre -0,5, et 0,5, de préférence égale à 0; de préférence la valeur de tous les échantillons virtuels est égale à 0. Selon un mode de mise en œuvre, les échantillons virtuels sont placés avant les échantillons du sous-bloc pour créer le sous-bloc concaténé. Selon un mode de mise en œuvre, la fonction du signal capté et de l’estimation du signal de retour acoustique est égale à une différence entre le signal capté et l’estimation du signal de retour acoustique. Selon un mode de mise en œuvre, le signal de sortie, le signal d’entrée, comprennent respectivement une pluralité d’échantillons, dans le domaine temporel, chaque échantillon de ladite pluralité d’échantillons correspondant à une valeur, à des instants successifs, du signal de sortie, respectivement du signal d’entrée, et l’étape de détermination comprend en outre les étapes suivantes : - créer une pluralité de composants, la pluralité de composants comprenant un composant non retardé associé à un bloc non retardé de la partition, et au moins un composant retardé, le composant non retardé comprenant un buffer de sortie non retardé, l’au moins un composant retardé comprenant un buffer de sortie retardé; - créer une pluralité de buffer source, chaque buffer source étant associé à un bloc de la partition; et l’étape d’adaptation comprend les étapes suivantes : - calculer une transformée fréquentielle du contenu du buffer de sortie; - insérer la transformée fréquentielle dans un buffer circulaire configuré pour contenir un historique des transformées de Fourier calculées lors des dernières itérations, pour un nombre d’itérations déterminé en fonction du nombre de sous-blocs du bloc associé au composant; - pour chaque buffer source de la pluralité de buffer source, calculer une transformée fréquentielle à partir dudit buffer source; - mettre à jour la transformée fréquentielle de chaque sous-bloc de chaque bloc de la réponse impulsionnelle à partir du buffer circulaire et de la transformée fréquentielle calculée à partir des buffers source. Selon un mode de mise en œuvre, chaque composant est respectivement configuré pour recevoir dans ledit buffer de sortie un nombre d’échantillons du buffer de sortie, ledit nombre d’échantillons du buffer de sortie étant égal à deux fois la taille d’un sous-bloc du bloc associé audit composant. Selon un mode de mise en œuvre, chaque buffer source de la pluralité de buffer source a une taille égale à la taille d’un sous-bloc du bloc associé audit buffer source. Selon un mode de mise en œuvre, le composant non retardé comprend un premier buffer non retardé et un deuxième buffer non retardé, l’au moins un composant retardé comprenant un premier buffer retardé, et un deuxième buffer retardé , et le procédé comprend les étapes suivantes - créer une pluralité de buffer FIFO, chaque buffer FIFO étant associé à un bloc de la partition, et ayant une profondeur égale à la taille dudit bloc de la partition, la profondeur définissant un nombre d’échantillons du signal de sortie pouvant être sauvegardés dans ledit buffer FIFO, l’au moins un composant retardé étant associé à un buffer FIFO et au bloc de la partition associé audit buffer FIFO; et l’étape d’adaptation comprend les étapes suivantes: - à chaque instant sauvegarder l’échantillon correspondant du signal de sortie dans le premier buffer non retardé du composant non retardé, jusqu’à ce que le premier buffer non retardé soit plein; - dans chaque buffer FIFO de la première pluralité de buffer FIFO, et pour chaque instant, sauvegarder les échantillons du signal de sortie, jusqu’à ce que ledit buffer soit plein, avec au moins un dernier échantillon sauvegardé dans ledit buffer et l’échantillon retardé sauvegardé en premier dans ledit buffer; - pour chaque composant retardé de la pluralité de composants, à chaque instant suivant l’instant où le buffer FIFO associé audit composant retardé est plein, sauvegarder l’échantillon retardé dudit buffer FIFO dans le premier buffer retardé dudit composant retardé, jusqu’à ce que ledit premier buffer retardé soit plein ; - pour chaque composant de la pluralité de composants: - lorsque le premier buffer est plein, si le deuxième buffer dudit composant est vide, recopier ledit premier buffer dans le deuxième buffer dudit composant, et itérer jusqu’à ce que le premier soit à nouveau plein; - si le deuxième buffer dudit composant n’est pas vide, former le buffer de sortie en concaténant le premier et le deuxième buffer dudit composant; Selon un mode de mise en œuvre, le premier buffer et le deuxième buffer de chaque composant sont respectivement configurés pour recevoir un nombre d’échantillons du buffer, ledit nombre d’échantillons du buffer étant égal à la taille d’un sous-bloc du bloc associé audit composant. Selon un mode de mise en œuvre, l’étape d’adaptation comprend les étapes suivantes : - pour chaque buffer source de la pluralité de buffer source, à chaque instant, sauvegarder l’échantillon correspondant du signal d’entrée dans ledit buffer source, jusqu’à ce que ledit buffer source soit plein; - pour chaque buffer source de la pluralité de buffer source, créer un buffer source concaténé en concaténant ledit buffer source avec des échantillons source virtuels ayant une même valeur d’échantillon source virtuel, de sorte qu’une taille du buffer source concaténé est égale à au moins deux fois la taille dudit buffer source; et le calcul d’une transformée de Fourier à partir dudit buffer source est réalisé à partir du buffer source concaténé créé pour chaque buffer source de la pluralité de buffer source; Selon un mode de mise en œuvre, la valeur d’au moins un échantillon source virtuel est comprise entre -0,5, et 0,5, de préférence égale à 0; de préférence la valeur de tous les échantillons source virtuels est égale à 0. Selon un mode de mise en œuvre, le buffer source concaténé est créé en ajoutant les échantillons sources virtuels avant les échantillons du buffer source de façon à obtenir le buffer source concaténé. Selon un mode de mise en œuvre, l’étape de mise à jour de la transformée fréquentielle de chaque sous-bloc de chaque bloc de la réponse impulsionnelle à partir du premier buffer circulaire et du deuxième buffer circulaire, est réalisée en appliquant une méthode adaptative dans le domaine fréquentiel. Selon un mode de mise en œuvre, la méthode adaptative dans le domaine fréquentiel est effectuée par un algorithme, connu par l’homme du métier sous le nom de Fast Block LMS. Selon un mode de mise en œuvre, d’autres algorithmes adaptatifs plus évolués peuvent être appliqués Selon ces dispositions, consistant à utiliser différentes tailles de blocs, communes à la convolution et à l’adaptation, des jeux de paramètres d’adaptation doivent être choisis, dont en particulier un coefficient de pas, ces paramètres étant spécifiques à chaque taille des sous-blocs, tout en garantissant la cohérence de l’estimation. Plusieurs démarches peuvent être suivies pour le choix de ces jeux de paramètres ; il est possible d’obtenir une vitesse de convergence différente en début et en fin de réponse, ce qui peut être favorable en pratique. Selon un autre aspect l’invention concerne un programme d’ordinateur comprenant un ensemble d’instructions exécutables par un processeur d’un ordinateur, l’ensemble d’instructions étant configuré pour mettre en œuvre les étapes du procédé selon l’une quelconque des revendications précédentes lorsque l’ensemble d’instructions est exécuté par le processeur de l’ordinateur. Selon encore un autre aspect l’invention concerne un support lisible par un ordinateur, comprenant un ensemble d’instructions exécutables par un processeur de ordinateur, l’ensemble d’instructions étant configuré pour mettre en œuvre les étapes du procédé selon l’un quelconque des modes de mise en œuvre décrit précédemment, lorsque l’ensemble d’instructions est exécuté par le processeur de l’ordinateur. Pour sa bonne compréhension, un mode de réalisation et/ou de mise en oeuvre de l’invention est décrit en référence aux dessins ci-annexés représentant, à titre d’exemple non limitatif, une forme de réalisation ou de mise en œuvre respectivement d’un dispositif et/ou d’un procédé selon l’invention. Les mêmes références sur les dessins désignent des éléments similaires ou des éléments dont les fonctions sont similaires. est une représentation schématique des composants d’un dispositif configuré pour mettre en œuvre le procédé selon l’invention. est une représentation d’un mode de partitionnement d’une réponse impulsionnelle d’un filtre utilisé dans la mise en œuvre du procédé selon l’invention. est une représentation des principaux composants configurés pour la mise en œuvre des différentes étapes de la mise à jour du filtre adapté selon un mode de mise en œuvre du procédé selon l’invention. est une représentation simplifiée d’un logigramme des étapes du procédé selon un mode de mise en œuvre de l’invention. Un système de contrôle du retour acoustique, est souvent appelé aussi système d’AFC selon la terminologie anglo-saxonne désignant un système Acoustic Feedback Cancelation ou anti-Larsen. Le principe général d’un système d’AFC est représenté sur la figure 1. Par la suite, s(n) désigne la valeur du signal s à l’instant t=nΔt, Δt étant la période d’échantillonnage commune à tous les signaux. Ainsi sur la figure 1, désigne le signal de sortie d’un système de diffusion sonore S. est le signal capté par le microphone, égal à la somme du signal émis par la source , non mesurable, et du retour acoustique Le principe de l’AFC est de modéliser la fonction de transfert du retour acoustique dont l’entrée est ( ) et la sortie à l’aide d’un filtre A, de type FIR, i.e. à réponse impulsionnelle finie. Ce filtre est appliqué au signal pour obtenir une estimation de , qui est soustraite de . Le signal résultant ( sortie de l’algorithme d’AFC est une estimation de la contribution directe de la source . Le système selon l’invention comprend en outre un adaptateur B configuré pour mettre à jour en temps réel l’estimation de la fonction de transfert du retour acoustique à partir des signaux et , et pour la transmettre à A. La figure 1 représente un exemple d’implantation du système pour l’annulation d’écho dans le cadre d’une communication full-duplex. L’homme du métier comprendra que cet exemple n’est pas limitatif et que d’autre mode de réalisation du système de contrôle du retour acoustique selon l’invention sont envisageables. L’algorithme s’appuie sur un partitionnement de la réponse impulsionnelle RI, partitionnement qui est représenté schématiquement à la figure 2, et qui va maintenant être décrit en référence à la figure 2. La figure 2 représente en ordonnée les différentes valeurs d’une réponse impulsionnelle d’un modèle de la fonction de transfert du retour acoustique en fonction du temps représenté en abscisse. La réponse impulsionnelle est découpée selon l’axe du temps en blocs principaux b 0 , …b i , …, b Nb de tailles variables N 0 *M 0 , N 1 *M 1 ,…., N i *M i ,…, N Nb *M Nb . Chaque bloc principal d’indice est découpé à son tour en blocs de même taille . désigne la portion de la réponse impulsionnelle correspondant au jème bloc de la ième taille . Pour chaque portion de RI de taille , ladite portion est concaténée avec zeros, de sorte que la taille de la portion concaténée est 2Mi ; puis une transformée de Fourier de la portion concaténée est calculée. Par la suite, désigne le tableau de dimension x qui contient les transformées de Fourier calculées pour chacune des portions concaténées du bloc b i . L’encodage de la réponse impulsionnelle RI décrit ci-dessus doit nécessairement être effectué avant de pouvoir appliquer un algorithme de convolution rapide à faible latence, tel que décrit dans la littérature. Il doit donc être appliqué à chaque fois que la réponse impulsionnelle RI est modifiée. L’invention sur laquelle porte la revendication consiste en un procédé adaptatif qui permet de mettre à jour directement les blocs , en évitant ainsi d’avoir à effectuer les étapes d’encodage décrites ci-dessus à chaque mise jour, comme le nécessiterait un algorithme conventionnel. Autrement dit, selon un mode de mise en œuvre et en référence à la figure 4, le procédé 100 comprend l’estimation du signal de retour acoustique x, qui comprend les étapes suivantes: - déterminer 101 un filtre A, une réponse impulsionnelle RI du filtre A étant partitionnée 1011 en une partition comprenant une pluralité de blocs b 0 , …b i , …, b Nb dans le domaine temporel, chaque bloc b 0 , …b i , …, b Nb de la pluralité comprenant un nombre variable d’échantillons de la réponse impulsionnelle, égal à une taille dudit bloc ; chaque bloc de la pluralité de blocs bi comprend un nombre Ni, supérieur ou égal à 1, de sous-blocs h 1,i ,h 2,i ,…h j,i ,… h Ni,i , chaque sous-bloc h 1,i ,h 2,i ,…h j,i ,… h Ni,i dudit bloc ayant une même taille Mi que les autres sous-bloc dudit bloc, de sorte que la taille d’un bloc bi est égale à Ni*Mi ; l’étape de détermination 101 comprenant en outre les étapes suivantes : - pour chaque sous-bloc h 1,i ,h 2,i ,…h j,i ,… h Ni,i de chaque bloc, créer 1012 un sous-bloc concaténé en concaténant ledit sous-bloc h 1,i ,h 2,i ,…h j,i ,… h Ni,i avec des échantillons virtuels, de sorte qu’une taille du sous-bloc concaténé est égale à deux fois la taille dudit sous-bloc ; de préférence, la valeur d’au moins un échantillon virtuel est comprise entre -0,5, et 0,5, de préférence égale à 0; de préférence la valeur de tous les échantillons virtuels est égale à 0 ; - pour chaque sous-bloc h 1,i ,h 2,i ,…h j,i ,… h Ni,i de chaque bloc, calculer 1013 une transformée de Fourier F 1,i , F 2,i ,…F j,i ,… F Ni,i du sous-bloc concaténé créé pour ledit sous-bloc h 1,i ,h 2,i ,…h j,i ,… h Ni,i ; - répéter les étapes suivantes : - appliquer 102 le filtre A au signal de sortie u en utilisant la transformée de Fourier F 1,i , F 2,i ,…F j,i ,… F Ni,i de chaque sous-bloc h 1,i ,h 2,i ,…h j,i ,… h Ni,i de chaque bloc de la réponse impulsionnelle RI, pour obtenir l’estimation du signal de retour acoustique x ; - adapter 103 le filtre A, en mettant à jour la transformée de Fourier F 1,i , F 2,i ,…F j,i ,… F Ni,i de chaque sous-bloc h 1,i ,h 2,i ,…h j,i ,… h Ni,i de chaque bloc de la réponse impulsionnelle RI en fonction du signal u de sortie et du signal d’entrée e, le signal d’entrée e étant de préférence égal à la différence du signal capté y par le microphone et de l’estimation ; le procédé 100 étant caractérisé en ce que l’adaptation 103 du filtre A étant réalisée directement par une mise à jour de la transformée de Fourier sur la base de la même partition que celle déterminée à l’étape de détermination 101, et utilisée à l’étape d’application 102 du filtre A. Le procédé adaptatif fait ainsi intervenir deux principaux composants : Le composant ou filtre A filtre le signal en appliquant un algorithme de convolution rapide avec partionnement non-uniforme de la réponse impulsionnelle. Le composant ou adaptateur B met à jour l’estimation de la fonction de transfert du retour acoustique à partir des signaux et , et la transmet à A. L’adapteur B peut par exemple comprendre les composants suivants, créés selon un mode de mise en œuvre, au cours de l’étape de détermination 101, qui comprend par exemple les étapes suivantes, décrites en référence aux figures 3 et 4: - ET1 : créer une pluralité de buffer FIFO B1(1), …, B1(i),…, B1(Nb), chaque buffer FIFO, B1(1), …, B1(i),…, B1(Nb),étant associé à un bloc b 1 , …b i , …, b Nb de la partition, et ayant une profondeur R 1 , R 2 , …, R i , …R Nb égale à la taille dudit bloc de la partition, la profondeur R 1 , R 2 , …, R i , …R Nb définissant un nombre d’échantillons u(n) du signal de sortie u pouvant être sauvegardés dans ledit buffer FIFO; - ET2 : créer une pluralité de composants B2(0), B2(1), …, B2(i),…, B2(Nb), la pluralité de composants B2(0), B2(1), …, B2(i),…, B2(Nb) comprenant un composant non retardé B2(0) associé à un bloc non retardé de la partition, et au moins un composant retardé B2(1), …, B2(i),…, B2(Nb), l’au moins un composant retardé B2(1), …, B2(i),…, B2(Nb) étant associé à un buffer FIFO et au bloc de la partition associé audit buffer FIFO ; le composant non retardé B2(0) comprend par exemple un premier buffer non retardé u 0 , et un deuxième buffer non retardé v 0 ; l’au moins un composant retardé B2(1), …, B2(i),…, B2(Nb) comprend par exemple un premier buffer retardé u 1 , …, u i ,…, u Nb , et un deuxième buffer retardé v 1 , …, v i ,…, v Nb ; le premier buffer et le deuxième buffer de chaque composant étant respectivement configurés pour recevoir un nombre d’échantillons M 0, M 1 , M 2 , …M i , ..M Nb égal à la taille d’un sous-bloc du bloc associé audit composant; - ET3 : créer une pluralité de buffer source B3(0), B3(1), …, B3(i),…, B3(Nb), chaque buffer source étant associé à un bloc de la partition et ayant une taille M 0, M 1 , M 2 , …M i , ..M Nb égale à la taille d’un sous-bloc du bloc associé audit buffer source ; Selon un mode de mise en œuvre, les étapes de l’adaptation 103 du filtre A par l’adaptateur B sont décrites en détail ci-dessous en référence aux figures 3 et 4 : - ET21 : à chaque instant n, sauvegarder l’échantillon correspondant u(n) du signal de sortie u dans le premier buffer non retardé u 0 du composant non retardé B2(0), jusqu’à ce que le premier buffer non retardé u 0 soit plein; - ET22 : dans chaque buffer FIFO B1(1), …, B1(i),…, B1(Nb) de la première pluralité de buffer, et pour chaque instant n, sauvegarder les échantillons u(n) du signal de sortie u, jusqu’à ce que ledit buffer soit plein, avec au moins un dernier échantillon u(n) sauvegardé dans ledit buffer et l’échantillon retardé u(n-Ri) sauvegardé en premier dans ledit buffer; - ET23 : pour chaque composant retardé de la pluralité de composants B2(1), …, B2(i),…, B2(Nb), à chaque instant n suivant l’instant où le buffer FIFO associé audit composant retardé est plein, sauvegarder l’échantillon retardé u(n-Ri) dudit buffer FIFO dans le premier buffer retardé u 1 , …, u i ,…, u Nb dudit composant retardé B2(1), …, B2(i),…, B2(Nb), jusqu’à ce que ledit premier buffer retardé u 1 , …, u i ,…, u Nb soit plein; - ET24 : pour chaque composant de la pluralité de composants B2(0), B2(1), …, B2(i),…, B2(Nb) : - ET24a : lorsque le premier buffer u 0, u 1 , …, u i ,…, u Nb est plein, si le deuxième buffer v 1 , …, v i ,…, v Nb dudit composant est vide, recopier ledit premier buffer u 0, u 1 , …, u i ,…, u Nb dans le deuxième buffer v 1 , …, v i ,…, v Nb dudit composant, et répéter les étapes ET1, ET2, ET3, ET4 jusqu’à ce que le premier u 0, u 1 , …, u i ,…, u Nb soit à nouveau plein; - ET24b : si le deuxième buffer v 1 , …, v i ,…, v Nb dudit composant n’est pas vide, former un troisième buffer w 0, w 1 , …, w i ,…, w Nb en concaténant le premier et le deuxième buffer dudit composant B2(0), B2(1), …, B2(i),…, B2(Nb), de sorte que w i = [v i u i ]; - ET24c : calculer une transformée de Fourier S 0 , S 1 ,…,S i ,…S Nb du contenu du troisième buffer w 0, w 1 , …, w i ,…, w Nb ; - ET24d : insérer la transformée de Fourier S i en première place d’un buffer circulaire U i configuré pour contenir un historique des transformées de Fourier S 0 , S 1 ,…,S i ,…S Nb calculées à l’étape E24c lors des N i dernières itérations de l’étape E24, pour un nombre d’itérations N i déterminé en fonction du nombre de sous-blocs du bloc associé au composant B2(0), B2(1), …, B2(i),…, B2(Nb); - ET31 : pour chaque buffer source de la pluralité de buffer source B3(0), B3(1), …, B3(i),…, B3(Nb), à chaque instant n, sauvegarder l’échantillon correspondant e(n) du signal d’entrée e dans ledit buffer source B3(0), B3(1), …, B3(i),…, B3(Nb), jusqu’à ce que ledit buffer source B3(0), B3(1), …, B3(i),…, B3(Nb) soit plein; - ET32 : pour chaque buffer source de la pluralité de buffer source B3(0), B3(1), …, B3(i),…, B3(Nb), créer un buffer source concaténé en concaténant des échantillons source virtuels ayant une même valeur d’échantillon source virtuel avec ledit buffer source B3(0), B3(1), …, B3(i),…, B3(Nb), de sorte qu’une taille du buffer source concaténé est égale à deux fois la taille dudit buffer source B3(0), B3(1), …, B3(i),…, B3(Nb); de préférence, la valeur d’au moins un échantillon source virtuel est comprise entre -0,5, et 0,5, de préférence égale à 0; de préférence la valeur de tous les échantillons source virtuels est égale à 0 ; - ET33 : pour chaque buffer source de la pluralité de buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb), calculer une transformée de Fourier E 0 , E 1 , … E i , … E Nb du buffer source concaténé créé pour ledit buffer source B3(0), B3(1), …, B3(i),…, B3(Nb); - ET4 : mettre à jour la transformée de Fourier F 1,i , F 2,i,… F j,i,… F Ni,i de chaque sous-bloc h 1,i , h 2,i,… h j,i,… h Ni,i de chaque bloc b 1 , …b i , …, b Nb de la réponse impulsionnelle RI à partir du buffer circulaire obtenu à l’étape ET24d et de la transformée de Fourier E 0 , E 1 , … E i , … E Nb obtenue à l’étape ET33. Selon un mode de mise en œuvre, l’étape ET4 de mise à jour de la transformée de Fourier de chaque sous-bloc de chaque bloc de la réponse impulsionnelle à partir du premier buffer circulaire obtenu à l’étape ET2 et du buffer obtenu à l’étape ET33, est réalisée en appliquant une méthode adaptative dans le domaine fréquentiel. Cette opération est effectuée tous les échantillons, lorsque les blocs de données et provenant respectivement des composants B2[i] et B3[i] sont pleins. L’adaptation peut par exemple être effectuée par l’algorithme Fast Block LMS : Boucle sur j = 1 à : Calcul du produit du conjugué de et du élément de Calcul de la FFT inverse, mise à zeros des derniers éléments, calcul de la FFT Multiplication par (step size). Le résultat est noté Addition de au élément de : D’autres algorithmes adaptatifs plus évolués peuvent être appliqués (par exemple NLMS, avec ou sans régularisation). Le principe consistant à utiliser différentes tailles de blocs, communes à la convolution et à l’adaptation, suppose de choisir des jeux de paramètres d’adaptation, dont en particulier le paramètre , spécifiques à chaque taille tout en garantissant la cohérence de l’estimation. Plusieurs démarches peuvent être suivies pour le choix de ces jeux de paramètres ; il est possible d’obtenir une vitesse de convergence différente en début et en fin de réponse, ce qui peut être favorable en pratique. L’algorithme de contrôle du retour acoustique proposé est ainsi du type PBFDAF, c’est-à-dire selon la terminologie anglo-saxonne « Partitionned Block Frequency Domain Adaptive Filter ». Mais, à la différence des méthodes existantes, sa particularité est d’effectuer les traitements de convolution et d’adaptation avec une même partition non-uniforme de la réponse impulsionnelle du retour acoustique. L’utilisation d’une partition non-uniforme permet de réduire considérablement la complexité par rapport aux algorithmes PBFDAF existants, à latence et ordre de filtre équivalents. Contrairement à un algotithme de type UN-PBDAF, dans lequel seule la convolution est effectuée sur un partionnement non uniforme, le fait d’adopter le même partitionnement pour la convolution et l’adaptation permet d’éviter d’avoir à calculer explicitement la réponse impulsionnelle dans le domaine temporel, ce qui réduit la complexité. Selon un autre aspect l’invention concerne un programme d’ordinateur comprenant un ensemble d’instructions exécutables par un processeur d’un ordinateur, l’ensemble d’instructions étant configuré pour mettre en œuvre les étapes du procédé selon l’une quelconque des revendications précédentes lorsque l’ensemble d’instructions est exécuté par le processeur de l’ordinateur. Selon encore un autre aspect l’invention concerne un support lisible par un ordinateur, comprenant un ensemble d’instructions exécutables par un processeur de ordinateur, l’ensemble d’instructions étant configuré pour mettre en œuvre les étapes du procédé selon l’un quelconque des modes de mise en œuvre décrit précédemment, lorsque l’ensemble d’instructions est exécuté par le processeur de l’ordinateur. Procédé (100) adaptatif de contrôle de retour acoustique dans un signal de sortie (u) d’un dispositif de diffusion sonore (S), le dispositif de diffusion sonore (S) recevant en entrée un signal d’entrée (e), le signal d’entrée (e) étant une fonction d’un signal capté (y) par un microphone et d’une estimation d’un signal de retour acoustique (x), le signal capté (y) étant égal à la somme d’un signal source (s) acoustique et du signal de retour (x) acoustique, l’estimation du signal de retour acoustique (x) comprenant les étapes suivantes : - déterminer (101) un filtre (A), une réponse impulsionnelle (RI) du filtre (A) étant partitionnée (1011) en une partition comprenant une pluralité de blocs (b 0 , …b i , …, b Nb ) dans le domaine temporel, chaque bloc (b 0 , …b i , …, b Nb ) de la pluralité comprenant un nombre d’échantillons de la réponse impulsionnelle, ledit nombre d’échantillons étant égal à une taille dudit bloc, chaque bloc de la pluralité de blocs (bi) comprenant un nombre (Ni) de sous-blocs (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ), le nombre (Ni) de sous-blocs (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ) étant supérieur ou égal à un, l’étape de détermination (101) comprenant en outre les étapes suivantes : - pour chaque sous-bloc (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ) de chaque bloc de la réponse impulsionnelle (RI) calculer (1013) une transformée fréquentielle (F 1,i , F 2,i ,…F j,i ,… F Ni,i ) à partir dudit sous-bloc (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ) ; - répéter les étapes suivantes : - appliquer (102) au signal de sortie (u) le filtre (A) en utilisant la transformée fréquentielle (F 1,i , F 2,i ,…F j,i ,… F Ni,i ) de chaque sous-bloc (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ) de chaque bloc de la réponse impulsionnelle (RI), pour obtenir l’estimation du signal de retour acoustique (x) ; - adapter (103) le filtre (A), en mettant à jour la transformée fréquentielle (F 1,i , F 2,i ,…F j,i ,… F Ni,i ) de chaque sous-bloc (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ) de chaque bloc de la réponse impulsionnelle (RI) en fonction du signal (u) de sortie et du signal d’entrée (e), caractérisé en ce que : l’adaptation (103) du filtre (A) est réalisée par une mise à jour de la transformée fréquentielle calculée et adaptée sur la base de la même partition que celle déterminée à l’étape de détermination (101), et utilisée à l’étape d’application (102) du filtre (A). Procédé selon la revendication 1, dans lequel la taille d’un bloc (b 0 , …b i , …, b Nb ) est différente d’une autre taille d’au moins un autre bloc (b 0 , …b i , …, b Nb ), Procédé selon l’une des revendications 1 ou 2, dans lequel chaque sous-bloc (h 1,i ,h 2,i ,…h j,i ,… h Ni,i ) dudit bloc a une même taille (Mi) que les autres sous-bloc dudit bloc, de sorte que la taille d’un bloc (bi) est égale à (Ni*Mi). Procédé selon l’une quelconque des revendications 1 à 3, dans lequel le calcul de la transformée fréquentielle d’un sous sous-bloc (h1,i,h2,i,…hj,i,… hNi,i) d’un bloc de la réponse impulsionnelle (RI) comprend les étapes suivantes : - créer (1012) un sous-bloc concaténé en concaténant ledit sous-bloc (h1,i,h2,i,…hj,i,… hNi,i) avec des échantillons virtuels, de sorte qu’une taille du sous-bloc concaténé est égale à au moins deux fois la taille dudit sous-bloc ; - calculer (1013) la transformée fréquentielle (F1,i, F2,i,…Fj,i,… FNi,i) du sous-bloc concaténé créé pour ledit sous-bloc (h1,i,h2,i,…hj,i,… hNi,i) ; Procédé (100) selon l’une quelconque des revendications 1 à 4, dans lequel le signal de sortie (u), le signal d’entrée (e), comprennent respectivement une pluralité d’échantillons (u(n)), (e(n)) dans le domaine temporel, chaque échantillon de ladite pluralité (u(n)), respectivement (e(n)), correspondant à une valeur, à des instants (n) successifs, du signal de sortie (u), respectivement d’entrée (e), et dans lequel l’étape de détermination (101) comprend en outre les étapes suivantes : - (ET2) créer une pluralité de composants (B2(0), B2(1), …, B2(i),…, B2(Nb)), la pluralité de composants (B2(0), B2(1), …, B2(i),…, B2(Nb)) comprenant un composant non retardé (B2(0)) associé à un bloc non retardé de la partition, et au moins un composant retardé (B2(1), …, B2(i),…, B2(Nb)), le composant non retardé (B2(0)) comprenant un buffer de sortie non retardé (w 0 ), l’au moins un composant retardé (B2(1), …, B2(i),…, B2(Nb)) comprenant un buffer de sortie retardé (w 1 , …, w i ,…, w Nb ); - (ET3) créer une pluralité de buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)), chaque buffer source étant associé à un bloc de la partition; et dans lequel l’étape d’adaptation (103) comprend les étapes suivantes : - (ET24c) calculer une transformée fréquentielle (S 0 , S 1 ,…,S i ,…S Nb ) du contenu du buffer de sortie (w 0, w 1 , …, w i ,…, w Nb ); - (ET24d) insérer la transformée fréquentielle S i dans un buffer circulaire (U i ) configuré pour contenir un historique des transformées fréquentielles (U 0,i ,U 2,i ,…,U j,i ,…,U Ni,i ) calculées à l’étape (E24c) lors des N i dernières itérations de l’étape (E24c), pour un nombre d’itérations (N i ) déterminé en fonction du nombre de sous-blocs du bloc associé au composant (B2(0), B2(1), …, B2(i),…, B2(Nb)); - (ET33) pour chaque buffer source de la pluralité de buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)), calculer une transformée fréquentielle (E 0 , E 1 , … E i , … E Nb ) à partir dudit buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)) ; - (ET4) mettre à jour la transformée fréquentielle (F 1,i , F 2,i,… F j,i,… F Ni,i ) de chaque sous-bloc (h 1,i , h 2,i,… h j,i,… h Ni,i ) de chaque bloc (b 1 , …b i , …, b Nb ) de la réponse impulsionnelle (RI) à partir du buffer circulaire, obtenu à l’étape (ET2), et de la transformée fréquentielle (E 0 , E 1 , … E i , … E Nb ) calculée à partir des buffers source à l’étape (ET33). Procédé (100) selon la revendication 5, dans lequel le composant non retardé (B2(0)) comprend un premier buffer non retardé (u 0 ) et un deuxième buffer non retardé (v 0 ), l’au moins un composant retardé (B2(1), …, B2(i),…, B2(Nb)) comprenant un premier buffer retardé (u 1 , …, u i ,…, u Nb ), et un deuxième buffer retardé (v 1 , …, v i ,…, v Nb ) , et dans lequel le procédé (100) comprend les étapes suivantes - (ET1) créer une pluralité de buffer FIFO (B1(1), …, B1(i),…, B1(Nb)), chaque buffer FIFO (B1(1), …, B1(i),…, B1(Nb)) étant associé à un bloc (b 1 , …b i , …, b Nb ) de la partition, et ayant une profondeur (R 1 , R 2 , …, R i , …R Nb ) égale à la taille dudit bloc de la partition, la profondeur (R 1 , R 2 , …, R i , …R Nb ) définissant un nombre d’échantillons (u(n)) du signal de sortie (u) pouvant être sauvegardés dans ledit buffer FIFO, l’au moins un composant retardé (B2(1), …, B2(i),…, B2(Nb)) étant associé à un buffer FIFO et au bloc de la partition associé audit buffer FIFO; et dans lequel l’étape d’adaptation (103) comprend les étapes suivantes réalisées avant l’étape (ET24c): - (ET21) à chaque instant (n) sauvegarder l’échantillon correspondant (u(n)) du signal de sortie (u) dans le premier buffer non retardé (u 0 ) du composant non retardé (B2(0)), jusqu’à ce que le premier buffer non retardé (u 0 ) soit plein; - (ET22) dans chaque buffer FIFO (B1(1), …, B1(i),…, B1(Nb)) de la première pluralité de buffer FIFO, et pour chaque instant (n), sauvegarder les échantillons (u(n)) du signal de sortie (u), jusqu’à ce que ledit buffer soit plein, avec au moins un dernier échantillon (u(n)) sauvegardé dans ledit buffer et l’échantillon retardé (u(n-Ri)) sauvegardé en premier dans ledit buffer; - (ET23) pour chaque composant retardé de la pluralité de composants (B2(1), …, B2(i),…, B2(Nb)), à chaque instant (n) suivant l’instant où le buffer FIFO associé audit composant retardé est plein, sauvegarder l’échantillon retardé (u(n-Ri)) dudit buffer FIFO dans le premier buffer retardé (u 1 , …, u i ,…, u Nb ) dudit composant retardé (B2(1), …, B2(i),…, B2(Nb)), jusqu’à ce que ledit premier buffer retardé (u 1 , …, u i ,…, u Nb ) soit plein ; - (ET24) pour chaque composant de la pluralité de composants (B2(0), B2(1), …, B2(i),…, B2(Nb)) : - (ET24a) lorsque le premier buffer (u 0, u 1 , …, u i ,…, u Nb ) est plein, si le deuxième buffer (v 1 , …, v i ,…, v Nb ) dudit composant est vide, recopier ledit premier buffer (u 0, u 1 , …, u i ,…, u Nb ) dans le deuxième buffer (v 1 , …, v i ,…, v Nb ) dudit composant, et répéter les étapes (ET1), (ET2), (ET3), (ET4) jusqu’à ce que le premier (u 0, u 1 , …, u i ,…, u Nb ) soit à nouveau plein; - (ET24b) si le deuxième buffer (v 1 , …, v i ,…, v Nb ) dudit composant n’est pas vide, former le buffer de sortie (w 0, w 1 , …, w i ,…, w Nb ) en concaténant le premier et le deuxième buffer dudit composant (B2(0), B2(1), …, B2(i),…, B2(Nb)) de sorte que wi = [vi ui]; Procédé (100) selon l’une des revendications 5 ou 6, dans lequel l’étape d’adaptation (103) comprend les étapes suivantes : - (ET31) pour chaque buffer source de la pluralité de buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)), à chaque instant (n), sauvegarder l’échantillon correspondant e(n) du signal d’entrée (e) dans ledit buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)), jusqu’à ce que ledit buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)) soit plein; - (ET32) pour chaque buffer source de la pluralité de buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)), créer un buffer source concaténé en concaténant des échantillons source virtuels ayant une même valeur d’échantillon source virtuel avec ledit buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)), de sorte qu’une taille du buffer source concaténé est égale à deux fois la taille dudit buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)) ; et dans lequel le calcul (ET33) d’une transformée fréquentielle (E0, E1,…Ei,… ENb) à partir dudit buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)) est réalisé à partir du buffer source concaténé créé pour chaque buffer source de la pluralité de buffer source (B3(0), B3(1), …, B3(i),…, B3(Nb)) . Procédé (100) selon l’une quelconque des revendications précédentes, dans lequel la transformée fréquentielle est une transformée de Fourier. Programme d’ordinateur comprenant un ensemble d’instructions exécutables par un processeur d’un ordinateur, l’ensemble d’instructions étant configuré pour mettre en œuvre les étapes du procédé selon l’une quelconque des revendications 1 à 8 lorsque l’ensemble d’instructions est exécuté par le processeur de l’ordinateur. Support apte à être lu par un ordinateur, comprenant un ensemble d’instructions exécutables par un processeur de ordinateur, l’ensemble d’instructions étant configuré pour mettre en œuvre les étapes du procédé selon l’une quelconque des revendications 1 à 8, lorsque l’ensemble d’instructions est exécuté par le processeur de l’ordinateur.