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))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 ...
Mobile version