Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
IMPROVED DIGITAL AUDIO SYNTHESIZER
Document Type and Number:
WIPO Patent Application WO/2011/161372
Kind Code:
A1
Abstract:
The invention relates to a digital audio synthesizer that includes: an input memory for receiving a sequence of digital data representing the amplitude spectrum of an audio signal over consecutive and overlapping time windows; a computer (120) that is set up to receive, as an input, a draft digital data set for a active window including amplitude-extrapolated data at the start of a window and zero values for the rest of the window, and to establish, as a response, a digital representation of the discrete complex Fourier transform for said set; a dialer (130) that is set up to combine the amplitude spectrum input, corresponding to the active window in question, with the digital representation predetermined by the computer, and to call the computer (120) with the resulting data in order to establish a digital representation of the corresponding complex inverse discrete Fourier transform that provides a set of estimated digital data related to the active window in question; and an adder (140) for selectively accumulating the estimated digital data that corresponds to a single period of time. The dialer (130) is set up to calculate an auxiliary digital data set (Xi(n)) by taking the active set (z(n)) of estimated digital data divided by a window function on each time window. The adder (140) is set up to add the active set of estimated digital data multiplied by the window function (H) having the preceding value from the accumulated total. Said digital audio synthesizer also includes an extrapolator (110) that is set up to calculate the draft digital data set for an active window from the auxiliary digital data set for the preceding window, said auxiliary digital data set being selectively multiplied by the square of the window function.

Inventors:
DI MARTINO, Joseph (48 rue du Val de Fer, Neuves-Maisons, F-54203, FR)
PIERRON, Laurent (48 rue du Sergent Bobillot, Nancy, F-54000, FR)
Application Number:
FR2011/051425
Publication Date:
December 29, 2011
Filing Date:
June 21, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INRIA INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET EN AUTOMATIQUE (Domaine de Voluceau Rocquencourt, Le Chesnay, F-78150, FR)
UNIVERSITÉ DE NANCY 1 HENRI POINCARÉ (24-30 rue Lionnois, Nancy, F-54000, FR)
DI MARTINO, Joseph (48 rue du Val de Fer, Neuves-Maisons, F-54203, FR)
PIERRON, Laurent (48 rue du Sergent Bobillot, Nancy, F-54000, FR)
International Classes:
G10H7/10; G10L13/02
Attorney, Agent or Firm:
BLOT, Philippe et al. (Cabinet Lavoix, 2 Place d'Estienne d'Orves, Paris Cedex 09, F-75441, FR)
Download PDF:
Claims:
Revendications

1, Synthétiseur numérique audio, comprenant :

* une mémoire d'entrée pour recevoir une suite de données numériques (Fi(co)) représentatives du spectre d'amplitude d'un signal audio, sur des fenêtres temporelles consécutives et chevauchantes,

* un calculateur (120), agencé pour recevoir en entrée un jeu de données numériques d'esquisse (y(n)) d'une fenêtre courante comprenant en début de fenêtre des données extrapolées d'amplitude, et des valeurs nulles pour le reste de la fenêtre, et pour établir en réponse une représentation numérique (Υ(ω)) de la transformée de Fourier discrète complexe de ce jeu,

* un composeur (130), agencé pour combiner l'entrée de spectre d'amplitude (Fi(te)) associée à la fenêtre courante considérée et la représentation numérique (Υ(ω)) déterminée par le calculateur, et pour appeler le calculateur (120) avec les données résultantes pour établir une représentation numérique de la transformée de Fourier discrète complexe inverse correspondante, ce qui fournit un jeu de données numériques estimées (z(n)), relatives à la fenêtre courante considérée, et

* un additionneur (140), pour cumuler sélectivement les données numériques estimées (z(n)) qui correspondent à un même temps,

caractérisé en ce que :

* le composeur (130) est agencé pour calculer un jeu de données numériques auxiliaires (Xi(n)), en prenant le jeu de données numériques estimées (z(n)) courant, divisé par une fonction de fenêtre (H(n)) sur chaque fenêtre temporelle,

* l'additionneur (140) est agence pour ajouter le jeu de données numériques estimées (z(n)) courant multiplié par la fonction de fenêtre (H) à la valeur précédente du cumul,

et en ce qu'il comprend un extrapolateur (1 0) agencé pour calculer le jeu de données numériques d'esquisse (y(n)) pour une fenêtre courante à partir du jeu de données numériques auxiliaires (xj.}(n)) de la fenêtre précédente multiplié sélectivement par le carré de la fonction de fenêtre.

2. Synthétiseur selon la revendication I , dans lequel Fextrapolateur ( ! 10) calcule le jeu de données numériques d'esquisse (y(n)) pour une fenêtre courante par décalage à gauche de L échantillons du jeu de données numériques auxiliaires (x-,. i(n)) de la fenêtre précédente, avec mise à zéro des L derniers échantillons du jeu décalé, puis par multiplication terme à terme par le carré de la fonction de fenêtre.

3. Synthétiseur selon la revendication 1 ou 2, dans lequel la fonction de fenêtre (H) 5 comprend une fonction fenêtre de Hamming normalisée.

4. Synthétiseur selon l'une des revendications 1 à 3, comprenant en outre un spectromètre agencé pour calculer une suite de données numériques (Fi(co)) représentatives du spectre d'amplitude d'un signal audio en entrée, et pour transmettre

10 ces données à la mémoire d'entrée.

5. Synthétiseur selon la revendication 4, comprenant un composant placé entre le spec rornètre et la mémoire d'entrée propre à modifier les données numériques représentatives du spectre d'amplitude en entrée, et à transmettre les données de spectre ί 5 d'amplitude modifiées à la mémoire d'entrée.

Description:
Synthétiseur numérique audio amélioré

L'invention concerne la synthèse numérique audio en temps réel. Plus particulièrement, l'invention s'applique dans les domaines qui nécessitent de réaliser une modification spectrale d'un signal audio en temps réel, par exemple dans les prothèses auditives, les jeux vidéos, la sonorisation d'espaces, etc.

Depuis le milieu des années 1980, des solutions ont été recherchées pour permettre de reconstruire un signa! audio à partir de son spectre d'amplitude. Pour cela, ces méthodes se basent sur l'utilisation de la transformée de Fourier à court terme (Short-Term Fourter Transform en anglais ou STFF) dans des conditions précises.

Ces méthodes présentent néanmoins plusieurs désavantages. Le premier est qu'elles nécessitent de travailler sur tout le signal, ce qui empêche de fonctionner en temps réel. De plus, ces méthodes sont basées sur une réduction itérative non bornée qui présente un coût de calcul important.

L'invention vient améliorer la situation,

À cet effet, l'invention propose un synthétiseur numérique audio, comprenant :

* une mémoire d'entrée pour recevoir une suite de données numériques représentatives du spectre d'amplitude d'un signal audio. sur des fenêtres * temporelles consécutives et chevauchantes,

* un calculateur, agencé pour recevoir en entrée un jeu de données numériques d'esquisse d'une fenêtre courante comprenant en début de fenêtre des données extrapolées d'amplitude, et des valeurs nulles pour le reste de la fenêtre, et pour établir en réponse une représentation numérique de la transformée de Fourier discrète complexe de ce jeu,

* un composeur, agencé pour combiner l'entrée du spectre d'amplitude associé à la fenêtre courante considérée et la représentation numérique déterminée par le calculateur, et pour appeler le calculateur avec les données résultantes pour établir une représentation numérique de la transformée de Fourier discrète complexe inverse correspondante, ce qui fournit un jeu de données numériques estimées, relatives à la fenêtre courante considérée, et

* un additionneur, pour cumuler sélectivement les données numériques estimées qui correspondent à un même temps.

Dans ce synthétiseur :

* le composeur est agencé pour calculer un jeu de données numériques auxiliaires, en prenant le jeu de données numériques estimées courant, divisé par une fonction de fenêtre sur chaque fenêtre temporelle,

* l'additionneur est agencé pour ajouter le jeu de données numériques estimées courant multiplié par la fonction de fenêtre à la valeur précédente du cumul,

* un extrapolateur est agencé pour calculer le jeu de données numériques d'esquisse pour une fenêtre courante à partir du jeu de données numériques auxiliaires de la fenêtre précédente multiplie sélectivement par le carré de la fonction de fenêtre.

D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lecture de la description qui suit, tirée d'exemples donnés à titre iilustraiif et non limitatif, tirés des dessins sur lesquels :

- la figure t représente un exemple de mise en œuvre d'un synthétiseur selon l'invention, et

- la figure 2 représente un diagramme de flux des opérations mises en œuvre par le synthétiseur de la figure 1.

La description détaillée est augmentée de l'annexe A, qui donne la formulation de certaines formules mathématiques mises en œuvre dans le cadre de l'invention. Cette annexe est mise à part dans un but de clarification, et pour faciliter les renvois. Elle est partie intégrante de la description, et pourra donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. La figure 1 représente un synthétiseur audio 100 selon l'invention. Le synthétiseur 100 comprend un extrapolateur 110, un calculateur 120, un composeur 130. et un additionneur 140. En fonctionnement, le synthétiseur 100 reçoit en entrée des données numériques 150 (ci-après notées Fi(co)) représentatives du spectre d'amplitude d'un signal audio, i-.es données numériques 150 sont traitées par le synthétiseur 100 » et sont retournées sous la forme de données numériques de signal audio 160. Comme cela apparaîtra avec la figure 2, le synthétiseur 100 travaille sur des fenêtres temporelles consécutives et chevauchantes. Dans l'exemple décrit ici, ces fenêtres portent sur un nombre U de trames dans le signai audio que l'on cherche à resynthétiser.

Chaque trame comprend N échantillons dont les L derniers sont extrapolés. L est choisi dans l'exemple décrit ici comme un diviseur de la taille N de îa STFT. De manière préférée, N est un multiple de 4L. Le synthétiseur audio 100 fonctionne sur la base d'une boucle, dans laquelle une trame est extrapolée à chaque itération.

Le synthétiseur 100 opère conformément au diagramme de flux de la figure 2.

Dans une première opération 200, la synthèse audio est initialisée au moyen d'une fonction Initf). La fonction Init() prépare les variables et paramètres qui vont être utilisés dans la synthèse et leur assigne des valeurs d'origine. Dans l'exemple décrit ici, la fonctio iniî{) est réalisée par le composeur 130.

Ces variables et paramètres sont :

N le nombre d'échantillons de la transformée de Fourier, N est aussi le nombre d'échantillons de chaque trame,

L le nombre d'échantillons extrapolés par itération,

~ U le nombre d'itérations,

Xo(n) = 0 pour n compris entre 0 et N- l. À chaque itération, un signal X;(n) est calculé, qui sert de données auxiliaires à l'extrapolation de l'itération suivante,

s(n) - 0 pour n compris entre 0 et U*L+ ~1. où s(.n) est le signal resynthétisé, le compteur i est nitialisé à 0.

Une fois que toutes les variables ont été mitiaiisées, la boucle de resynthèse commence en 210 avec l'incrémentation du compteur i. Ensuite, un test sur la valeur du compteur s dans une opération 220 peut déclencher une opération 230 de sortie de boucle si l'ensemble des trames ont été traitées.

Dans le cas contraire, des données d'esquisse y(n) sont calculées dans une opération 240 au moyen d'une fonction Ext(). La fonction Ext() est dans l'exemple décrit ici réalisée par i'exîrapoiaieur 1 10. La fonction Ext() utilise comme argument les données auxiliaires Χί-ι(η).

Pour toutes les itérations, les données auxiliaires Xj.i(n) sont calculées à l'itération précédente, sauf pour la première, où xo(n) est calculé par la fonction Mt().

Pour chaque n variant entre 0 et -L-l , la fonction Bxt() définit y(n) comme le produit des données par le carré d'une fonction de fenêtrage H(n) selon la formule donnée en (10) dans l'annexe A. Pour chaque n variant entre N-L eî N-l , la fonction ExtQ définit y{n) égal à 0.

Ensuite, le calculateur 120 est appelé dans une opération 250 pour calculer la transformée de Fourier discrète de y(n) au moyen d'une fonction DFT(). Le résultat de celte fonction est stocké dans des données Y(w) où w varie entre 0 et N-l, selon la formule (20) de l'annexe A.

Le composeur 130 est alors appelé dans une opération 260 pour combiner les données Y(w) avec des données Fi(w) pour produire des données Z(w), au moyen d'une fonction Comp(). Les données Fj(w) sont des données de spectre d'amplitude du signal à resynthétiser correspondant à la trame de l'itération courante. Dans l'exemple décrit ici, les données Fi(w) sont calculées par S TFT du signal à resynfhétiser, en utilisant la fonction H(n) comme fonction fenêtre. La fonction. Corop() combine les données Y(w) avec des données Fj( ) en appliquant le module Fi(w) aux données Y(w). Ainsi, dans les données Z(w), la phase des données d'esquisse y(n) est préservée, et l'énergie de la trame à resynthétiser est réintroduite. Dans l'exemple décrit ici, les données Fi(w) sont reçues en entrée. Cependant, le synthétiseur 100 pourrait comprendre un spectromètre audio pour calculer ces coefficients et les fournir au composeur 130.

Le synthétiseur peuî également comprendre un composant placé entre le spectromètre et la mémoire d'entrée propre à modifier les données numériques représentatives du spectre d' amplitude en entrée, et à transmettre les données de spectre d'amplitude modifiées à la mémoire d'entrée.

Ce composant peut appliquer un algorithme ou filtre quelconque de prétraitement du spectre d'amplitude, dans le cadre par exemple d'une transformation du type voix œsophagienne vers voie laryngée.

Les données Z(w) sont alors renvoyées au calculateur 120 dans une opération 270. Dans cette opération, le calculateur 120 exécute une fonction ÏDFT() qui réalise l'inverse de l'opération 250, et stocke le résultat dans des données z(n), selon la formule (30) de l'annexe A.

Le composeur 130 est alors rappelé dans une opération 280 pour calculer les données auxiliaires x,(n) pour l'itération suivante. Cette opération est réalisée au moyen d'une fonction Rest() qui reçoit les données z(n) en entrée, et qui les divise par la fonction de fenêtre H(n).

Enfin, le signal resynthétisé s(n) est enfin calculé dans une opération 290 au moyen d'une fonction Add(), puis la boucle reprend en 21.0, La fonction Add() est réalisée par l'additionneur 140, et reçoit comme arguments les données z(n) et le compteur i. La fonction Add{) ajoute alors ies données z(n) multipliées par la fonction de fenêtre H(n) aux données resynthétisées d'indice s(i*L+n), selon ia formule (40) de l'annexe A. Comme cela a été mentionné en introduction, le domaine de la resynthèse à partir du spectre d'amplitude est un domaine qui est mal connu et difficilement compris. Ce domaine fait appel à la maîtrise des transformées de Fourier à court terme (STFT), dont le sens physique n'est pas toujours maîtrisé.

Bien que les phénomènes en cause ne soient pas entièrement compris, il est possible d'en donner une explication au moins partielle, comme on le verra maintenant.

Chaque itération permet d'extrapoler les L échantillons d'une trame courante. Comme ces .échantillons sont à l suite des trames précédentes, les données auxiliaires Xj-î(n) contiennent donc déjà une grande partie du signal.

C'est pour cela que les données auxiliaires x 5 _i(n) sont d'abord décalées vers la gauche de L indices, et les L derniers éléments sont laissés nuis. Ensuite, les données d'esquisse qui servent au calcul des données de resynthèse sont multipliées par la fonction de fenêtre H(n) au carré. La fonction de fenêtre utilisée dans l'exemple décrit ici est une fenêtre de Hamming normalisée, dont l formule est donnée en (50) dans l'annexe À.

De fait, l'opération 250 est une STFT modifiée, parce que c'est le carré de la fonction de fenêtre qui est appliqu au lieu de la fonction fenêtre. C'est pour cela que les données z(n) sont divisées par la fonction de fenêtre H(a) pour donner les données auxiliaires Xj(n) dans l'opération 280,

Les multiplications et division par la fonction de fenêtre ne sont pas faites au hasard. En effet, on pourrait penser supprimer la division de l'opération 280 et faire une multiplication simple dans l'opération 240 au lieu d'une multiplication par le carré.

Mais cela serait ne pas tenir compte du fait que la multiplication de l'opération 250 est faite sur des Xi.i(n) décalés par rapport à ceux de l'opération 280. Et ce détail est crucial, car cela permet d'utiliser un signal Xj(n) qui est une sorte de vision "idéalisée" du signal audio resynthétisé.

À l'inverse, les données resynthétisées s(n) sont fenêtrées par rapport aux données z{n). Cela est réalisé afin d'obtenir un effet de lissage de type chevauchement, et addition (overlap-add en anglais ou OLA), ei permet de limiter les discontinuités au niveau des extrémités des trames.

L'annexe A et ces explications ne sont pas qu'une suite de formules mathématiques théoriques. Ainsi, îe Demandeur a dans un premier temps utilisé une formule (50) avec une multiplication simple au lieu de la multiplication par ie carré.

Les expérimentations ne donnant pas satisfaction, ses recherches l'ont mené à l'utilisation du carré de cette fenêtre. Cela est avantageux car la multiplication par le carré de la fonction de fenêtre assure la normalisation et économise une étape de calcul.

D'autres fonctions pourraient être utilisées pour la fonction de fenêtre, comme une fenêtre de Hann normalisée ou une autre fenêtre normalisée. L'utilisation de la fenêtre normalisée est importante car celle-ci permet d'une part le lissage des données resynthétisées s(n) sans qu'il soit nécessaire d'autre part de normaliser ces dernières à la fin de la resynthèse.

En effet, sans lissage, des artefacts apparaîtraient aux frontières des trames. Et sans fenêtre normalisée, il faudrait tenir compte de tous les éléments produits pour normaliser, ce qui empêcherait une application temps réel.

Annexe A

Q≤ n<N ~~L y(n) = (n + L)*H (n) :

(10) N-L≤n<N y(n) - 0

-a«t*w*n

y ( ri) * e « (20) s(i * h + n) « s(i * L + 7i) - .2(71) * tf(?î) (40)

H (yi) - _^= £== - f 0.5 - 0.46 * ces f≥^ ) (50)