Страница 1 от 1

въпрос за цифров филтър

Публикувано на: Сря Яну 23, 2013 11:32 am
от jenko
Здравейте!
Проектирам един цифров филтър, който прави 8X овърсемплинг на аудио сигнал. В алгоритъма не използвам традиционните методи за интерполация - филтрация на сигнала на половината от честотата на дискретизация, а метод, базиран на кубичната сплайн интерполация. Идеята беше да избегна фазовите изкривявания при филтрация. При визуализациите забелязах, че при високи честоти се получава модулация на сигнала. Визуализирал съм сигнала след интерполатора, като входната честота на дискретизация е 44.1 kHz, както и реакцията му на единичен входен импулс.
Една от визуализациите е на сигнал от насложени синосоиди с честота до 20kHz. В жълт цвят е сигналът, от който съм дискретизирал и съм го подал на входа на интерполатора, а в син цвят е представен сигнала от изхода му.

Как би се отразила на звука тази модулация при високите честоти и бихте ли коментирали получената преходна харектеристика.
Благодаря предварително!
Пламен
16kHz входен сигнал:
16kHz.jpg
18kHz:
18kHz.jpg
20kHz:
20kHz.jpg
impulse response:
impulse_response.jpg
signal.jpg

Re: въпрос за цифров филтър

Публикувано на: Сря Яну 23, 2013 2:03 pm
от Veselin Krachunov
За жалост, такова "биене" (амплитудна модулация) ще се получава винаги, когато честотата, която се опитваш да опишеш, не се явява точен, целочислен делител на дискретизиращата честота (44 100Hz). Няма да имаш биене само при честотите 22 050, 14 700, 11 025, 8 820, 7 350 и т.н. Hz.
Също така - колкото е по-висока честотата, която се опитваш да интерполираш, толкова по-силно (с по-голяма амплитуда) ще е биенето, приближавайки се до 100% при 18-20KHz. Това е обяснимо, понеже там имаш само 2-3 семпъла за период и изобщо не може да се каже от какво са произлезли те - от синусоида ли, от триъгълник ли, или от някакво друго животно...
Още - колкото повече се отдалечаваш от честота, която е целочислен делител на дискретизиращата, толкова по-голяма ще е и честотата на биенето. Примерно - при 22 000Hz ще имаш биене с честота 100Hz, при 21 000Hz - биене 2KHz, при 20 000Hz - биене 4KHz. Т.е. = разликата м/у "твоята" честота и най-близкия целочислен делител на семплиращата, взета по абсолютна стойност и умножена по 2.

Отговор на въпроса с най-добрата интерполация на подобни сигнали дава чичко Клод Шанън, който представя непрекъсната функция s(x), която се опитваме да интерполираме като безкрайна сума от полиноми, раздалечени един от друг на 1/fs (fs е семплиращата честота).
Нещо не мога да кача картинка с формулата, но тя е:
s(x) = сума по n (което се мени от минус-безкрайност до плюс безкрайност) от {sn * sin[pi * (fs*x - n)] / [pi * (fs*x - n)] }
sn са конкретните семпли, pi = 3,14159265358...
За съжаление тази сума е безкрайна и се отнася само за стационарен сигнал (който не се променя във времето), но ти можеш да направиш презастъпващи се "прозорци" с различни профили (Hann, Hamming, косинус, Lanczos, Gaussian, etc...) с дължина 512 или 256 семпъла както е при полифазните филтри на MP3 и Dolby Digital...

Занимавал съм се много с тези неща, ако питаш мен - загубена кауза/време... така или иначе не можеш да възстановиш информацията от там, където вече е орязана. Можеш да направиш други неща, но доколко те ще са успешни зависи от страшно много фактори и най-вече от слуха ти. Не случайно хората слушат NOS (Non-OverSampling, да не се бърка с New-Old Stock).
Има и ултимативни разработки в областта, разбира се, като например един от OS-чип филтрите на Sony (не мога да се сетя маркировката му в момента), който свири превъзходно! Добре би било да му направиш ривърс-енджиниъринг на него (ако имаш с какво да запишеш и анализираш изходящите данни) или направо да го използваш като чип.

Друго, което искам да ти споделя е, че при дигиталното аудио - справянето с проблема за намаляването на джитъра в максимална степен ще ти донесе много повече и по-осезаеми ползи, отколкото заигравката с OS и интерполации. Имай предвид, че дори 16-bit и 44,1KHz са много трудно реализируеми физически (в смисъл - необходими са клокове с точност до пико-секунди и източници на ток със стабилност/безшумност до нано-волти/ампери за да не се "изцапат" дори тези 16-бита и да станат ефективно 15,5 , 15, 14 или по-малко). При честоти от порядъка на 96KHz направо ми се струва невъзможно джитърът да бъде сведен до стойности под времето на един семпъл, което ги прави практически безсмислени. Истинските предимства на тези формати е, че носят нативно в себе си информацията, която горе се опитваш да интерполираш (т.е. "отгатнеш"), а не в това че са физически постижими с що-годе достъпни средства.

Re: въпрос за цифров филтър

Публикувано на: Сря Яну 23, 2013 2:21 pm
от jenko
В някои модели плеъри, примерно Marantz SA-11S1, е предвидена възможността потребителя да избира вида (характеристиката) на цифровия филтър. http://www.shine7.com/audio/Marantz_SA11S1.htm В случая Marantz са използвали три типа филтри. Единия има стръмна АЧХ, но за сметка на това преходната му характеристика затихва бавно във времето. В резултат на това се вижда, че филтърът успешно възстановява синусоидата от 20kHz, без да се забелязва модулация. Другият филтър е с доста полегата хатактеристика, неговата предавателна характеристика затихва много по бързо, но модулацията на сигнала е очевидна(предполагам заради малкия наклон на АЧХ). Този тип филтър малко прилича на моя. Третият филтър е нещо средно между двата.
Та въпроса ми е как преходната характеристика оказва влияние върху звука? Нали все пак сигнала, постъпващ в цифровия филтър е ограничен до честотата на Найкуист, тогава защо се предпочита преходна характеристика, която затихва бързо?

Re: въпрос за цифров филтър

Публикувано на: Сря Яну 23, 2013 2:30 pm
от velinski
Последните плейъри на Sony са с VC24 24-битов variable filter с 5 позиции
Общо взето само стандартният плосък филтър със стръмен срез на 20kHz става за слушане, останалите 4 са пълна мазня в целия диапазон (загуба на резолюция), а би трябвало да е обратното... Ф#2 "Clear" би трябвало да симулира non-oversampling, ама на практика е далече. Добра идея на Sony с лоша реализация.

Изображение

Щом ти се занимава да проектираш ЦФ, пробвай се с 2х и 4х OS, там е по-интересният звук :wink:

Re: въпрос за цифров филтър

Публикувано на: Сря Яну 23, 2013 2:57 pm
от Veselin Krachunov
Всички тези филтри са бастун с две макари отдолу... Всеки филтър действа върху поредица от семпли, като допуска, че за времето на тази поредица аудио-сигналът ще остане неизменен в честотен смисъл. Което няма как да стане... И колкото по-точно се опитваме да възстановим синусоидите, толкова по-дълъг е интервалът от време, в който допускаме това грубо приближение. За много дълги интервали от време, това се чува като пре-/пост-ехо, а за по-късите - като мазня.

И тук опираме до философския въпрос - ние в крайна сметка синусоиди ли слушаме? Неизменни във времето синусоиди? Ами ако някой горящ клон от огнището изтрещи пръскайки се, за да освободи вътрешните си напрежения, това може ли да се опише със синусоиди? Или по-скоро с някаква делта-функция (off-on-off), която ние се опитваме по един неестествен начин да оприличим на синусоиди, прекарвайки я през мазните си филтри?

Залагайте на NOS, господа - единствено там ситуацията с гореописания клон може да се възпроизведе що-годе адекватно. Истинският, максимално близък до идеален DF трябва да е твърде интелигентен - едва ли не да разпознава всеки звук и инструмент, да го сравнява с някой подобен от огромна база данни, да вижда какво не му е наред, да го подобрява по подходящ начин, след което да го миксира в цялостната звукова картина. Това е задача от калибъра на изкуствения интелект. И пак няма да има гаранция, че не е объркал нещо в разпознаването и не го е интерпретирал по нямащ нищо общо с реалността начин. С прости универсални формулки от по няколко параметъра/коефициента няма как да стане.

Re: въпрос за цифров филтър

Публикувано на: Сря Яну 23, 2013 3:40 pm
от velinski
Много дълго (~2 години) и обстойно си играх да слушам NOS <> 8xOS с моя Propaganda DAC и стигнах до някои изводи лично за мен като меломан. Поне докато съм във възраст, в която чувам безпроблемно честоти до 20-22kHz (със съответното чуваемо ниво, разбира се), NOS-ът ми яде ценна чуваема ВЧ информация. Изчезват ми обемите на залите, въздухът, фините реверберации, триизмерността на записите. NOS режимът звучи естествено, свежо (за глас), НО плоско, двуизмерно и "тежко" (с изместен баланс към ниската среда) - и от там изморяващо в дългосрочен слушателски аспект. А аз слушам много... някои път по 5-6-7 диска един след друг. Като NOS не мога да слушам повече от 2, изморявам се, изнервям се. Трудно преживявам липсата на обем и триизмерност - това всъщност е най-готината тръпка при слушането на слушалки. Някой ден като оглушея и престана да регистрирам над 12kHz, ще мина на NOS :D

До тогава ще си слушам добрия стар SM5813, който ми дава най-аналогов характер от всички популярни ЦФ наоколо. Само SM5804 е по-добър ПМСМ, ама е pain in the ass да го подкара човек (като начало да го разпои от платка, че нови нЕма, дето вика г-н Сакс-Кобург-Готски) :D

Last but not least - NOS не мога да ползвам 18 и 20-битови ЦАП-ове пълноценно. А 18 бита дават почти пълни 16 монотонност, 16 бита - със зор 14. Та като NOS слушате 14 битови сигнали на практика с орязани високи... Мммммерси :)