Forum: Digitale Signalverarbeitung / DSP / Machine Learning genauer Envelopefollower & spektrale Hüllkurve extrahieren?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von nooob (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

 ich möchte aus einem Audiostream
oder einer Aufnahme
den Lautstärken-Verlauf
und den spektralen Verlauf extrahieren.

Das Ganze soll genau sein:
also zeitlich genau, Laustärke und Spektrum auch zu jeder Zeit genau.

Habt Ihr Tips für mich, wie ich da ran gehen könnte?


in der angehängten Skizze ist eine grobe Idee, wie ich den 
Lautstärkenverlauf analysieren bzw. extrahieren könnte!???
Beim spektralen Verlauf habe ich keinen blassen Schimmer.

von Achim M. (minifloat)


Lesenswert?

nooob schrieb:
> Das Ganze soll genau sein: also zeitlich genau, Laustärke und Spektrum
> auch zu jeder Zeit genau

Genau. Wie genau denn bitte?

nooob schrieb:
> Beim spektralen Verlauf habe ich keinen blassen Schimmer.

Lade dir audacity runter und schalte von Waveform- auf 
Wasserfall-Ansicht um.

nooob schrieb:
> in der angehängten Skizze ist eine grobe Idee, wie ich den
> Lautstärkenverlauf analysieren bzw. extrahieren könnte

Was dir klar sein sollte - die ursprüngliche Envelope des generierenden 
Systems bekommst du so nie heraus.

Ersatzweise zum Spitzenwertgleichrichter kann auch die Summe über die 
Spektralanteile des Wasserfalldiagramms zu einem bestimmten Zeitpunkt 
herhalten.

mfg mf

: Bearbeitet durch User
von nooob (Gast)


Lesenswert?

Achim M. schrieb:
> Genau. Wie genau denn bitte?

Samplegenau bitte danke :)


> audacity Wasserfall-Ansicht

Mit dem Spektrum möchte ich mehr machen als bloß plotten, brauche also 
die Daten.

Wasserfall-Ansicht ist ja eine FFT!?
Bei meinem Halbwissen ist das Problem bei FFT, dass sie zum einen 
zeitlich ungenau ist (Window-Size verschmiert) und zum anderen die 
Frequenzbänder ungenau sind!???
Wie kann ich das exakter machen?

(Meine vage Idee:
Signal um 0 und 1 und 2 und 3 und ... und 63 Samples verzögern.
Diese 64 Delaylines in 64 FFTs mit einer Windowsize von jeweils 64 
Samples routen.
Die 64 Ergebnisse irgendwie so kombinieren, dass ich samplegenau ein 
genaues Spektrum erhalte!?)


>> in der angehängten Skizze ist eine grobe Idee, wie ich den
>> Lautstärkenverlauf analysieren bzw. extrahieren könnte

> Was dir klar sein sollte - die ursprüngliche Envelope des generierenden
> Systems bekommst du so nie heraus.

Warum nicht?

> die Summe über die
> Spektralanteile des Wasserfalldiagramms zu einem bestimmten Zeitpunkt

verstehe. nur damit bin ich wieder am Anfang. Wie das Spektrum 
analysieren?

Prinzipiell habe ich unendlich lange Rechenzeit zur Verfügung, muss 
nicht in Echtzeit sein.


Freue mich über weitere Tips ""

von oerks (Gast)


Lesenswert?

D. Sundararajan
Digital Signal Processing
An Introduction
Springer 2021
ISBN 978-3-030-62367-8


Edited by Richard G. Lyons
Streamlining Digital Signal Processing
A Tricks of the Trade Guidebook
IEEE Press 2012

von DSP_Anfänger (Gast)


Lesenswert?

So ganz hab ich die Hilbert-Transformation noch nicht verstanden, aber 
wenn ich mir den Abschnitt "Anwendungsbeispiel" anschaue ist das doch 
genau das, was Du suchst, oder?: 
https://de.wikipedia.org/wiki/Hilbert-Transformation

von Burkhard K. (buks)


Lesenswert?

nooob schrieb:
> verstehe. nur damit bin ich wieder am Anfang. Wie das Spektrum
> analysieren?

nooob schrieb:
> Bei meinem Halbwissen ist das Problem bei FFT, dass sie zum einen
> zeitlich ungenau ist (Window-Size verschmiert) und zum anderen die
> Frequenzbänder ungenau sind!???
> Wie kann ich das exakter machen?

Einlesen :-) Spektrale-Hüllkurven werden in div. Audio-Codern 
eingesetzt. Um  mit dem angesprochenem Problem der 
Zeit-Frequenz-Unbestimmtheit (Heisenberg-Unschärfe) umzugehen, gibt es 
eine Reihe von Möglichkeiten/Stichworten:
  * STFT (Short Time Fourier Transform)
  * SDFT (Sliding Window DFT)
  * MDCT (eine "lapped" Transform / modifizierte DCT-IV type)
  * Wavelet Filterbank mit QMF (Quadratur Mirror Filter)
  * Window Switching - also variable Fenstergröße abhängig vom zu 
analysierenden Audiomaterial (Kastagnetten z.B. erfordern eine kleinere 
Windowsize als ein länger gehaltener Akkord)

... und noch viel mehr. Was für Dich am besten passt, hängt vom 
jeweiligen Material, der geplanten Anwendung und dem zu spendierendem 
Aufwand ab. Octave/Matlab (zzgl. LTFAT) haben Algorithmen für viele der 
oben genannten Verfahren.

Oder Du schaust Dir die Sourcen eines bestehen Audio-Coder Projekts wie 
z.B. 
https://github.com/Opendigitalradio/ODR-AudioEnc/tree/master/fdk-aac an. 
Ich kenne dieses Projekt nicht näher, aber sehe, dass eine libSBRenc 
dazugehört (SBR steht für "Spectral Band Replication").

: Bearbeitet durch User
von Jonas B. (jibi)


Lesenswert?

>Wie kann ich das exakter machen?

Mehr Taps.

von A. S. (rava)


Lesenswert?

DSP_Anfänger schrieb:
> So ganz hab ich die Hilbert-Transformation noch nicht verstanden, aber
> wenn ich mir den Abschnitt "Anwendungsbeispiel" anschaue ist das doch
> genau das, was Du suchst, oder?:
> https://de.wikipedia.org/wiki/Hilbert-Transformation

Ich kann dem Anwendungsbeispiel nicht ganz folgen. Im einfachsten Fall 
hat man eine Sinusschwingung, also einen konstanten Ton.

Die Hilbert Transformierte hiervon ist ebenfalls eine Schwingung. Mir 
leuchtet nicht ein, warum da eine Hüllkurve (also eine Konstante) 
herauskommen sollte.

Ich denke, das "Anwendungsbeispiel" kann weg.

von Lua (Gast)


Lesenswert?

A. S. schrieb:
> DSP_Anfänger schrieb:
>
>> So ganz hab ich die Hilbert-Transformation noch nicht verstanden, aber
>> wenn ich mir den Abschnitt "Anwendungsbeispiel" anschaue ist das doch
>> genau das, was Du suchst, oder?:
>> https://de.wikipedia.org/wiki/Hilbert-Transformation
>
> Ich kann dem Anwendungsbeispiel nicht ganz folgen. Im einfachsten Fall
> hat man eine Sinusschwingung, also einen konstanten Ton.
> Die Hilbert Transformierte hiervon ist ebenfalls eine Schwingung. Mir
> leuchtet nicht ein, warum da eine Hüllkurve (also eine Konstante)
> herauskommen sollte.
> Ich denke, das "Anwendungsbeispiel" kann weg.

Das Beispiel passt an sich. Die Beschriftung passt nur nicht. Die rote 
Kurve ist nicht die Hilberttransformierte, sondern der Betrag des 
analytischen Signals, welches mit Hilfe der Hilberttransformation 
gebildet wird.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.