Wie manipuliert man wav Dateidaten in Python?

8

Ich versuche, eine WAV-Datei zu lesen, und manipuliere dann deren Inhalt, Beispiel für Beispiel

Folgendes habe ich bisher:

%Vor%

Das Ergebnis ist:

%Vor%

usw.

Es liest richtig, denn wenn ich print data[i] schreibe, bekomme ich normalerweise Arrays ungleich Null von der Größe 2.

    
JVE999 05.09.2013, 19:13
quelle

1 Antwort

11

Das von data zurückgegebene Array wavfile.read ist ein numpy Array mit einem ganzen -Datentyp. Der Datentyp eines numpy Arrays kann nicht vor Ort geändert werden, daher diese Zeile:

%Vor%

wandelt das Ergebnis von math.sin in eine ganze Zahl um, die immer 0 ist.

Erstellen Sie anstelle dieser Zeile ein neues Fließkomma-Array, um Ihr berechnetes Ergebnis zu speichern.

Oder verwenden Sie numpy.sin , um den Sinus aller Elemente im Array auf einmal zu berechnen:

%Vor%

Aus Ihren zusätzlichen Kommentaren scheint hervorzugehen, dass Sie den Sinus jedes Werts verwenden und das Ergebnis als neue WAV-Datei ausgeben möchten.

Hier ist ein Beispiel, das (denke ich) macht, was Sie wollen. Ich verwende die Datei 'M1F1-int16-AFsp.wav' von hier: Ссылка . Die Funktion show_info ist nur eine bequeme Möglichkeit, die Ergebnisse jedes Schrittes zu veranschaulichen. Wenn Sie eine interaktive Shell verwenden, können Sie damit die Variablen und ihre Attribute überprüfen.

%Vor%

Hier ist die Ausgabe. (Die erste Warnung bedeutet, dass sich in der Datei möglicherweise Metadaten befinden, die von scipy.io.wavfile.read nicht verstanden werden.)

%Vor%

Die neue Datei 'newname.wav' enthält zwei Kanäle mit vorzeichenbehafteten 16-Bit-Werten.

    
Warren Weckesser 05.09.2013 19:31
quelle

Tags und Links