Сжатие звука без потерь

Звук является простой волной, а оцифрованный звук — цифровое представление этой волны. Это достигается запоминанием уровня аналогового сигнала множество раз в течение одной секунды. Например, в обыкновенном CD сигнал запоминается 44100 раз за секунду. Так как CD работает со стерео, мы запоминаем сигнал для левой и правой колонки параллельно. Для каждого замера используются 16-битовые числа. Поэтому нетрудно посчитать, что одна секунда звучания занимает 2 × 2 × 44100 = 176 400 байт.

Сжатие звука без потерь — совокупность преобразований, позволяющая эффективно сжимать звуковые данные с возможностью их полного восстановления. Как и любое сжатие без потерь, сжатие звуковых данных эксплуатирует какую-либо особенность данных. В данном случае это:

  • Знание границ семплов: мы знаем, сколько битов или байтов отводится на один отсчёт (семпл), и сколько в семпле аудиоканалов.
  • Невысокая производная: другими словами, значения соседних семплов мало отличаются.
  • Невысокая вторая производная: значения соседних трёх семплов близки к линейной функции.
  • Близость левого и правого каналов: уровни сигнала в левой и в правой колонке, как правило, близки.

Преобразование координат (L, R) → (X, Y)

Первым шагом в сжатии будет представление каналов аудио L и R более эффективным образом, представив их некими числами X, Y согласно следующему алгоритму:


Для дробных чисел это преобразование не теряет информации и является эквивалентным оригинальному. Для целых же теряет 0,5 при конверсии в integer, когда L и R имеют разную чётность, но, проверив чётность , легко восполняем эти 0,5.

Предиктор

Следующий шаг — пропустить X и Y через алгоритм, который максимально эффективно уберёт весь избыток информации в представлении X, Y.

В данном случае весь процесс направлен на представление массивов X, Y минимально возможными числами, все еще сохраняя обратимость процесса. Есть множество способов сделать это. Один из них — преобразование с использованием линейной алгебры:

PX = (2 * X−1) − X−2
PY = (2 * Y−1) − Y−2

Если X = (2, 8, 24, ?), то в ряду PX на четвертом месте будет P4 = (2 * X4-1) − X4-2 = (2 * 24) − 8 = 40
То есть, если X = (2,8,24,27,25,28,21,17), то PX = (2,8,14,40,30,…)

Заметим, что X и Y таковы, что на всем протяжении спектра в данную секунду в среднем не должно происходить огромных изменений в значениях между соседними частотами, что облегчает кодирование.

При этом стоит помнить, что хорошие алгоритмы организуют обработку входящих данных таким образом, чтобы уменьшить числа в массиве PX, PY.

Пусть число m лежит в диапазоне 0 … 1024. Для массива PX выполняется серия преобразований с разными значениями m следующим образом:

X = (2, 8, 24, ?), тогда соответственно
PX = (2 * X−1) − X−2 = (2 * 24) − 8 = 40

Если ? = 45 и m = 512, тогда конечное значение =

Далее происходит перебор других значений m, поскольку большие значения могут быть более эффективны.

Тогда, получив для определенного m массив данных, происходит увеличение или уменьшение m в зависимости от того, была ли последняя попытка в алгоритме удачной.

Используя разные уравнения и используя множество проходов для разных свободных коэффициентов, можно добиться вполне ощутимого сжатия данных.

Приведем пример нескольких уравнений, как это следует из технической литературы

P0 = 0
P1 = X−1
P2 = (2 * X−1) − X−2
P3 = (3 * X−1) − (3 * X−2) + X−3

Кодирование. Алгоритм Райса

Идея сжатия аудио заключается в представлении чисел, соответствующих потоку минимально возможным образом, убрав предварительно любую корреляцию данных. После этого можно записывать поток закодированных данных на диск. Одним из самых эффективных способов является кодирование Райса.

Меньшие числа предпочтительней тем, что их представление в бинарном представлении короче. Например, необходимо закодировать следующий ряд:

Базис по основанию 10: 10, 14, 15, 46

Или тот же ряд в бинарном виде

Базис по основанию 2: 1010, 1110, 1111, 101110

Теперь если требуется представить этот в виде строки, где для каждого числа зарезервировано 32 бита (диапазон всех возможных значений), то это будет неэффективно, поскольку понадобится 128 бит. Однако существует более эффективный метод. Наилучшим решением было бы просто записать бинарные числа 1010, 1110, 1111, 101110 без запятых, получив ряд вида 101011101111101110. Проблема в том, что после нет возможности узнать границы каждого числа. В качестве решения подобной задачи, как правило, используется алгоритм Райса.

Кодирование Райса — это способ представить маленькие числа одной строкой, сохраняя способность их различать.
Примечание: алгоритм тем эффективнее, чем меньше числа, поэтому необходимо изначально позаботиться об этом

На каком-то этапе кодирования данные представлены в виде числа n. Закодированное, оно добавляется справа к строке уже закодированных чисел таким образом, чтобы был возможен обратный процесс.

Основная идея представить число n как , так чтобы 0 <= r < 2^k.

Так как в машинном языке существует сверхбыстрая команда ротации числа, соответствующая делению числа на степени двойки, достаточно использовать k=log n/log 2, округленное до наименьшего целого числа. Таким образом, в алгоритме гарантированно выполняются условия для k. Исходя из формулы, необходимо определить число и остаток : . Например,

n = 46 (десятичное) = 101110 (двоичное)
k = 4 (выбирается)

Тогда (1110 в двоичной системе). .

Далее строится кодированное число по следующей схеме. Первыми идут нули, количеством в q штук [00]. Затем справа к нулям добавляется маркировочный бит [1], чтобы знать когда кончаются нули. А за ними дописывается остаток r [1110], длиной в k бит.

То есть число 46 в закодированном виде выглядит [00][1][1110] = 0011110

Теперь, с учетом определенности k, которым кодировалось число, можно с легкостью его расшифровать:

(количество нулей) * 24 + (k бит следующих за маркировочным битом) = 2*24+14 = 46

Следующее число начинается сразу же со следующего бита.

Если данные кодируются с помощью слишком большого числа k, например k=32, тогда способ превращается в описанный в начале раздела метод, когда каждому числу соответствует 32 бита, только оно предваряется бесполезным маркировочным битом. В случае малого k количество нулей экспоненциально возрастает — для k=0. Для представления числа 46 понадобится 46 нулей и 1 маркировочный бит. Оптимальный вариант, учитывая, что в ряду калибровочные изменения минимальны, — это кодировать среднестатистическим значением для k, например для кодирования сотого числа k высчитывается как среднестатистический размер чисел в массиве под индексами 0…99.

Например, для 16-ти разрядного представления отсчетов число 46 будет представлено следующим двоичным кодом: 0000000000101110. После перекодировки это же число будет содержать всего лишь 7 разрядов: 0011110.

Оптимальное k может быть вычислено и экспериментальным способом: например, любое k между 16…128 нормально работает. В любом случае, если известен примерный диапазон закодированных значений, то оптимальное значение для k = log n / log 2.

См. также

Read other articles:

Jack BrabhamJack Brabham pada tahun 1966Karier Kejuaraan Dunia Formula SatuKebangsaan AustraliaTahun aktif1955 - 1970TimCooper, Rob Walker Racing Team dan BrabhamJumlah lomba128 (126 starts)Juara dunia3 (1959, 1960, 1966)Menang14Podium31Total poin253 (261)Posisi pole13Lap tercepat12Lomba pertamaGrand Prix Inggris 1955Menang pertamaGrand Prix Monako 1959Menang terakhirGrand Prix Afrika Selatan 1970Lomba terakhirGrand Prix Meksiko 1970 John Arthur Jack Brabham, OBE (2 April 1926 ̵...

 

 

Gedung Gereja Koinonia (Bethelkerk) pada tahun 1910. Gereja Koinonia adalah gereja tua di Jakarta yang terletak di Jalan Matraman Raya No. 216, tepat di dekat persimpangan Jalan Jatinegara Barat dan Jalan Jatinegara Timur. Gereja ini merupakan salah satu gereja peninggalan zaman kolonial di Indonesia. Sejarah Pada saat kota Jayakarta direbut oleh Belanda, Pangeran Jayakarta Wijayakrama menyelamatkan diri ke arah tenggara kota. Tempat pengasingan tersebut merupakan daerah hutan yang dipenuhi o...

 

 

American politician John Baker HollisterMember of the U.S. House of Representativesfrom Ohio's 1st districtIn officeNovember 3, 1931 – January 3, 1937Preceded byNicholas LongworthSucceeded byJoseph A. Dixon Personal detailsBorn(1890-11-07)November 7, 1890Cincinnati, OhioDiedJanuary 4, 1979(1979-01-04) (aged 88)Cincinnati, OhioResting placeSpring Grove CemeteryPolitical partyRepublicanAlma mater St. Paul's School Yale University University of Munich Harvard Law Scho...

تفتقر سيرة هذه الشخصية الحيّة إلى الاستشهاد بمصدر موثوق به يمكن التحقق منه. فضلاً، ساهم في تطويرها من خلال إضافة مصادر موثوق بها. في سير الأحياء، يُزال المحتوى فوراً إذا كان من غير مصدر يدعمه أو إذا كان المصدر المُستشهد به مشكوكاً بأمره. (مارس 2016) سيد أحمد غزالي   رئيس الحك...

 

 

Hydrocarbon compound Not to be confused with propene or propyne. Propane Skeletal formula of propane Skeletal formula of propane with all implicit carbons shown, and all explicit hydrogens added Ball and stick model of propane Spacefill model of propane Names Preferred IUPAC name Propane[1] Systematic IUPAC name Tricarbane (never recommended[1]) Identifiers CAS Number 74-98-6 Y 3D model (JSmol) Interactive image Beilstein Reference 1730718 ChEBI CHEBI:32879 Y ChEMBL ...

 

 

Isoflavandiol estrogen metabolized from daidzein Equol Names IUPAC name (3S)-Isoflavan-4,7′-diol Systematic IUPAC name (3S)-3-(4-Hydroxyphenyl)-3,4-dihydro-2H-1-benzopyran-7-ol Other names 4',7-Isoflavandiol Identifiers CAS Number 531-95-3 Y 3D model (JSmol) Interactive imageInteractive image ChEMBL ChEMBL198877 Y ChemSpider 82594 Y ECHA InfoCard 100.007.749 KEGG C14131 Y PubChem CID 91469 UNII 2T6D2HPX7Q Y CompTox Dashboard (EPA) DTXSID0022309 InChI InChI=1S/C15H14...

Thai satellite THAICOM 8Mission logo of THAICOM 8Mission typeCommunicationOperatorThaicom PLCCOSPAR ID2016-031A SATCAT no.41552Mission duration15 years Spacecraft propertiesBusGEOStar-2ManufacturerOrbital ATKLaunch mass3,100 Kilograms Start of missionLaunch dateMay 27, 2016, 9:40 (2016-05-27UTC09:40Z) UTCRocketFalcon 9 Full ThrustLaunch siteCape Canaveral SLC-40ContractorSpaceX Orbital parametersReference systemGeocentricRegimeGeostationary   THAICOM 8 (Thai: ไทยคม 8)...

 

 

Bissell con Erin O'Brien-Moore nella pièce The Hasty Heart (1946) Whitner Nutting Bissell, meglio noto come Whit Bissell (New York, 25 ottobre 1909 – Woodland Hills, 5 marzo 1996), è stato un attore statunitense. Indice 1 Biografia 2 Vita privata 3 Filmografia parziale 3.1 Cinema 3.2 Televisione 4 Doppiatori italiani 5 Altri progetti 6 Collegamenti esterni Biografia Figlio di J. Dougal Bissell, un eminente chirurgo, Bissell fece il suo tirocinio artistico con i Carolina Playmakers, un'org...

 

 

Европейская сардина Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеГруппа:Костные рыбыКласс:Лучепёрые рыбыПодкласс:Новопёры...

Military rank in several countries Not to be confused with Sergeant first class. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: First sergeant – news · newspapers · books · scholar · JSTOR (February 2016) (Learn how and when to remove this template message) Comparative military ranks Armies,air forces (non-...

 

 

信徒Believe类型奇幻、科幻开创阿方索·卡隆主演 Johnny Sequoyah Jake McLaughlin Delroy Lindo 凯尔·麦克拉克伦 西耶娜·盖尔利 鄭智麟 Tracy Howe Arian Moayed 国家/地区美国语言英语季数1集数12每集长度43分钟制作执行制作 阿方索·卡隆 J·J·艾布拉姆斯 Mark Friedman 布赖恩·伯克 机位多镜头制作公司坏机器人制片公司华纳兄弟电视公司播出信息 首播频道全国广播公司播出日期2014年3月10日...

 

 

William Perlberg En 1958 (photo promotionnelle) Données clés Nom de naissance Wolf Perelberg Naissance 22 octobre 1900Łódź (Pologne)(alors Empire russe) Nationalité Américaine Décès 31 octobre 1968 (à 68 ans)Los AngelesCalifornie, États-Unis Profession Producteur Films notables Le Chant de BernadetteLe Miracle de la 34e rueLes Ponts de Toko-RiUn homme doit mourir modifier William Holden et Lee J. Cobb, dans L'Esclave aux mains d'or (1939) Cornell Borchers et Montgomery C...

Chilean copper company CodelcoCompany typeState-owned enterpriseIndustryMiningFounded(1955)HeadquartersSantiago, ChileKey peopleMáximo Pachecopresident of the board[1]André Sougarretpresident CEO[1]ProductsCopperRevenue US$16.0 billion (2010)Net incomeUS$5.249 billion[2]Number of employees17,880Websitewww.codelco.com Codelco (Corporación Nacional del Cobre de Chile or, in English, the National Copper Corporation of Chile) is a Chilean state-owned copper mining compa...

 

 

  「俄亥俄」重定向至此。关于其他用法,请见「俄亥俄 (消歧义)」。 俄亥俄州 美國联邦州State of Ohio 州旗州徽綽號:七葉果之州地图中高亮部分为俄亥俄州坐标:38°27'N-41°58'N, 80°32'W-84°49'W国家 美國加入聯邦1803年3月1日,在1953年8月7日追溯頒定(第17个加入联邦)首府哥倫布(及最大城市)政府 • 州长(英语:List of Governors of {{{Name}}}]]) •&...

 

 

STS-6Peluncuran STS-6Jenis misiPeluncuran satelitOperatorNASACOSPAR ID1983-026ASATCAT no.13968Durasi misi5 hari, 23 menit, 42 detikJarak tempuh3.370.437 kilometer (2.094.292 mi)Frekuensi orbit81 Properti wahanaWahana antariksaPesawat Ulang Alik ChallengerMassa luncur116.457 kilogram (256.744 pon)Massa mendarat86.330 kilogram (190.330 pon)Massa muatan21.305 kilogram (46.969 pon) AwakJumlah awak4AwakPaul J. WeitzKarol J. BobkoStory MusgraveDonald H. Peter...

Irish pickpocket For other people named George Barrington, see George Barrington (disambiguation). George BarringtonBorn(1755-05-14)14 May 1755Maynooth, County Kildare, IrelandDied27 December 1804(1804-12-27) (aged 49)Parramatta, New South WalesOccupationPickpocketCriminal chargeTheftCriminal penaltySeven years' transportationPartnerYeariana George Barrington (14 May 1755 – 27 December 1804) (real name Walden[1]) was an Irish pickpocket, popular London socialite, Australian pio...

 

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (يناير 2022) هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. ...

 

 

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: GIGA Television – news · newspapers · books · scholar · JSTOR (March 2011) (Learn how and when to remove th...

DaisyIklan Daisy di televisi selama 60 detik.Agensi Doyle Dane Bernbach Tony Schwartz Klien Komite Nasional Partai Demokrat Kampanye Pilpres AS 1964, Lyndon B. Johnson Jangka waktu60 detikTanggal perilisan7 September 1964NegaraAmerika Serikat Daisy, kadang-kadang disebut sebagai Gadis Daisy atau Damailah, Gadis Kecil, adalah iklan kampanye kontroversial di televisi sebagai bagian dari kampanye Pemilihan Presiden Amerika Serikat, Lyndon B. Johnson, tahun 1964. Meskipun secara resmi hanya dita...

 

 

American mixed martial arts fighter Jason MillerMiller in 2008Born (1980-12-24) December 24, 1980 (age 43)Fayetteville, North Carolina, United StatesOther namesMayhemResidenceAtlanta, Georgia, United StatesHeight6 ft 0 in (183 cm)Weight185 lb (84 kg; 13 st 3 lb)DivisionWelterweight (2004–2005)Middleweight (2001–2004, 2005, 2007–2012)Light Heavyweight (2006, 2016)Heavyweight (2006)Reach76 in (193 cm)StanceOrthodoxFighting out ofHuntington...