Kategorie
dźwiękownia Pisze bo mogie.

16bit, 48kHz, 128kbps – o co w tym wszystkim chodzi?

Podwaliny pod współczesny zapis audio stworzyło tzw twierdzenie Shannona, a zasadzie jedno z jego twierdzeń uzupełnione przez paru innych mózgowców. Wgłębiając się w wikipedię dowiemy się różnych dziwnych rzeczy o sygnałach dyskretnych, dziwnych wzorach itp, ale przekładając z Polskiego na nasze chodzi o to, że jest możliwe zapisać audio przy pomocy zer i jedynek w sensowny sposób. Teraz czas na wyjaśnienie jak to się dzieje. Otóż jak pewnie części z was wiadomo mikrofon to w gruncie rzeczy takie szprytne urządzenie, które zamienia dźwięk na prąd. Tenże prąd wędruje sobie kabelkiem do karty dźwiękowej i… no właśnie, teraz ten prąd trzeba zamienić na cyferki. Może ktoś jeszcze pamięta, że dźwięk to fala. Co tu faluje? poniekąt powietrze, chociaż może to być niemal dowolny inny ośrodek, jednak żeby nie komplikować skupmy się na powietrzu. Waląc np. w bęben lub drąc tzw ryja wprawiamy niektóre cząsteczki powietrza w ruch drgający, który ma na tyle dużą energię, że jest w stanie wprawić również w drganie mębranę mikrofonu. Jak już wcześniej wspomniałem dalej zamienia się to w prąd i w takiej formie dociera do karty dźwiękowej. W efekcie mamy prąd o bardzo szybko zmieniającym się napięciu. Jak zapisać tego typu sygnał wymyślił właśnie Claude Shannon. Jego metoda jest w gruncie rzeczy bardzo prosta należy co chwila badać wartość, w tym przypadku napięcia prądu i zapisać je w formie liczby. W ten sposób otrzymamy w cholerę wartości napięcia, które, gdy je zamienić z powrotem na prąd otrzymamy w miarę podobny do oryginału sygnał. Taki zapis cyfrowy zmieniającego się sygnału nazywamy jego zpróbkowaniem, a dźwięk zapisany tą metodą określamy PCM czyli pulse code modulation, a po polskiegu modulacja kodowo impulsowa. Prawda, że proste? :d.
No fajnie, ale gdzie tu te Hertze, bity itd?
Taqki sygnał można po pierwsze zapisać w różnych odstępach czasu i jak się można domyślić im częściej zapiszemy stan napięcia, tym dokładniejszy ten zapis będzie. Kłaniają się więc Hertze czyli częstotliwość zapisywania zmian napięcia. Teraz czekam na pytanie typu "ale granicą słyszalności człowieka jest podobno 20000hz więc na cholerę te 48000?" tiaaa. obawiam się, że trzeba będzie wprowadzić kolejny termin, a mianowicie częstotliwość Nyquista. Znowu w Wikipedii mamy masę wzorów, zakręconych definicji itd, bo przecież trzeba udowodnić, że to faktycznie działa, ale ja tego ni cholery nie rozumiem. Jednak da się to jakoś tam wyjaśnić bez uciekania się do matematyki, którą chyba tylko Dawid zrozumie. Aa, nie napisałem o co chodzi? no to: maksymalna, poprawnie zapisana częstotliwość jest dwkrotnie mniejsza niż częstotliwość próbkowania czyli tę, z jaką zapisujemy sygnał. Najprościej wyjaśnić to w ten sposób, że aby zapisać jakąś falę trzeba zaznaczyć przy najmniej jej minimum i maksimum, tak więc na zapisanie pełnego okresu fali w tym przypadku trzeba wykorzystać dwa zapisy. To oczywiście znacznie uproszczone wyjaśnienie, bo zostaje jeszcze tzw aliasing czyli problem z częstotliwościami wyższymi niż maksymalne, które bez odpowiednich filtrów wprowadzają potworne śmieci i zgrzyty do oryginalnego dźwięku, ale to już komputery robią bez naszego udziału i tym zdecydowana większość z nas zajmować się nie będzie, a tym, którzy jednak mięliby takie pomysły odsyłam do taakich mądrych siążek, z taaakimi wzorami. Podsumowując mając częstotliwość próbkowania 48kHz czyli 48000Hz możemy maksymalnie zapisać dźwięk o częstotliwości 24000Hz czyli cały zakres słyszalności człowieka plus jeszcze trochę na wszelki wypadek no i ewentualne problemy z filtrami usuwającymi śmieci i zgrzyty.
Zostają jeszcze bity. Wspomniałem, że napięcie jest zapisywane co pewien czas, ale tu pojawia się pytanie – jaki jest zakres liczb? czyli jaka jest różnica między minimum a maksimum. To właśnie określa ilość bitów. Mając informację, o 16bitowym dźwięku można obliczyć, że mamy 65536 możliwych stanów i tu po wyjaśnienia odnośnie systemów liczbowych odsyłam do Dawida, bo chyba on to najlepiej wyjaśni. Ja mogę jedynie dodać, że każdy dodatkowy bit zwiększa ilość wartości dwókrotnie, czyli dodawszy informację z poprzedniego wpisu zwiększa dynamikę sygnału o 6db. Dynamika sygnału to różnica miiędzy minimalnym a maksymalnym poziomem zapisanego dźwięku. Co prawda zostaje jeszcze coś, co się nazywa dithering, czyli dodanie szumu do dźwięku, bo jeśli ilość bitów jest mała np. 8 to dynamika wynosi 6*8 czyli, o ile jeszce mnożyć umiem, 48db. Mówi się, że od progu słyszalności do tzw progu bólu jest 120db różnicy. Trochę jakby więcej i pojawia się problem pod tytułem, co w związku z tym? ano w takim przypadku dźwięk jest w specyficzny sposób zniekształcony i aby te zniekształcenia były łatwiejsze dla człowieka do zniesienia dodaje się właśnie szum, ale to taka ciekawostka, bo to większość programów też robi sama, chocaż co bardziej zaawansowane dają możliwość wyboru typu tego ditheringu, ale to dla tych, co to myślą, że tyyle wiedzą, co nota bene nie zawsze mija się z prawdą.
Pozostaje ostatnia rzecz czyli tzw. szybkość transmisji. To jest nieco inne spojrzenie na dźwięk, a mianowicie nie interesuje nas częstotliwość próbkowania, ilość bitów tylko to, ile miejsca na dysku ma zająć sekunda nagrania, a parametry ma dobrać program. Takie potraktowanie sprawy jest popularne głównie w przypadku tzw stratnej kompresji dźwięku, bo w tym przypadku ilość parametrów jest niejednokrotnie przyprawiająca o ból głowy, wyjaśnienia są znacznie bardziej skomplikowane niż banalne twierdzenie Shannona, a liczby zespolone to wstęp do wprowadzenia w zarysie. Dlatego użytkownik ma określić jak duży ma być wyjściowy plik i tyle jego. Inna rzecz, że wiele kodeków oferuje dla tych, co to lubią robić po swojemu różne dziwne przełączniki, ale to już rzecz na zupełnie inny wpis, a nawet szereg wpisów.
Na koniec odrobina prostej, nawet dla mnie, matematyki. Takie małe ćwiczonko: obliczmy sobie szybkość transmisji dźwięku stereo 16bit, 48kHz. Od początku: mamy 16bitó, czyli na marginesie dwa bajty, na próbkę. Mnożymy to przez ilość tychże próbek na sekundę, czyli 48000, otrzymujemy 768000 i wszystko razy dwa kanały i wychodzi 1536000 czyli półtora megabita. Teraz oczywiście można rzecz ciągnąć dalej i policzyć ile wyjdzie na minutę – 92160000, a godzina to 5529600000 oczywiście bitów, czyli 691200000 bajtów czyli 691,2 megabajtów. uff! I tym może optymistycznym akcentem….

Kategorie
dźwiękownia Pisze bo mogie.

Dziwna skala decybelowa

Niektórzy z was pewnie wiedzą, że w skali decybelowej nie mierzy się jedynie dźwięku, lae spotkać ją można np. w mierzeniu sygnału radiowego i ewentualnie paru innych sytuacjach. Jak to jest, że prędkość, temperatura, praca, napięcie prądu mają swoje jednostki, a tu nagle tak niby różne rzeczy jak dźwięk i fale radiowe nagle mierzy się w decybelach? Możnaby pomyśleć, że to i to jest falą, więc coś tu może być na rzeczy, ale zaraz przychodzi pan fotograf i mierzy światło w lumenach albo innych luksach i ząg. A czy możnaby mierzyć np. prędkość w decybelach? okazuje się, że w pewnym sensie można, tylko byłoby to trochę niewygodne. Czemu? bo skala decybelowa to na prawdę dziwny, przy najmniej dla większości ludzi, twór. Działa to tak: ustalamy sobie umowną wartość, która w skali decybelowej jest zerem i teraz uwaga: 6db to wartość dwa razy większa, 12db czterokrotnie więcej, 18db to już osiem razy więcej itd, czyli każde 6db to dwókrotność poprzedniej wartości. Tak samo jest z liczbami ójemnymi, tj -6db to dwa razy mniej niż 0db, -12db to cztery razy mniej niż 0db itd. chcąc mierzyć prędkość w decybelach trzebaby założyć gdzie jest 0db. Gdyby ustawić to gdy samochód sobie stoi to nagle pojawia się problem, bo przecież można zero mnożyć dowolną ilość razy i jak wół zawsze wyjdzie zero, przy najmniej tak w szkole uczą. No więc niech zero będzie przy 10km/h. W ten sposób gdy jedziemy z prędkością 6db to mamy na standardowym liczniku 20km/h. 12db to już mamy czterdziestkę, a 24db to zasuwamy 160 na godzinę, a 30db to niebagatelne 320km/h. Za to -6db to 5km/h, a gdy stoimy to licznik powiniem pokazać odwróconą ósemkę po minusie.
Czemu więc w takiej dziwnej skali mierzymy dźwięk i czemu to działa? ano dlatego, że dźwięk to, jak w szkole uczą, zmiany ciśnienia powietrza. Rejestrowany przez nasze uszy przedział tych zmian jest zaskakująco wielki i gdyby mierzyć to w standardowy sposób okazałoby się, że szept to jakieś ułamki z dużą ilością zer, a wybuch to sześcio lub więcej cyfrowe liczby.
Wniosek: 0db to NIE jest cisza absolutna, tylko tzw próg słyszalności czyli uśredniony próg, w którym człowiekowi wydaje się, że może coś ta słychać. Nie zmienia to faktu, że mog być dźwięki o poziomie np. -8db, ale przeciętny człowiek nie jest w stanie tego zarejestrować.
Kolejną ciekawostką jest wyznaczenie 0db w cyfrowych systemach dźwięku. Wartość ta równa się maksymalnemu poziomowi, jaki system jest w stanie zarejestrować czyli taki, tu info dla informatyków, który zapisany jest przy pomocy samych jedynek. Wynika z tego, że w cyfrowym świecie audio, wszelkie głośności mają na początku przyklejony minus.

Kategorie
dźwiękownia testy, prezentacje

Prezentacjakodeka opus.

uwaga! Dawid zasygnalizoał, że chwilowo Elten nie streamuje audio w OPUS, ale poprawka ma wyjść do wieczora.
Ptaszki ćwierkają, że od pewnego czasu Elten obsługuje streaming w formacie OPUS. Jest to bardzo dobra wiadomość, gdyż OPUS to otwarty i całkiem niezły kodek, co zamierzam udowodnić, a w każdym razie lepszy od popularnego mp3. Żeby nie przedłużać w moich plikach udostępnionych za chwilę znajdą się próbki w wyżej wspomnianym formacie. Czemu nie wpisy audio? ano dlatego, że Elten przekonwertuje je do mp3 96kbps, gdyż pono niektórzy mają starsze wersje Eltena, który nie obsługuje OPUS-a. Jeśli chodzi o technikalia, to prócz bitrate jedynym parametrem, który został zmieniony to "framesize" odpowiedzialny za opóźnienie w czasie streamingu. Domyślnie ustawiony jest na 10ms, ja zmieniłem na 60ms, gdyż nie ma to znaczenia przy odtwarzaniu plików, a bywa, że odrobinę poprawia jakość odtwarzanego dźwięku. Zaprasdzam więc do udostępnionych przeze mnie plików.

EltenLink