Seite 1 von 1

Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 15:13
von Mulham Maat
Guten Tag,
Ich habe eine Audiodatei ausgelesen:
fs,data = wavfile.read("sample1.wav")
und will nun das Signal so modifizieren, dass jeder Abtastwert quadriert wird.
Kann mir bitte jemand erklären, wie das geht?

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 15:44
von __deets__
Das sind wirklich absolute numpy Grundlagen. Hast du schonmal ein Tutorial zu dem Thema durchgearbeitet? Denn dir hier Funktion fuer Funktion solche Grundlagen zu erklaeren, ist ein bisschen viel des guten. Gerne beantworten wir Fragen, wenn du dann da etwas nicht verstehst.

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 15:50
von Mulham Maat
__deets__ hat geschrieben: Sonntag 22. Mai 2022, 15:44 Das sind wirklich absolute numpy Grundlagen. Hast du schonmal ein Tutorial zu dem Thema durchgearbeitet? Denn dir hier Funktion fuer Funktion solche Grundlagen zu erklaeren, ist ein bisschen viel des guten. Gerne beantworten wir Fragen, wenn du dann da etwas nicht verstehst.
Kannst du mir wenigstens eine Quelle nennen?
Ich kann nämlich nichts finden.

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 16:00
von __deets__
"numpy tutorial" suchen, erster Link: https://numpy.org/doc/stable/user/quickstart.html

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 16:49
von Mulham Maat
Es klappt nicht.
fs,data = wavfile.read("sample1.wav")
fs_quad = np.arange(fs)**2
write("sample1_quad", fs_quad, "sample1.wav")

Fehlercode:
dkind = data.dtype.kind
AttributeError: 'str' object has no attribute 'dtype'

Was mache ich falsch?
Die Aufgabenstellung lautet:
Lesen Sie die Audiodatei „sample1.wav“ erneut ein. Modifizieren Sie anschließend
das Signal so, dass jeder Abtastwert quadriert wird.

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 16:56
von __deets__
Wenn du dir mal anschaust, was denn wavfile.read zurueck gibt, und die Variablen heissen "fs" und "data" - in welcher denkst du befinden sich deine SampleDATEN? Und was fs ist hast du an anderer Stelle ja schon mal diskutiert. Glaubst du also, dass dein fs_quad das richtige ist?

Und wenn du dir die write-Dokumentation angschaust: https://docs.scipy.org/doc/scipy/refere ... write.html

Passt, was du da uebergibst?

In Zukunft bitte immer den *gesamten* Quelltext, importe inklusive, und die gesamte Fehlermeldung posten. In den dafuer vorgesehen code-tags, das ist der </>-Knopf im vollstaendigen Editor.

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 17:01
von Mulham Maat
fs,data = wavfile.read("sample1.wav")
fs_quad = np.arange(data)**2
write("sample1_quad", fs_quad, "sample1.wav")

Fehlercode:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

?

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 17:16
von __deets__
Ich hab's schonmal gesagt, ich sage es nochmal: bitte den *vollstaendigen* Code liefern, in Code tags, und die vollstaendige Fehlermeldung.

Warum glaubst du brauchst du np.arange? Was macht die Funktion, und warum hat das etwas mit deinen Sampledaten zu tun?

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 17:17
von Sirius3
Es verwundert schon, dass Du in Deiner anderen Frage hier im Forum nicht diese Probleme hast.
Ein Problem hat __blackjack__ ja schon angesprochen, mit dem Variablennamen fs kann niemand was anfangen weshalb Du auch nicht merkst, dass Du damit Unsinn machst.

Und auch hier gilt es zu überlegen, was "Quadrieren" im Hinblick auf den Wertebereich der Samples bedeutet.

Re: Jeden Abtastwert einer Audiodatei quadrieren

Verfasst: Sonntag 22. Mai 2022, 20:17
von __blackjack__
Ergänzend zum letzten Satz von Sirius3: Man muss hier auch die verschiedenen Möglichkeiten berücksichtigen die bei den eingelesenen Daten auftreten können. Denn bei einem Wertebereich von -1 bis +1 ist das Problem ein anderes als bei Wertebereichen von 0 bis einem Maximalwert. Entweder man behandelt man die Fälle die auftreten können, oder man schränkt die möglichen Eingabedaten durch einen Test auf das ein was der Code korrekt verarbeiten kann.