Jeden Abtastwert einer Audiodatei quadrieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mulham Maat
User
Beiträge: 9
Registriert: Donnerstag 21. April 2022, 18:59

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?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Mulham Maat
User
Beiträge: 9
Registriert: Donnerstag 21. April 2022, 18:59

__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.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

"numpy tutorial" suchen, erster Link: https://numpy.org/doc/stable/user/quickstart.html
Mulham Maat
User
Beiträge: 9
Registriert: Donnerstag 21. April 2022, 18:59

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.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Mulham Maat
User
Beiträge: 9
Registriert: Donnerstag 21. April 2022, 18:59

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()

?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

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?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten