Ceci est un résumé du contenu de Traitement du signal audio pour les applications musicales que j'ai pris à Coursera. Je pense que ce sera une passerelle lorsque vous voudrez aller plus loin que la simple lecture d'une piste.
En gros, l'analyse vocale consiste à clarifier "de quelle fréquence le son que vous entendez est composé". C'est ce qu'on appelle l'analyse spectrale. Une fois que cela sera révélé, vous pourrez:
Comme mentionné ci-dessus, si la décomposition (analyse) est réussie, il sera possible de créer un son en synthétisant le contraire. En d'autres termes, l'analyse musicale est un processus de ** décomposition-> analyse-> (conversion / filtrage) -> reconstruction ** dans son ensemble (on peut dire qu'il s'agit d'un alchimiste d'acier).
La première étape de l'analyse de la parole commence par l'expression de la parole en tant que fonction.
Je pense que c'est dans ma mémoire que le graphique de la fonction triangulaire ressemble à une onde sonore. Ceci est utilisé pour exprimer le son en tant que fonction. La vitesse angulaire de $ \ omega $, comme son nom l'indique, est l'angle auquel elle se déplace par unité de temps (1 seconde). L'unité d'angle est le radian (pour ceux qui disent radian, veuillez vous reporter à ici), dans le cas du radian $ 2 \ pi $ fait un tour, c'est-à-dire un cycle, donc en divisant $ \ omega $, dont l'unité est le radian, par $ 2 \ pi $ donne $ f $ par seconde, soit Hz.
Le point à noter est $ n
L'introduction a été allongée, mais la figure ci-dessous est un graphique de cette fonction avec les paramètres réels. Lorsque vous l'entendez comme un son, cela produit un son semblable à celui d'un test auditif.
CC by MTG(Basicmathematics-Sinewaveplot)
Cependant, il est difficile à gérer tel quel, nous allons donc utiliser la formule d'Euler pour le convertir en fonction exponentielle.
La formule d'Euler montre la relation entre l'exposant complexe et la fonction triangulaire $ e ^ {j \ phi} = cos \ phi + jsin \ phi $ (voir la figure ci-dessous), et en appliquant cela, la fonction triangulaire Il est possible de convertir la représentation en une représentation d'un exposant complexe.
CC by MTG(Basicmathematics-Euler'sformula)
L'avantage d'utiliser la représentation exponentielle complexe est que l'amplitude $ A $ peut être facilement exprimée comme la valeur absolue du nombre complexe, et la phase initiale $ \ phi $ peut être facilement exprimée comme l'angle de déviation.
CC by MTG(Basicmathematics-Complexnumbers)
L'histoire jusqu'à présent peut être résumée comme suit.
Maintenant que le son peut être exprimé, je vais vous expliquer comment décomposer et reconstruire ce son.
Dès la conclusion, c'est la transformée de Fourier qui décompose la voix et la transformée de Fourier inverse qui la reconstruit. Cependant, comme le temps géré par l'ordinateur est discret comme expliqué ci-dessus, il est appelé transformation de Fourier discrète / transformation inverse.
Tout d'abord, voyons comment la transformation de Fourier discrète (DFT) qui effectue la décomposition est définie.
L'essence de la transformation de Fourier est de découvrir la répartition $ X [k] $ de la quantité de son que chaque fréquence $ k $ est contenue dans les échantillons $ N $ obtenus $ x [n] $. Cependant, il faut noter ici que $ k $ n'est pas une simple fréquence. La limite supérieure de la fréquence qui peut être examinée est déterminée par la fréquence d'échantillonnage $ f_s $, mais si seulement $ N $ est échantillonné à partir de celle-ci, elle sera examinée tous les $ f_s / N $ (= discret). Ce $ f_s / N $ est l'unité de k, donc la relation entre $ k $ et la fréquence est $ f_k = f_s k / N $ comme décrit ci-dessus. Le fait est que la finesse de la fréquence à examiner dépend du nombre d'échantillons.
Si vous ne gardez pas ces deux points à l'esprit, vous serez confus par la conversion d'unité. La partie $ e ^ {-j2 \ pi kn / N} $ dans DFT a pour effet d'annuler tout autre chose que la fréquence souhaitée $ k $ à partir de $ x [n] $ (The Discrete Fourier Transform 2 of 2, [Généralisations d'identité d'Euler](http://en.wikipedia.org/ Voir wiki / Euler's_identity)), vous ne pouvez obtenir que $ k $ en multipliant $ x [n] $ par ceci. En calculant ceci pour $ n $ à chaque fois et en prenant la somme, nous calculons la somme des composants $ k $ contenus dans $ n $ à chaque fois, c'est-à-dire combien de fréquence $ k $ est incluse dans tout le son. Tu peux le faire.
La figure ci-dessous montre ce qui a été réellement calculé et tracé.
CC by MTG(TheDiscreteFourierTransform1of2)
La première étape montre le son réel, les deuxième et troisième étapes montrent le résultat DFT, la deuxième étape est l'amplitude et la troisième étape est le graphique de phase initiale. Dans la deuxième rangée, l'axe vertical est l'intensité de l'amplitude convertie en digibel, et l'axe horizontal est Hz, qui montre la hauteur du son et sa force (c'est ce qu'on appelle le spectre de magnitude). ). Dans la troisième rangée, l'axe vertical est la phase initiale (vitesse angulaire) et l'axe horizontal est Hz, ce qui indique quel son de hauteur commence à sonner à quel moment (c'est ce qu'on appelle le spectre de phase).
Ici, je résumerai quelques questions connexes.
CC by MTG(TheDiscreteFourierTransform2of2DFTofrealsinusoid)
Puisque nous n'avons pas besoin du côté négatif, nous ne traitons généralement que 0 ou plusieurs parties (moitié positive).
CC by MTG(FourierTransformproperty2of2Phaseunwrapping)
CC by MTG(FourierTransformproperty2of2Zero-padding)
Effectuer une DFT et clarifier la magnitude et la phase est le processus équivalent à la «décomposition sonore».
La transformée de Fourier discrète inverse (IDFT) est utilisée pour reconstruire le son original en utilisant la magnitude et la phase obtenues à la suite de la DFT.
Il s'agit de l'opération inverse de DFT et resynthétise la voix.
Lors du calcul, utilisez la transformation de Fourier à grande vitesse / transformation inverse (FFT / IFFT) qui accélère la DFT / IDFT. Pour utiliser FFT, procédez comme suit:
FFT / IFFT est implémenté dans scipy et peut être facilement implémenté en l'utilisant.
L'explication ci-dessus est plus rapide à lire dans le code, veuillez donc vous y référer également.
MTG/sms-tools/software/models/dftModel.py
Je pense que vous pouvez maintenant décomposer et reconstruire la voix. Cependant, dans l'état actuel des choses, nous reconstruisons simplement le son original, je voudrais donc aller un peu plus loin sur la façon d'analyser les résultats de la décomposition à partir d'ici, puis enfin regarder les parties liées à la conversion et au filtrage.
Une chanson typique a une durée de plusieurs minutes, et lorsqu'elle est appliquée à la FFT, les sons qui sonnent à différents moments de la chanson sont mélangés, et l'ampleur et la phase deviennent encombrées et les caractéristiques deviennent difficiles à saisir. Je vais finir. Par conséquent, le morceau est divisé en longueurs fixes et une transformée de Fourier discrète est exécutée pour chaque unité de division. En les organisant, vous pouvez saisir le changement de magnitude / phase dans les séries chronologiques. Cette méthode est appelée transformation de Fourier à court terme (STFT).
Il s'agit d'une image de décalage de la plage d'analyse de taille N par H (voir la figure ci-dessous).
CC by MTG(TheShort-TimeFourierTransform(1of2))
$ w $ est appelé une fonction de fenêtre. La raison de l'application d'une telle chose est qu'on suppose que la partie découpée de taille N est un "signal périodique". Cependant, en réalité ce n'est pas le cas, donc la première partie est appliquée avec une fonction qui converge vers 0 à la fin pour faire apparaître comme s'il s'agissait d'un signal périodique. La fonction pour cela s'appelle la fonction de fenêtre.
Vous vous demandez peut-être s'il est correct d'appliquer quelque chose comme ça, mais au contraire, si vous n'appliquez pas la fonction de fenêtre, l'hypothèse de "signal périodique" sera rompue, donc lorsque vous reconstruisez la voix, du bruit sera généré. Il semblera qu'il est inclus.
Plus précisément, la fonction de fenêtre est la suivante (ce qui suit est une simple fenêtre rectangulaire).
CC by MTG(TheShort-TimeFourierTransform(1of2)Analysiswindow)
Il prend une valeur de 1 au pic et prend la forme d'un seul pic qui se désintègre autour de lui. En prenant la magnitude, il devient comme indiqué dans la figure ci-dessus. Le pic est appelé lobe principal et le pic à côté du pic est appelé lobe latéral. Puisqu'il est préférable que la fonction de fenêtre passe uniquement la fréquence cible, plus le lobe principal est étroit, plus la résolution de fréquence est élevée et plus le lobe latéral autre que le lobe principal est bas, plus l'effet sur les sons (petits sons) autres que le principal est important. Va être réduit. Il y a un compromis entre l'étroitesse du lobe principal et du lobe latéral bas, et il est nécessaire de les utiliser correctement en fonction de la situation. En général, sélectionnez celui avec un lobe latéral bas dans le cas où des sons forts et faibles sont inclus, et sélectionnez celui avec un lobe principal étroit dans le cas où il tient dans un certain volume, en donnant la priorité à la résolution. (Le premier est souvent blackman / blackman-harris et le second martèle / pend).
Référence
Window function Windowing
Understanding FFT Windows Choosing a Windowing Function
Sinusoidal model
Le modèle sinusoïdal consiste à penser un son complexe comme un ensemble de sons simples (sinusoïde) d'une fréquence spécifique. Dans le modèle ci-dessous, le son au temps n est représenté par R sons de fréquences spécifiques.
S'il peut s'appliquer à ce modèle, il semble possible de reconstruire des sons complexes à partir de sons simples. Alors, comment savoir de quelle fréquence est composé un son? L'indice est toujours le spectre.
L'analyse spectrale révèle que les sons de différentes fréquences sont détectés sous forme de pics de magnitude, comme indiqué ci-dessous.
Week 5: Sinusoidal model, Theory lecture 1: Sinusoidal model 1
Par conséquent, il semble que les fréquences qui composent le son peuvent être bien identifiées en suivant les étapes ci-dessous.
Commencez par aller de "1. Créez un spectre de magnitude pour que les pics puissent être bien détectés". Le point de ceci est la taille de la fenêtre, et il est nécessaire de définir de sorte que plusieurs composants de fréquence tiennent à l'intérieur de la fenêtre.
Week 5: Sinusoidal model, Theory lecture 1: Sinusoidal model 1
Comme indiqué dans ci-dessus, la fréquence détectable est en unités $ f_s / N
Un exemple d'un mélange des 440/490 ci-dessus est le suivant.
Week 5: Sinusoidal model, Theory lecture 1: Sinusoidal model 1
Eh bien, je ne sais pas vraiment quelle est la fréquence de ce son (440 et 490!), Donc je vais ajouter quelque chose comme 100-2000Hz et choisir un M qui fonctionne bien sur toute la fréquence entre les deux. (Comme ça. L'axe horizontal est la fréquence et l'axe vertical est k (M = k * 100 +) Puisque k = 21 est stable à n'importe quelle fréquence, 2101 est utilisé comme M).
Harmonic model Sinusoidal plus residual model(Stochastic model)
**A3: Fourier Properties Part-4: Suppressing frequency components using Citation du modèle DFT **
Week8 - Sound transformations
Week9 - Sound and music description
Week10 - Concluding topics
Recommended Posts