Formantsynthese?



  • Ich brauch Informationen zur Formantsynthese (Thema Spachsynthese).

    Folgende hab ich bis jetzt schon gefunden :

    Ein Geräusch kann in mehrere Frequenzbänder zerlegt werden - diese nennt man Formanten.
    In Abhängigkeit von formant und Zeit kann man nun mit mehr oder weniger hoher genauigkeit Phoneme simulieren.

    Aber wie das geht, weiß ich nicht.

    Ich habe bei google ein Assemblerprogramm für den Atari ST gefunden, weiß aber nichts über diesen ASM-Dialekt (momentan befasse ich mich mit ner Siemens S170 - und da kann ich nicht noch nen Dialekt gebrauchen...)

    Kann mir das einer in einem Deutsch erklären, dass mich nicht mehr als nötig belastet? Ich hab momentan genug anderen Stress 🙄



  • Ich hab mal mit was ähnlichem experimentiert: Format-filter. Allerdings recht primitiv: Einfach drei sehr enge Bandpassfilter (Bei mir kam es nicht auf qualität an, sondern man musste es nur erkennen können). Wenn du da einen Sägezahn durchschickst krigst du teilweise Klänge, die sehr nah an Vokale rankommen. Tabellen für die Frequenzen findet man überall im Internet.

    Wenn das so weiter geht brauchen wir hier bald ein DSP-Forum. Problem ist nur, dass hier niemand ist, der wirklich Ahnung hat.



  • hassu da noch nen quellcode, der mir das Ganze erklärt? (nur die Genersierung in Abhängigkeit zu diesen filterdaten interessiert mich)



  • hassu da noch nen quellcode, der mir das Ganze erklärt?

    Ich hab zu Hause Quellcode. Ob der dir das erklärt weiß ich nicht.
    Sieht dann so aus:

    float foo = oscilator.update ();
    
    float foo1 = format1.filter (foo);
    float foo2 = format2.filter (foo);
    float foo3 = format3.filter (foo);
    
    float result = foo1 * format1_amplitude + foo2 * format2_amplitude + foo3 * format3_amplitude;
    

    (nur die Genersierung in Abhängigkeit zu diesen filterdaten interessiert mich)

    Ist das ein Wort, das ich nicht kenne, oder meintest du Generierung? Ich geh mal von Generierung aus.

    Allerdings weiß ich trotzdem nicht, was du meinst? Wessen Generierung? Erklär das bitte nochmal etwas genauer.



  • Ich meinte Die Generierung des Endergebnisses anhand der Wellendaten.

    Also tue ich nichts weiter, als quasi die einzelnen Sinuswellen mit den Frequenzen zu generieren und übereinanderzulegen?

    ^ 
     |  oo                               o
     |
     |   
     | o                               o
     |      o                    
     | 
     |o                               o
     |   *  XX           *               *X
     | * X *  o X      *   *           X 
     |*X    *     X   *     *        X*
     |X     *      X  *     *       X *
      -------*-o----X*oooo---*-----X-*---> 
     |        * o   oX    oo  *   X o
     |        *  ooo* X     o *  X  *
     |         *   *    X    o *   * 
     |           *         XX o  * 
     |                              
     | 
     |                            o
     |                          o
    
    X = Formant 1
    * = Formant 2
    o = Ergebnis
    

    oder hab ich das jetzt falsch verstanden?



  • Also tue ich nichts weiter, als quasi die einzelnen Sinuswellen mit den Frequenzen zu generieren und übereinanderzulegen?

    Das nennt sich dann additive Synthese. Ja das geht. Mein Ansatz war eben subtraktiv und reichte für meine Zwecke vollkommen.



  • axooo

    Du hast die Grundschwingung (bei dir wars nen Sägezahn, sagtest du) generiert und dann per Bandpaßfilter je nach angegebener Formantfrequenz den aktuellen Filterwert rausbekommen (die Filterfunktion muss ich mir mal anschauen) Dann werden diese Filterwerte mit ihren Amplituden multipliziert und das Ganze dann zusammengemischt.
    Okay, so langsam versteh ich den mist..


Anmelden zum Antworten