Twierdzenie Shannona w praktyce

Wszelkie inne pytania związane z tematyką poruszaną w naszym magazynie
senjin
Posty:405
Rejestracja:poniedziałek 26 wrz 2005, 00:00
Kontakt:
Twierdzenie Shannona w praktyce

Post autor: senjin » środa 30 maja 2007, 20:15

Na to twierdzenie co jakiś czas ktoś się powołuje... mówi ono, że w sygnale spróbkowanym z częstotliwością f, mogą być poprawnie zapisane dowolne dźwięki, o częstotliwości mniejszej od f/2. W przypadku 44.1kHz trudno to sprawdzić sprawdzić jak jest naprawdę bez oscyloskopu (przynajmniej ja bym pewnie nic ciekawego nie wysłyszał). Dlatego wykonałem eksperyment, w którym wszystko można usłyszeć nieuzbrojonym uchem:

Wygenerowałem (w audacity) sygnał o częstotliwości 3999 Hz w próbkowaniu 8kHz. Wedle twierdzenia S. powinien być poprawnie zapisany. Efekt - sami posłuchajcie. W moim przypadku sygnał dudni z częstotliwością 2Hz.

I moje pytania:

1. Czy zrobiłem coś źle? Czy Audacity jest nieodpowiednim programem? Słuchałem sygnału na karcie zintegrowanej i na M-Audio Audiophile 2496... czy ta druga też jest za kiepska?

2. Dlaczego dudni z częstotliwością 2 Hz? To oznacza, że w sygnale obecna jest częstotliwość 3997 Hz lub 4001 Hz. Analizę widma mogę zrobić tylko do 8000/2=4kHz. Widzę tylko pojedynczy pik w 3999, nie ma piku w 3997, więc drugim sygnałem musi być 4001 Hz... Skąd on się bierze?!

Oczywiście zgodnie z twierdzeniem S. 4001 Hz nie może być obecne w moim wygenerowanym sygnale, tak więc z jakiegoś powodu tworzy się podczas odtwarzania... w programie do odtwarzania (sprawdzałem kilka, w Linuksie i Windowsie), w karcie muzycznej?!

ksnd
Posty:57
Rejestracja:środa 30 maja 2007, 00:00

Re: Twierdzenie Shannona w praktyce

Post autor: ksnd » środa 30 maja 2007, 20:23

Dla f=4kHz przy fprobkowania=8kHz masz 2 próbki/cykl. W tak skrajnych warunkach auralnie wiele zależy od sprzętu (np. kwestia interpolacji), ewentualnie programu jeśli ma wbudowaną funkcję interpolacji (a dobry wg mnie nie powinien). Spróbuję powtórzyć twój eksperyment na audacity.

Krzysiek

Awatar użytkownika
MB
Posty:3318
Rejestracja:wtorek 09 kwie 2002, 00:00

Re: Twierdzenie Shannona w praktyce

Post autor: MB » środa 30 maja 2007, 20:34

Nic nie robisz źle, wszystko jest w porządku. Po prostu doświadczyłeś efektu nieidealnej rekonstrukcji sygnału analogowego z ciągu próbek. W efekcie próbkowania z częstotliwością fs, w widmie sygnału pojawiają się zwielokrotnione repliki widma sygnału oryginalnego, odbite lustrzanie wokół każdej wielokrotności n*fs. Przy odtwarzaniu sygnału te dodatkowe repliki widma powinny być usunięte, a idealnie może je usunąć tylko filtr idealny. Jako, że karta dźwiękowa nie dysponuje takim, nie jest ona w stanie dokładnie odfiltrować produktów próbkowania i słyszysz je razem ze swoim sygnałem. A ponieważ Twój sygnał jest tylko minimalnie poniżej fs/2, słyszysz również jego lustrzane odbicie. I te dwa razem dają dudnienie, bo suma 2 sinusów jest równoważna iloczynowi 2 sinusów o częstotliwości średniej oraz różnicowej.

ksnd
Posty:57
Rejestracja:środa 30 maja 2007, 00:00

Re: Twierdzenie Shannona w praktyce

Post autor: ksnd » środa 30 maja 2007, 20:42

zrobiłem test. Wygląda na błędy momentów znamiennych (zaokrąglenia) dla częstotliwości, efektem jest modulacja amplitudy której częstotliwość zwiększa się wraz z częstotliwością generowanego sygnału (spróbuj wygenerować sygnał z f=3500 i zrób powiększenie żebyś widział próbki) - możesz to potwierdzić generując np. częstotliwość 2001Hz; dlaczego akurat tak audacity liczy, nie potrafię powiedzieć. Najoptymalniejszy przypadek jest kiedy częstotliwość próbkowania dzieli się bez reszty przez wygenerowaną (łącznie z f nyquista). Im większa reszta, tym większe błędy (jak mniemam).

Krzysiek

ksnd
Posty:57
Rejestracja:środa 30 maja 2007, 00:00

Re: Twierdzenie Shannona w praktyce

Post autor: ksnd » środa 30 maja 2007, 20:45

...Nic nie robisz źle, wszystko jest w porządku. Po prostu doświadczyłeś efektu nieidealnej rekonstrukcji sygnału analogowego z ciągu próbek. W efekcie próbkowania z częstotliwością fs, w widmie sygnału pojawiają się zwielokrotnione repliki widma sygnału oryginalnego, odbite lustrzanie wokół każdej wielokrotności n*fs. Przy odtwarzaniu sygnału te dodatkowe repliki widma powinny być usunięte, a idealnie może je usunąć tylko filtr idealny. Jako, że karta dźwiękowa nie dysponuje takim, nie jest ona w stanie dokładnie odfiltrować produktów próbkowania i słyszysz je razem ze swoim sygnałem. A ponieważ Twój sygnał jest tylko minimalnie poniżej fs/2, słyszysz również jego lustrzane odbicie. I te dwa razem dają dudnienie, bo suma 2 sinusów jest równoważna iloczynowi 2 sinusów o częstotliwości średniej oraz różnicowej....
**********************

MB, dzięki za wyjaśnienie!

senjin
Posty:405
Rejestracja:poniedziałek 26 wrz 2005, 00:00
Kontakt:

Re: Twierdzenie Shannona w praktyce

Post autor: senjin » środa 30 maja 2007, 21:15

Ale to prowadzi do wniosku, że twierdzenia S. nie da się spełnić w praktyce?... I potwierdza pojawiające się czasem głosy, że 44.1 kHz nie jest wystarczającym próbkowaniem dla dźwięku (w EiS był kiedyś wywiad z realizatorem, który twierdził, że słyszy związane z tym zniekształcenia).

Poza tym... Wygenerowałem na próbę 2001 Hz. To jak wygląda w audacity ma zapewne małe znaczenie, ale brzmienie... sygnał wygenerowany w próbkowaniu 44.1 kHz brzmi dobrze (czysto). Sygnał wygenerowany w 8kHz ale odtwarzany w 44.1 kHz brzmi tak samo dobrze (czyli jakieś wewnętrzne przesamplowanie audacity działa dobrze). Ale sygnał wygenerowany i odtwarzany w 8kHz brzmi źle - słychać przydźwięk - zapewne wyższe tony (jak rozumiem, nieharmoniczne). Czyli moja M-Audio nie potrafi dobrze odtworzyć dźwięku nawet o częstotliwości rzędu 1/4 częstotliwości próbkowania!

Nie jest chyba tak źle... pisząc ten post zdałem sobie sprawę z tego, że zniekształcenia pojawiają się, ale powyżej częstotliwości próbkowania... czyli człowiek słuchając płyty CD nie jest wstanie ich usłyszeć. Pocieszające ;)

A tak na boku: jeśli dobrze pamiętam, ktoś na tym forum chwalił się, że puszcza muzykę kotom... nie wolno im puszczać niczego w próbkowaniu mniejszym od 192 kHz !!!

senjin
Posty:405
Rejestracja:poniedziałek 26 wrz 2005, 00:00
Kontakt:

Re: Twierdzenie Shannona w praktyce

Post autor: senjin » środa 30 maja 2007, 21:20

zniekształcenia pojawiają się, ale powyżej częstotliwości próbkowania...
**********************
miało być "powyżej połowy częstotliwości próbkowania"...

ksnd
Posty:57
Rejestracja:środa 30 maja 2007, 00:00

Re: Twierdzenie Shannona w praktyce

Post autor: ksnd » środa 30 maja 2007, 21:33

" wygenerowany w próbkowaniu 44.1 kHz brzmi dobrze (czysto). Sygnał wygenerowany w 8kHz ale odtwarzany w 44.1 kHz brzmi tak samo dobrze (czyli jakieś wewnętrzne przesamplowanie audacity działa dobrze)."

to oczywiste, im wyższa częstotliwość próbkowania tym mniejsze błędy. Przy 44100Hz masz ponad 5x więcej momentów znamiennych na jednostkę czasu niż przy 8000Hz.

Awatar użytkownika
MB
Posty:3318
Rejestracja:wtorek 09 kwie 2002, 00:00

Re: Twierdzenie Shannona w praktyce

Post autor: MB » środa 30 maja 2007, 21:34

...Ale to prowadzi do wniosku, że twierdzenia S. nie da się spełnić w praktyce?... I potwierdza pojawiające się czasem głosy, że 44.1 kHz nie jest wystarczającym próbkowaniem dla dźwięku (w EiS był kiedyś wywiad z realizatorem, który twierdził, że słyszy związane z tym zniekształcenia).
**********************
Wydaje mi się, że mylisz pojęcia. Twierdzenie Shannona to prawo matematyczne. Tu nie ma nic do spełniania/niespełniania, ono jest po prostu prawdziwe, bo ma ścisły formalny dowód. Zapewne masz na myśli to, że nie da się w praktyce wykorzystać pełnego pasma od 0 do fs/2 - to faktycznie prawda. Zauważ, że przy próbkowaniu z fs=44,1kHz nie wykorzystujemy pełnego pasma 0-22,05kHz tylko 0-20kHz, zatem jest zapas na nieidealną stromość filtru antyaliasowego i filtru rekonstruującego.


Poza tym... Wygenerowałem na próbę 2001 Hz. To jak wygląda w audacity ma zapewne małe znaczenie, ale brzmienie... sygnał wygenerowany w próbkowaniu 44.1 kHz brzmi dobrze (czysto). Sygnał wygenerowany w 8kHz ale odtwarzany w 44.1 kHz brzmi tak samo dobrze (czyli jakieś wewnętrzne przesamplowanie audacity działa dobrze). Ale sygnał wygenerowany i odtwarzany w 8kHz brzmi źle - słychać przydźwięk - zapewne wyższe tony (jak rozumiem, nieharmoniczne). Czyli moja M-Audio nie potrafi dobrze odtworzyć dźwięku nawet o częstotliwości rzędu 1/4 częstotliwości próbkowania!
********************************
Sprawa jest prosta - filtr rekonstruujący w konsumenckich kartach dźwiękowych jest filtrem niskiego rzędu a więc o mało stromej charakterystyce, a więc on do końca nie wycina produktów próbkowania. Przy fs=44,1kHz i wyżej to specjalnie nie przeszkadza, bo owe efekty to ultradźwięki. Przy niskiej częstotliwości próbkowania słychać je bardzo dobrze. Inna sprawa, że w wielu kartach filtr rekonstruujący nie jest przestrajany a jedynie zoptymalizowany dla kilku popularnych częstotliwości próbkowania (48, 44, 22, 16, 8). Jeśli się zejdzie jeszcze niżej to on po prostu nie działa poprawnie. To niestety efekt racjonalnego podejścia do kosztów produkcji karty. Nie ma co się łudzić, że z innymi kartami byłoby lepiej.


Nie jest chyba tak źle... pisząc ten post zdałem sobie sprawę z tego, że zniekształcenia pojawiają się, ale powyżej częstotliwości próbkowania... czyli człowiek słuchając płyty CD nie jest wstanie ich usłyszeć. Pocieszające ;)
**********************
tak


senjin
Posty:405
Rejestracja:poniedziałek 26 wrz 2005, 00:00
Kontakt:

Re: Twierdzenie Shannona w praktyce

Post autor: senjin » środa 30 maja 2007, 22:23

to oczywiste, im wyższa częstotliwość próbkowania tym mniejsze błędy. Przy 44100Hz masz ponad 5x więcej momentów znamiennych na jednostkę czasu niż przy 8000Hz....
**********************
No właśnie twierdzenia Shannona mówi, że to nie jest takie oczywiste... wystarczy, że jest mniejsze od f/2 i już...


nie wykorzystujemy pełnego pasma 0-22,05kHz tylko 0-20kH
**********************
Dlaczego akurat 20 kHz?

ODPOWIEDZ