Transformarea Fourier și codificarea Huffman

Acest răspuns l-a ajutat pe autorul subiectului

Îmi propun să folosesc codificarea Huffman pentru a reduce greutatea unui fișier audio wav. Am pentru moment un algoritm care realizează codificarea Huffman pe un text. Prin cercetările mele am înțeles că pentru a utiliza Huffman pe un sunet trebuia să folosiți transformata Fourier rapidă (FFT), neștiind prea multe despre asta, am găsit un cod care pare să funcționeze bine. Cu toate acestea la ieșire îmi trimite lista de frecvențe, dar nu există redundanță, ceea ce este foarte problematic, deoarece este baza Huffman. Am testat mai multe probe de sunet care au fost totuși destul de repetitive ... Iată codul:

Iată linkul pentru înregistrarea sunetului.

Am reușit să compar spectrul temporal la ieșire cu cel oferit de software-ul Audacity și se leagă bine, așa că ceva pare să funcționeze bine. Așa că mă întreb dacă nu am înțeles cum funcționează compresia sunetului prin FFT + Huffman ...

multumesc ca ma luminezi.

Acest răspuns l-a ajutat pe autorul subiectului

Din câte știu, FFT nu ar trebui să fie folosit pentru a comprima sunetul sau cel puțin nu fără pierderi de calitate mai mult sau mai puțin audibile. De acolo trebuie să știi ce vrei, algoritm de compresie audio fără pierderi sau cu pierderi.

Algoritmul lui Huffman nu este în mod clar optim pentru comprimarea sunetului cât de bine poate pentru text, dar reușim totuși să-l vedem funcționând (poate veți economisi 10 sau 20% spațiu, nu mult mai mult).

Mi-e greu să văd logica că trecerea la frecvență, mai degrabă decât la date temporale, ar îmbunătăți o compresie ulterioară Huffman. Sunetul dvs. poate părea repetitiv, cu excepția cazului în care repetările coincid cu dimensiunea ferestrelor utilizate în FFT, în opinia mea, este puțin probabil să găsiți date repetitive care ar ajuta algoritmul lui Huffman.

Editat de QuentinC marți, 10 mai 2016 la 22:33

Platforma mea cu 23 de jocuri de masă clasice în 6 limbi și 13000 de jucători: http://qcsalon.net/ | Aflați cum să faceți site-urile accesibile http://www.openweb.eu.org/

Acest răspuns l-a ajutat pe autorul subiectului

Poate că am înțeles greșit, dar mi se pare că compresia sunetului prin Huffman trece prin FFT. Dacă acest lucru este greșit, la ce metodă vă gândiți când vorbiți despre Huffman pentru a comprima sunetul ?

Compresia cu pierderi a priori nu mă deranjează cu adevărat atâta timp cât înregistrarea audio rămâne de o calitate acceptabilă. De fapt, aș vrea să văd cât de departe putem merge folosind diferite compresii, menținând în același timp o calitate a sunetului decentă. Sunt foarte conștient de faptul că alte metode pot fi mai bune sau mai potrivite, dar aș dori să lucrez în principal cu Huffman și o compresie de tip MP3 prin eliminarea frecvențelor inaudibile și a altor metode de acest fel.

multumesc pentru ajutor.

codificarea

Acest răspuns l-a ajutat pe autorul subiectului

Codificarea MP3 utilizează compresia Huffmann pe eșantioane din domeniul frecvenței (nu domeniul timpului), dar nu exact cu FFT/DFT.

Din semnalul temporal, există o filtrare pe 32 de sub-benzi (Polyphase Quadrature Filter, și pe fiecare dintre aceste 32 de sub-benzi, o transformată de cosinus discret modificată (MDCT) - care o soră a DCT-IV care este fiica DCT care este vărul DFT - apoi o cuantificare neliniară bazată pe un model psihoacustic (realizată pe o analiză a FFT-ului semnalului) și, în final, o codificare Huffmann pe aceste eșantioane.

Este clar că compresia (cu pierderi sau fără pierderi) trebuie făcută în domeniul frecvenței și nu în domeniul timpului și este dovedit în mai multe standarde de compresie audio (și, de asemenea, în compresia imaginii - da, există frecvențe în imagini! -).

Înțelegeți, de asemenea, că analiza semnalului cu instrumente de analiză a frecvenței (FFT, DFT, MDCT, ...) se face în format audio cu o fereastră glisantă: https://en.wikipedia.org/wiki/Short-time_Fourier_transform#Sliding_DFT

Editat de lanfeust313 miercuri, 11 mai 2016 la 16:48