Перетворення Фур’є та кодування Хаффмана; Форум; Родзинка знань

Ця відповідь допомогла автору теми

Я прагну використовувати кодування Хаффмана, щоб зменшити вагу звукового файлу wav. На даний момент у мене є алгоритм, який виконує кодування Хаффмана по тексту. У ході своїх досліджень я зрозумів, що для використання Хаффмана на звуці потрібно було використовувати Швидке перетворення Фур'є (ШПФ), не знаючи про це багато, я знайшов код, який, здається, працює добре. Однак на виході він надсилає мені список частот, але надмірності немає, що є дуже проблематичним, оскільки це база Хаффмана. Я протестував кілька звукових зразків, які, проте, були досить повторюваними ... Ось код:

Ось посилання на звукозапис.

Я зміг порівняти часовий спектр на виході з тим, який мені надав програмне забезпечення Audacity, і він добре тримається, тому альго, здається, працює добре. Тому мені цікаво, чи я просто не зрозумів, як працює стиснення звуку за допомогою FFT + Хаффман ...

дякую тобі, щоб мене просвітити.

Ця відповідь допомогла автору теми

Наскільки мені відомо, ШПФ не повинен використовуватися для стиснення звуку, або принаймні не без більших або менших чутних втрат якості. Звідти ви повинні знати, чого хочете, алгоритм стиснення аудіо без втрат чи втрат.

Алгоритм Хаффмана, очевидно, не є оптимальним для стиснення звуку так добре, як для тексту, але нам все ж вдається побачити, як він працює (можливо, ви заощадите 10 або 20% місця, не набагато більше).

Мені важко зрозуміти логіку того, що перехід на частоту, а не на часові дані, поліпшить подальше стиснення Хаффмана. Ваш звук може здаватися повторюваним, якщо повторення не збігаються з розміром вікон, що використовуються в ШПФ, на мій погляд, навряд чи вдасться знайти повторювані дані, які допомогли б алгоритму Хаффмана.

Відредаговано QuentinC у вівторок, 10 травня 2016 р., О 22:33

Моя платформа з 23 класичними настільними іграми на 6 мовах та 13000 гравців: http://qcsalon.net/ | Дізнайтеся, як зробити веб-сайти доступними http://www.openweb.eu.org/

Ця відповідь допомогла автору теми

Можливо, я неправильно зрозумів, але мені здається, що стиснення звуку через Хаффмана проходить через ШПФ. Якщо це неправильно, про який метод ви думаєте, коли говорите про Хаффмана для стиснення звуку ?

Апріорне стиснення з втратами мене насправді не турбує, поки аудіозапис залишається належної якості. Насправді я хотів би побачити, як далеко ми можемо пройти, використовуючи різні стиснення, зберігаючи при цьому пристойну якість звуку. Я добре знаю, що інші методи можуть бути кращими або більш придатними, але я хотів би працювати в основному з Хаффманом та стисненням типу MP3, видаляючи нечутні частоти та іншими методами подібного роду.

Дякую за допомогу.

перетворення

Ця відповідь допомогла автору теми

Кодування MP3 використовує стиснення Хаффмана на зразках у частотній області (не в часовій області), але не точно з БПФ/DFT.

З тимчасового сигналу існує фільтрація на 32 піддіапазонах (багатофазний квадратурний фільтр, і на кожній з цих 32 піддіапазонів модифіковане дискретне косинусне перетворення (MDCT) - сестра DCT-IV, яка є дочкою DCT, яка є двоюрідний брат DFT - потім нелінійне квантування на основі психоакустичної моделі (зроблене на основі аналізу ШПФ сигналу) і, нарешті, кодування Хаффмана на цих зразках.

Зрозуміло, що стиснення (з втратами або без втрат) повинно виконуватися в частотній області, а не в часовій області, і це доведено у декількох стандартах стиснення звуку (а також стиснення зображення - так, на знімках є частоти! -).

Також розумійте, що аналіз сигналу за допомогою інструментів частотного аналізу (FFT, DFT, MDCT, ...) виконується в аудіо з розсувним вікном: https://en.wikipedia.org/wiki/Short-time_Fourier_transform#Sliding_DFT

Відредаговано lanfeust313 Середа, 11 травня 2016 р., О 16:48