Niedawno dowiedziałem się o interesującym programie, służącym do wstępnej obróbki dźwięku przed kompresją bezstratną – lossyWAV. Obróbka ta jest oczywiście stratna.
Brzmi to może nieciekawie (“stratna kompresja bezstratna”), ale zasada jego działania i idea powstania jest co najmniej… ciekawa.
Po pierwsze, program ten zaokrągla najmniej znaczący bit tak, by zmniejszyć dynamikę dźwięku i wprowadzić szum ALE szum ten znajduje się poniżej poziomu słyszalności lub poniżej istniejącego poziomu szumu – wprowadzony szum jest więc niesłyszalny i nie pogarsza jakości dźwięku.
Po drugie, plik lossyWAV kompresowany jest przy pomocy jednego z istniejących kodeków bezstratnych: FLAC, TAK, WavPack czy Lossless WMA. lossyWAVE nie jest kompatybilne z formatem ALAC.
… a teraz najważniejsze pytanie – po co w ogóle to wszystko?
Przede wszystkim spreparowane tak pliki lepiej bądź znacznie lepiej się kompresują. Przykładowo plik FLAC ~800kbps (L5), kompresuje się do lossyFLAC ~400-500kbps (Q5). Kompresja jest więc “nawet dwukrotna”.
A jaki jest tego sens?
Sens jest taki, że przy przepływności niewiele większej niż MP3 320kbps, otrzymujemy właściwie bezstratny plik FLAC. Powstały w wyniku wstępnej obróbki szum jest i tak poniżej poziomu słyszalności, a jakość takiego pliku lossyFLAC jest znacznie wyższa niż pliku MP3 320kbps (który i tak zawiera “szum powstały w wyniku kompresji”, jednak szum ten nie zawsze znajduje się poniżej poziomu słyszalności).
A najlepszą (i najgorszą) informacją jest to, że pliki lossyFLAC (oraz lossyTAK, lossyWV czy lossy “Lossles WMA”) są w pełni kompatybilne z istniejącymi dekoderami/odtwarzaczami (co w sumie jest oczywiste, ponieważ sam enkoder się nie zmienia, ale piszę to w razie gdyby ktoś miał wątpliwości).
Więc z jednej strony pozwala to na dalsze wykorzystanie pojemności odtwarzacza, z drugiej strony wprowadza niebezpieczeństwo że “pliki bezstratne są są nie-do-końca-bezstratne”. Zwłaszcza dla osób, które nie zawsze mają pliki FLAC z własnych kolekcji płyt CD-Audio…
Na razie nie istnieje program pozwalający “wykryć” takie pliki wśród istniejących już plików FLAC. Co oznacza że niedługo może zacząć się szał na “pliki FLAC mające wysoki bitrate” (ponieważ bitrate jest na chwilę obecną jedynym sposobem na rozróżnienie tych plików)… a może wręcz odwrotnie?
A jak to wygląda w praktyce?
Pliki WAVE, powstałe np. po zripowaniu z CD-Audio, można “przepuścić” przez lossyWAV a następnie samodzielnie skompresować do formatu FLAC. Można również skorzystać z gotowego enkodera lossyFLAC (który właśnie powstaje). Zaś poziomów “redukcji bitów” jest 10 (od Q10 – najwyższa jakość, do Q1 – najniższa jakość).
Samo zaokrąglanie bitów zaś nie jest oczywiście procesem automatycznym ani przypadkowym. Każdy blok składający się z 512 próbek dźwięku przetwarzany jest niezależnie. Algorytm ocenia, czy oraz jaki sposób (biorąc pod uwagę zadaną przez użytkownika jakość), da się zaokrąglić LSB w danym bloku.
Interesujące?
Cóż… na powszechne użycie należy pewnie trochę zaczekać (albo już to przegapiliśmy ;) ) – projekt znajduje się obecnie w fazie 1.0.0b. Link do pliku:
W najmniejszym stopniu mnie to nie pociąga. Chcąc kompresji stratnej, mogę przecież przekonwertować FLACa na OGG/MP3, a nie bawić się w “prawie” bezstratny format. OK, niech to nawet będzie “matematycznie niesłyszalne”, a ja nadal będę się upierał, że lossless ma być lossless, a lossy lossy.
“otrzymujemy właściwie bezstratny plik FLAC.”
problemem jest słówko “właściwie”. Za furę pieniędzy możesz kupić Ferrari, za połowę mniej porysowane Ferrari -> to drugie to też “właściwie” Ferrari, ale jednak coś z nim nie tak. Pomijam fakt, że to, że zmiana jest niesłyszalna nie oznacza, że nie modyfikuje innych parametrów odbioru takich jak panorama.
Powiem tak: w dzisiejszych czasach nie robi mi różnicy czy zapisze coś z bitrate 400-500 czy 800 kbps. Pewnie za rok-dwa zapisywałbym wszystko do nieskompresowanych WAV’ów gdyby nie brak metadanych. Inna sprawą jest to, że ten plik nadal pozostanie FLAC’iem, czyli praktycznie nie odtworzy go żaden przenośny odtwarzacz – i tak wszystko co chcę umieścić na PSP konwertuje na AAC. Przynajmniej do czasu aż znajdzie się odtwarzacz, które będzie sobie radził z FLAC’ami z embedded cuesheets.
> nie modyfikuje innych parametrów odbioru takich jak panorama
w obecnej wersji i dla odsłuchu stereo nie jest to słyszalne, jednak twórca wziął już pod uwagę analizę kanału S (otaczającego) w związku z tym, że ktoś może chcieć przygotować pliki lossyFLAC z materiału zakodowanego jako Dolby Surround/Dolby Pro Logic/Dolby Pro Logic II/SRS CircleSurround
> do nieskompresowanych WAV?ów gdyby nie brak metadanych
foobar2000 pozwala na zapis tagów APEv2 do plików WAVE… już od dawna tak robię :) co prawda niektóre programy interpretują te tagi jako dźwięk… ale po prostu trzeba na to uważać
> będzie sobie radził z FLAC?ami z embedded cuesheets
a nie wystarczy FLAC + gapless? na jedno wychodzi :)
Ad 1) Chodziło mi o panoramę z dźwięku stereo bez jakichkolwiek informacji dla procesorów Dolby.
Ad 2) No właśnie nie chce się bawić w jakieś niestandardowe zabiegi, bo później wychodzą z tego buraczki.
Ad 3) No nie na jedno – w moim przypadku eliminuje to 1 poziom katalogów: Mam /Muzyka/Artysta/Nazwa_albumu.flac. Po prostu łatwiej mi się je kataloguje.
panorama stereo jest oczywiście zachowana, nie zmienia się… to nie jest żadne “intensity coding” :)
a informacja o kanale S wynika stąd, że dźwięk przestrzenny może zostać zapisany jako niezależne kanały (np. 5.1 na płycie DVD czy DVD-Audio) bądź jako “matrix surround” (czyli stereo, przykładowo płyty CD-Audio z dopiskiem Surround/DPL)
w tym ostatnim przypadku dwa kanały stereo niosą informacje niezbędne do “odtworzenia” wszystkich kanałów (np. pięciu) przez dekoder – są więc niejako “przepakowane informacjami”… stąd mogą wynikać pewne przekłamania w dekodowaniu niezależnych kanałów (poczytaj choćby o DPL/DPL II – whitepapers znajdują się na stronie dolby)
żeby nie było, nawet format MP3 nie nadaje się się do kompresji materiału DPL/DPL II/SRS CircleSurround