Seite 1 von 1

Wave Datei auslesen und anzeigen

Verfasst: Samstag 16. Juli 2011, 17:54
von anogayales
Hallo,

eigentlich eine ganz simple Aufgabe. Wave Datei einlesen und anzeigen. Leider kommt bei mir sowas raus:
Bild
Das fällt höchstwahrscheinlich nicht unter Quantisierungsrauschen :)
Das Sinuswelle ganz unten ist das was rauskommen sollte, wurde von mir vorher berechnet.

Hier die ursprüngliche Datei https://rapidshare.com/files/893409802/output.wav . Diese hat, wenn man sie in einem richitgen Editor betrachtet, nicht die dargestellten Probleme.
Das ganze ist mit 16 Bit pro Sample gespeichert, ich les aber nur 8 Bit aus. Wenn ich das ganze jetzt mit 16 Bit auslese bekomm ich folgenden Fehler, weil readframe mit nur ein 8 Bit wert zurück gibt, muss ich zwei aufeinanderfolgende Frames kombinieren? Wenn ja, wie?

Code: Alles auswählen

struct.error: unpack requires a string argument of length 2

Code: Alles auswählen

ref = wave.open("output.wav"). 

print ref.getparams() 

amount = 900
r = []
for frame in ref.readframes(amount):
    print repr(frame)
    r.append(struct.unpack("b", frame)[0])
Grüße,
anogayales

Re: Wave Datei auslesen und anzeigen

Verfasst: Samstag 16. Juli 2011, 18:36
von gkuhl
Bei mir klappt folgendes:

Code: Alles auswählen

n = 900
frames = wave.open('output.wav').readframes(n)
data = struct.unpack('<{0}h'.format(n), frames)
plt.plot(data)
Grüße
Gerrit

Re: Wave Datei auslesen und anzeigen

Verfasst: Samstag 16. Juli 2011, 18:40
von anogayales
Vielen Dank! Klappt! Werde mir später mal angucken, warum das klappt :)

Re: Wave Datei auslesen und anzeigen

Verfasst: Montag 18. Juli 2011, 18:16
von anogayales
Mach ich irgendwas falsch oder warum hat eine diese Sinuskurve (in der output.wav Datei) eine Amplitude die von [-13930,11694] geht. Sollte die nicht symmetrich sein? Es sieht fast danach aus, als hätte die Aufnahme Anlaufschwierigkeiten. Am Anfang geht sie langsam hoch, gegen Ende krieg ich sie ins Intervall [-12779,12747], also immernoch leicht nach Unten orientiert. Hat da jemand ne Ahnung :) ?

Könnte natürlich an meiner Soundkarte liegen. Ich werds mal mit meinem Zweitrechner probieren.

Grüße,
anogayales