Python/Numpy: Erzeugen Sie Sound aus einem inversen FFT eines synthetischen SpektrumsPython

Python-Programme
Anonymous
 Python/Numpy: Erzeugen Sie Sound aus einem inversen FFT eines synthetischen Spektrums

Post by Anonymous »

Ich bastele weiterhin an Code, den ich zum Analysieren/Kategorisieren von Ton in WAV-Dateien gefunden habe, unter anderem mit dem amplitudengewichteten Durchschnitt und dem Standard. Abweichung des RFFT-Spektrums (ich weiß, das Spektrum eines typischen Klangbeispiels sieht nicht so aus, als würde es durch eine Gaußsche Glocke sehr gut beschrieben werden ... aber das kann ich später jederzeit korrigieren).
Nur aus reiner Neugier und hauptsächlich zum „Spaß“ dachte ich, ich würde eine .wav-Datei mit einem generierten Ton aus einem synthetischen Spektrum mit diesem Durchschnitt und dieser Standardabweichung generieren.
Ein schneller Test bestätigte, dass ich eine erstellen kann .wav-Datei mit dem rekonstruierten Originalton, indem Sie die Ausgabe von numpy.irfft() in dem von numpy.rfft() zurückgegebenen Array speichern. So weit, so gut.
Und dann blieb ich stecken. Das scheinbar Offensichtliche ist, die Ausgabe zu speichern

Code: Select all

numpy.irfft(numpy.random.normal(wAv,wStd,N))
erzeugt eine Sounddatei, die trotz der Tatsache, dass ich die Ausgabe von IRFFT auf den gleichen Bereich wie die ursprünglichen Sounddaten neu skaliere, nicht verstärkt werden kann, und das Spektrum weist keinen Peak bei der erwarteten wAv-Frequenz auf (soweit man sich darauf verlassen kann).
Als ich dies schreibe, wird mir klar, dass ich ein Array von Werten erstellen sollte, die einer tatsächlichen Gaußschen Kurve folgen, anstatt zufällig zu sein. Das würde erklären, dass sich das resultierende Spektrum von dem unterscheidet, was ich erwartet habe, aber nicht das Leistungsproblem. Könnte das damit zu tun haben, dass ich eine Reihe rein reeller Zahlen in die IRFFT einspeise, statt der komplexen Zahlen, die sie möglicherweise benötigt?
Ich könnte den synthetischen Ton natürlich im Zeitbereich erzeugen, indem ich die erforderliche Reihe von Sinuswellen summiere ... aber das wäre etwas zu teuer ...

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post