Seite 1 von 1

Invalid shape for monophonic audio

Verfasst: Sonntag 28. November 2021, 10:16
von Bio Salami
Hi,
der Code hier nimmt sound auf, speichert die Audio Datei, lädt sie erneut und lässt eine KI etwas bestimmen.

Code: Alles auswählen

myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=1)
sd.wait()
write(filename, fs, myrecording)
audio, sample_rate = librosa.load(filename)
mfcc = librosa.feature.mfcc(y=audio, sr=sample_rate, n_mfcc=40)
mfcc_processed = np.mean(mfcc.T, axis=0)
prediction = model.predict(np.expand_dims(mfcc_processed, axis=0))
Es ist meiner meinung nach ein Umweg den aufgenommenen Ton erst zu speichern und dann erneut zu laden. Also müsste es doch so aussehen wenn man den Code fürs speichern entfernt. Oder?

Code: Alles auswählen

myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=1)
sd.wait()
#write(filename, fs, myrecording)
#audio, sample_rate = librosa.load(filename)
mfcc = librosa.feature.mfcc(y=myrecording, sr=fs, n_mfcc=40)
mfcc_processed = np.mean(mfcc.T, axis=0)
prediction = model.predict(np.expand_dims(mfcc_processed, axis=0))
Leider beendet sich das Skript mit folgendem Error:

Code: Alles auswählen

Invalid shape for monophonic audio: ndim=2, shape=(88200, 1)
Also stimmt die Samplerate nicht. Ich habe ein bisschen herumprobiert und immer kam der oder ein Ähnlicher Error Code raus. Auch das Googlen nach dieser Error Message hat mich nicht weitergebracht, da keiner die sounddevice Bibliothek benutzt.

Re: Invalid shape for monophonic audio

Verfasst: Sonntag 28. November 2021, 11:23
von noisefloor
Hallo,

das ist ein bisschen schlecht zu beurteilen, ohne den umliegenden Code und die verwendeten Bibliotheken zu kennen bzw. du lieferst ja auch eher eine dünne Datenlage.

Ich vermute mal, dass der Fehler daran liegt, dass `myrecording` halt der Rückgabewert von `sd.rec` ist, während `audio` und `sample_rate` der Rückgabewert von `librosa.load` sind. `librosa.feature` kann mit `sd.rec` aber nichts anfangen, weil das Objekt nicht die Eigenschaften hat, die erwartet werden. Das ist ja wahrscheinlich nicht nur der reine Inhalt, der da rumgereicht wird.

Wenn du dir IO auf einen physischen Datenträger sparen willst, dann nimm' ein "file-type object", welches aber nur im RAM lebt. Z.B. `BytesIO` aus dem io Modul. Das sollte normalerweise gehen.

Gruß, noisefloor

Re: Invalid shape for monophonic audio

Verfasst: Sonntag 28. November 2021, 11:32
von Bio Salami
Thx,
lese mich gleich in die io Bibliothek ein.

Re: Invalid shape for monophonic audio

Verfasst: Sonntag 28. November 2021, 12:38
von Bio Salami
@noisefloor, danke für die Hilfe. Hat alles funktioniert