Programmation d'un Vocoder


11

Je veux programmer mon propre synthétiseur de vocodeur comme "Songify" mais je ne trouve pas un simple algorithme de vocodeur. Vous pouvez peut-être expliquer ou dire où chercher des informations sur le fonctionnement du vocodeur.


3
DAFX par Udo Zölzer et al a un vocodeur de phase simple avec du code MATLAB.
Phonon

1
Vérifiez Melodify SDK , il fait la même chose et un essai de démonstration est disponible.
Danijel

Réponses:


18

Je crains que toutes les réponses ici ne soient pas pertinentes à la question. Ce qu'on appelle un vocodeur dans le monde de la production musicale n'a pas grand-chose à voir avec le vocodeur de phase utilisé dans le traitement du signal. Pour aggraver les choses, l' application Songify référencée par le message d'origine n'est pas un exemple de vocodeur. Laissez-nous régler cela!

1. Vocodeur de phase

Le vocodeur de phase référencé par les autres réponses est une technique de traitement du signal qui peut être utilisée pour effectuer une modification temps / hauteur des signaux (time-stretching, pitch-shifting), en calculant une représentation temps-fréquence du signal (Transformée de Fourier à court terme , ou STFT) puis en insérant / supprimant des trames de signal et en maintenant la cohérence des informations de phase. Sa relation avec la voix n'est qu'historique et il est actuellement utilisé pour le pitch-shifting et le time-stretching dans le matériel / logiciel audio bas de gamme. RubberBand est un exemple de bibliothèque open source C ++ d'altération temps / hauteur basée sur un vocodeur de phase.

2. Vocoder

Lorsque les gens dans le domaine de la production musicale se réfèrent à un Vocoder, ils se réfèrent à un appareil extrayant l'enveloppe spectrale d'un signal (généralement la voix, appelé le modulateur) et filtrant un autre signal (généralement une texture de synthé riche, appelée la porteuse) avec un filtre dont la réponse est l'enveloppe spectrale extraite. Pour un exemple de son résultant, écoutez 0:23 dans Kraftwerk Trans Europe Express ou Project The Raven d' Alan Parsons dans les premières secondes. L'effet résultant est un timbre de type vocal appliqué à la mélodie ou aux accords joués par le signal porteur, donnant l'impression qu'une voix est parlée via un synthétiseur.

Le vocodeur étant à l'origine un appareil analogique, il a été mis en œuvre avec deux banques d'une douzaine de filtres passe-bande ou plus avec un Q. élevé. Le signal du modulateur est envoyé via la première banque de filtres et l'amplitude de tous les signaux de sous-bande est suivie avec un tableau de suiveurs d'enveloppe. En parallèle, le signal porteur est envoyé via un autre banc de filtres. Chaque sous-bande est amplifiée (avec un VCA) avec les gains donnés par les suiveurs d'enveloppe. Si vous lisez l'analogique, vous pouvez voir les schémas d'un canal de vocodeur ici , du Vocoder vivant de Jurgen Haible- en haut le filtre de signal du modulateur, en bas le filtre porteur et le VCA. Les implémentations logicielles des vocoders restent proches de cela, simplement parce que les producteurs de musique s'attendent à ce que les vocoders sonnent comme les appareils analogiques classiques! Mais si vous ne voulez pas la fidélité aux appareils "vintage", et que vous voulez quelque chose de moins cher que 40 biquads, une autre façon d'obtenir le même résultat est d'estimer un filtre omnipolaire (de l'ordre de 8 à 20 selon la proximité souhaitée) pour accéder à la voix d'origine) à partir du signal du modulateur (modélisation AR); puis appliquez ce filtre au support. Le problème typique ici est que vous devrez mettre à jour vos coefficients de filtre toutes les 20 ms environ; vous avez donc besoin d'une représentation du filtre omnipolaire qui gère les mises à jour de coefficient bien brusques.

3. Réglage automatique et remappage de hauteur

Ce que fait Songify est le suivant: extraire la prosodie (contour de hauteur) de la voix enregistrée et la modifier de sorte que le contour de hauteur résultant corresponde à une mélodie cible. Ceci est un peu similaire à ce que fait l'auto-tune, à la différence près que l'auto-tune "arrondit" la hauteur vers le demi-ton musical le plus proche, tandis que Songify ne fait que pousser une valeur cible.

Les algorithmes à l'œuvre ici sont très différents de l'étirement temporel traditionnel avec décalage de hauteur, car le signal vocal est monophonique et correspond bien au modèle de filtre source. Des approches telles que Time-Domain Pitch-Synchronous-Overlap-Add (TD-PSOLA) sont beaucoup plus efficaces, à la fois sur le plan informatique et en termes de qualité, pour modifier de manière transparente la hauteur de la voix que les algorithmes génériques d'étirement temporel (généralement effectués avec des vocodeurs de phase) ). Ceux-ci sont utilisés par exemple dans la synthèse vocale pour modifier la prosodie d'une phrase synthétisée - un peu comme Songify en effet! L'auto-réglage est également basé sur de telles méthodes de domaine temporel (détection de cycles complets de la forme d'onde d'entrée et rééchantillonnage).

Illustration PSOLA



2

Voici un lien vers le pseudo-code de Mathworks.

Voici un lien une description de l'algorithme à DSP Dimensions.

Un bac FFT a une fréquence centrale. Toute sinusoïde à cette fréquence de bin exacte aura la même phase par rapport à 2 points de référence décalés exactement de 1 trame FFT, ou aura une phase delta qui peut être calculée pour 2 points de référence ou 2 trames FFT à une distance arbitraire (peut-être se chevaucher) . L'idée de base d'un vocodeur de phase est d'ajuster légèrement chaque fréquence de bac FFT à une fréquence proche afin qu'une sinusoïde à cette fréquence corresponde à la phase détectée aux points de référence de 2 trames FFT décalées, si les fréquences centrales de bac FFT ne le font pas.

Ces fréquences ajustées peuvent ensuite être utilisées pour une resynthèse granulaire d'une forme d'onde qui présente plus de continuité à travers des trames resynthétisées, même si la séquence originale de spectres est mise à l'échelle dans les domaines de fréquence ou de temps. Ces fréquences de décalage peuvent également être utilisées pour l'estimation de fréquence, ou dans le cadre d'une méthode d'estimation de pas. Avec l'estimation de la hauteur et la resynthèse du son, on peut être en mesure de prendre un son à une hauteur et de pousser une resynthèse vers quelque chose qui sonne presque de la même manière, sauf à une autre hauteur.


2

L'article suivant décrit un vocodeur de phase basé sur une transformée de Fourier à court terme (STFT), ainsi qu'une technique d'ajout de chevauchement synchrone (PSOLA) pour s'attaquer aux modifications de temps et de hauteur des signaux audio:

Moulines, E. & Laroche, J.
" Techniques non paramétriques pour la modification de l'échelle de la hauteur de ton et de l'échelle de temps ",
Speech Communication, 1995.
(certaines versions PDF disponibles dans les liens de google scholar )

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.