Programmieren eines Vocoders


11

Ich möchte meinen eigenen Vocoder-Synthesizer wie "Songify" programmieren , finde aber keinen einfachen Vocoder-Algorithmus. Vielleicht können Sie erklären oder sagen, wo Sie nach Informationen zur Funktionsweise von Vocoder suchen müssen.


3
DAFX von Udo Zölzer et al. Hat einen einfachen Phasenvocoder mit etwas MATLAB-Code.
Phonon

1
Überprüfen Sie das Melodify SDK , es macht dasselbe und eine Demo-Testversion ist verfügbar.
Danijel

Antworten:


18

Ich befürchte, dass alle Antworten hier für die Frage irrelevant sind. Was in der Musikproduktionswelt als Vocoder bezeichnet wird, hat wenig mit dem in der Signalverarbeitung verwendeten Phasenvocoder zu tun . Um die Sache noch schlimmer zu machen, ist die Songify- App, auf die im ursprünglichen Beitrag verwiesen wird, kein Beispiel für Vocoder. Lassen Sie uns das klären!

1. Phasenvocoder

Der Phasenvocoder, auf den sich die anderen Antworten beziehen, ist eine Signalverarbeitungstechnik, die verwendet werden kann, um eine Zeit- / Tonhöhenmodifikation von Signalen (Zeitdehnung, Tonhöhenverschiebung) durchzuführen, indem eine Zeit-Frequenz-Darstellung des Signals berechnet wird (kurzfristige Fourier-Transformation) oder STFT) und dann Einfügen / Entfernen von Signalrahmen und anschließende Aufrechterhaltung der Kohärenz der Phaseninformationen. Die Beziehung zur Stimme ist nur historisch und wird derzeit für Tonhöhenverschiebung und Zeitdehnung in Audio-Hardware / -Software der unteren Preisklasse verwendet. RubberBand ist ein Beispiel für eine Open-Source-Bibliothek zur Änderung von Zeit und Tonhöhe in C ++, die auf einem Phasenvocoder basiert.

2. Vocoder

Wenn sich Leute auf dem Gebiet der Musikproduktion auf einen Vocoder beziehen, beziehen sie sich auf ein Gerät, das die spektrale Hüllkurve eines Signals (normalerweise Sprache, Modulator genannt) extrahiert und ein anderes Signal filtert (normalerweise eine reichhaltige Synth-Textur, Träger genannt). mit einem Filter, dessen Antwort die extrahierte Spektralhüllkurve ist. Als Beispiel für den resultierenden Sound hören Sie in den ersten Sekunden 0:23 in Kraftwerk Trans Europe Express oder Alan Parsons 'Project The Raven . Der resultierende Effekt ist ein vokalartiges Timbre, das auf die vom Trägersignal gespielte Melodie oder Akkorde angewendet wird und das Gefühl vermittelt, dass eine Stimme über einen Synthesizer gesprochen wird.

Da der Vocoder ursprünglich ein analoges Gerät war, wurde er mit zwei Bänken von einem Dutzend oder mehr Bandpassfiltern mit hohem Q implementiert. Das Modulatorsignal wird durch die erste Filterbank gesendet, und die Amplitude aller Teilbandsignale wird mit einem verfolgt Reihe von Umschlagfolgern. Parallel dazu wird das Trägersignal über eine andere Filterbank gesendet. Jedes Unterband wird (mit einem VCA) mit den von den Hüllkurvenfolgern gegebenen Verstärkungen verstärkt. Wenn Sie analog lesen, können Sie sich hier die Schaltpläne eines Vocoder-Kanals von Jürgen Haibles lebendem Vocoder ansehen- oben das Modulatorsignalfilter, unten das Trägerfilter und der VCA. Software-Implementierungen von Vocodern bleiben in der Nähe, einfach weil Musikproduzenten erwarten, dass Vocoder wie die klassischen analogen Geräte klingen! Wenn Sie jedoch keine Treue zu den "Vintage" -Geräten wünschen und etwas billigeres als 40 Biquads wünschen, können Sie das gleiche Ergebnis erzielen, indem Sie einen Allpolfilter (in der Größenordnung von 8 bis 20, je nachdem, wie nahe Sie möchten) schätzen um zur Originalstimme zu gelangen) vom Modulatorsignal (AR-Modellierung); und wenden Sie diesen Filter dann auf den Träger an. Das typische Problem hierbei ist, dass Sie Ihre Filterkoeffizienten etwa alle 20 ms aktualisieren müssen. Sie benötigen also eine Darstellung des Allpolfilters, der gut abrupte Koeffizientenaktualisierungen verarbeitet.

3. Auto-Tuning und Pitch-Remapping

Songify bewirkt Folgendes: Extrahieren Sie die Prosodie (Tonhöhenkontur) der aufgenommenen Stimme und ändern Sie sie so, dass die resultierende Tonhöhenkontur mit einer Zielmelodie übereinstimmt. Dies ist ein bisschen ähnlich wie bei der automatischen Abstimmung, mit dem Unterschied, dass die automatische Abstimmung die Tonhöhe auf den nächsten musikalisch genauen Halbton "rundet", während Songify sie nur auf einen Zielwert drückt.

Die hier verwendeten Algorithmen unterscheiden sich stark von der herkömmlichen zeitdehnenden Tonhöhenverschiebung, da das Sprachsignal monophon ist und gut zum Quellfiltermodell passt. Ansätze wie TD-PSOLA (Time-Domain Pitch-Synchronous-Overlap-Add) sind sowohl rechnerisch als auch qualitativ viel effizienter, um die Tonhöhe transparent zu ändern, als generische Zeitdehnungsalgorithmen (normalerweise mit Phasenvocodern) ). Diese werden zum Beispiel in der Sprachsynthese verwendet, um die Prosodie eines synthetisierten Satzes zu ändern - ähnlich wie Songify! Die automatische Abstimmung basiert ebenfalls auf solchen Zeitbereichsmethoden (Erfassen vollständiger Zyklen der Eingangswellenform und erneutes Abtasten).

PSOLA Abbildung



2

Hier ist ein Link zum Pseudocode bei Mathworks.

Hier ist ein Link, eine Beschreibung des Algorithmus bei DSP Dimensions.

Ein FFT-Bin hat eine Mittenfrequenz. Jede Sinuskurve bei genau dieser Bin-Frequenz hat dieselbe Phase in Bezug auf 2 Referenzpunkte, die genau 1 FFT-Rahmen voneinander entfernt sind, oder eine Delta-Phase, die für 2 Referenzpunkte oder 2 FFT-Rahmen in einem beliebigen Abstand voneinander berechnet werden kann (möglicherweise überlappend). . Die Grundidee eines Phasenvocoders besteht darin, jede FFT-Bin-Frequenz leicht auf eine Frequenz in der Nähe einzustellen, so dass eine Sinuskurve bei dieser Frequenz mit der erfassten Phase an den Referenzpunkten von 2 versetzten FFT-Rahmen übereinstimmt, wenn die FFT-Bin-Mittenfrequenzen dies nicht tun.

Diese angepassten Frequenzen können dann für eine granulare Resynthese einer Wellenform verwendet werden, die über resynthetisierte Rahmen hinweg mehr Kontinuität aufweist, selbst wenn die ursprüngliche Sequenz von Spektren in den Frequenz- oder Zeitbereichen skaliert ist. Diese Versatzfrequenzen können auch zur Frequenzschätzung oder als Teil eines Tonhöhenschätzungsverfahrens verwendet werden. Mit der Tonhöhenschätzung plus Klangresynthese kann man möglicherweise einen Ton auf einer Tonhöhe aufnehmen und eine Resynthese auf etwas verschieben, das fast gleich klingt, außer auf einer anderen Tonhöhe.


2

Der folgende Artikel beschreibt einen auf einer Kurzzeit-Fourier-Transformation (STFT) basierenden Phasenvocoder sowie eine PSOLA-Technik (Pitch Synchronous Overlap-Add), um Zeit- und Tonhöhenänderungen von Audiosignalen in Angriff zu nehmen:

Moulines, E. & Laroche, J.
" Nichtparametrische Techniken zur Tonhöhen- und Zeitskalenmodifikation von Sprache ",
Speech Communication, 1995.
(einige PDF-Versionen in Links von Google Scholar verfügbar )

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.