Audio komprimieren

  • C#
  • .NET (FX) 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Audio komprimieren

    Ich möchte die die rohen Audiodaten etwas komprimieren. Ich habe mir überlegt ich könnte jedes 5. Sample entfernen und zwischen den 4 und 6 smoothen, damit würde ich 20% der Datenmenge verkleinern. Jedoch weiß ich nicht ob das der richtige Ansatz ist, oder ob man da hörbares Rauschen u.a hat. Wie würdet ihr so etwas angehen? Ich habe nur das .NET Framework zur Verfügung.
    Hi
    bspw. könntest du die Diskrete Fouriertransformation (DFT bzw. Fast fourier transformation -->FFT) verwenden, um die Audiodaten in ein Spektrum zu zerlegen. Danach kannst du Elemente des Spektrums herausnehmen oder das Spektrum komprimieren und speichern. Sollte doch eigentlich auch gehen. Über die inverse Transformation kannst du wieder Audiodaten daraus generieren.

    Viele Grüße
    ~blaze~
    Das geht vom Prinzip her schon nicht.
    Nehmen wir ein dummes Beispiel:

    Quellcode

    1. Samples:
    2. -1,0,1,0,-1,0,1,0,-1

    Nimmst du nun das fünfte Sample weg, und interpolierst zwischen den angrenzenden, bekommst du:

    Quellcode

    1. -1,0,1,0,0,0,1,0,-1

    Du bekommst damit ein deutliches Problem in allen Frequenzbereichen.
    Wie ich daran gehen würde: Wie es der MP3-Algorithmus macht. Höhen raus, die der Mensch nicht wahrnimmt; Tiefen raus, die der Mensch nicht mehr wahrnimmt; Alle Frequenzen nach einem hohen Ton, die nicht mehr gehört würden, weil das menschliche Gehör mit maximal 20 Samples pro Sekunde auflöst, entfernen/verringern.
    Du kannst auch aus einem Stereo-Signal (2*Samplerate) ein Mono-Signal (1*Samplerate Halbierung) mit Balance-Informationen (dynamisch, jenach Bedarf) machen.

    ThuCommix schrieb:

    etwas komprimieren
    Wave zu mp3?
    Was willst Du mit den so komprimierten Daten machen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!