- PVSM.RU - https://www.pvsm.ru -

Новый кодек Codec2 700C сжимает речь до 700 бит-c

Новый кодек Codec2 700C сжимает речь до 700 бит-c - 1
В программе для цифровой радиопередачи FreeDV скоро можно будет проверить новый кодек в работе

Автор свободного голосового кодека Codec2, предназначенного для сверхплотного кодирования речи на голосовых каналах, выпустил новую версию Codec2 700C [1], в которой ему удалось закодировать различимую человеческую речь всего в 700 бит/с. Это значит, что трёхсекундная голосовая передача с различимой речью займёт всего лишь 260 байт.

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

Такое сверхплотное сжатие может пригодиться не только для космического применения, но также для любительского радио и для различных военных задач, спутниковой связи, закриптованных устройств. Например, сейчас армия США использует стандарт кодирования MELP [2] (Mixed Excitation Linear Prediction), но это интеллектуальная собственность компаний Texas Instruments (алгоритм и исходный код кодека MELP на 2400 бит/с), Microsoft (транскодер 1200 бит/с), Thales Group (600 бит/с) и AT&T (препроцессор шума). Этот же проприетарный стандарт MELP используется в спутниковых коммуникациях, защищённой голосовой связи и защищённых радиопередатчиках. Стандартизация и разработка MELP велась при поддержке АНБ и НАСА.

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

Разработчик звукового кодека Codec2 — Дэвид Роуи [3] (David Rowe). Он ведёт проект уже несколько лет. Первая альфа-версия Codec2 вышла ещё в сентябре 2010 года [4]. Этот инженер ранее приложил руку к созданию свободного аудиоформата для кодирования речи Speex [5], разработка которого была прекращена в пользу свободного формата Opus [6]. Затем Дэвид поставил задачу добиться передачи голоса в коммуникационном качестве в потоке 2400 бит/с и ниже, то есть сделать свободную альтернативу MELP.

«Я продолжаю работу над разработкой режима цифрового кодирования голоса, который может конкурировать с однополосной модуляцией [7], — пишет [1] Дэвид Роуи. — На большую часть 2016 года я отвлёкся от этой работы и занимался оплачиваемым проектом коммерческого высокочастотного (HF) модема. Но с декабря я снова работаю над кодеком 700 бит/с. Цель состоит в том, чтобы обеспечить качество примерно такое же, как у нынешнего режима 1300 бит/с. Это можно использовать в когерентном PSK-модеме, а может и в 4FSK-модеме при испытаниях на каналах HF».

Уместно пояснить, что PSK-модем — устройство для относительно нового цифрового вида передачи информации с узкополосной двухпозиционной фазовой модуляцией.

Автор проделал немалую работу, чтобы оптимизировать кодек. Блок-схема обработки сигнала в новом кодеке показана ниже. Дэвид Роуи пишет, что ключевым этапом этого алгоритма является передискретизация (ресэмплинг), когда варьируемое по времени количество амплитуд гармоник преобразуется в фиксированное количество (K=20) сэмплов. На низких частотах берётся больше сэмплов, чем на более высоких частотах, что соответствует логарифмическому восприятию человеческим ухом. Экспериментальным путём Дэвид пришёл к величине именно K=20.

Новый кодек Codec2 700C сжимает речь до 700 бит-c - 2

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

Новый кодек Codec2 700C сжимает речь до 700 бит-c - 3
3D-график соотношения амплитуды в дБ по времени (300 кадров) с параметром передискретизации K=20 частотных векторов для звукового образца hts1a (его можно прослушать ниже в таблице). Видно изменение сигнала во времени и низкие значения на высоких частотах, которые хуже воспринимаются человеческим ухом

Вообще, проблему дефицита свободных кодеков в дитапазоне до 5 кбит/с поднял Брюс Перенс [8] в 2009 году. Он связался с разработчиками Speex и предложил им изучить ситуацию. Codec2 основан на научных работах 60-80-х годов и вроде не подпадает под действующие патенты. Cинусоидальное кодирование речи впервые упоминается в 1984-м году, а сам Роуи подробно описал техники гармонического синусоидального кодирования в своей научной работе 1997 года. Кодек опубликован под свободной лицензией LGPL2.

На образцах ниже можно сравнить образцы предыдущей версии кодека на 1300 бит/с и новой версии на 700 бит/с.

Образец 1300 700C
hts1a Слушать [9] Слушать [10]
hts2a Слушать [11] Слушать [12]
forig Слушать [13] Слушать [14]
ve9qrp_10s Слушать [15] Слушать [16]
mmt1 Слушать [17] Слушать [18]
vk5qi Слушать [19] Слушать [20]
vk5qi 1% BER Слушать [21] Слушать [22]
cq_ref Слушать [23] Слушать [24]

У каждого человека свои особенности слуха, поэтому автор просит оставить отзывы: насколько различимыми вам кажутся образцы на 700 бит/с, в сравнении с образцами на 1300 бит/с? Дэвид Роуи считает, что они примерно одинаковые: некоторые образцы немного лучше (cq_ref), а другие чуть хуже (ve9qrp_10s, mmt1). Артефакты везде разные. Но в любом случае — это ведь почти двукратное сокращение полосы!

Для сравнения, вот сравнение альфа-версии кодека Codec2 v0.1 (2550 бит/с) от 2010 года и проприетарного кодека MELP (2400 бит/с).

Мужской голос:
Оригинал [25]
Codec2 v0.1 (2550 бит/с) [26]
MELP (2400 бит/с) [27]

Женский голос:
Оригинал [28]
Codec2 v0.1 (2550 бит/с) [29]
MELP (2400 бит/с) [30]

В ближайшие недели Дэвид Роуи собирается открыть кодек 700C через интерфейсы для программы цифрового радио FreeDV [31] и провести первые испытания в эфире.

Автор: alizar

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/234189

Ссылки в тексте:

[1] Codec2 700C: http://www.rowetel.com/?p=5373

[2] MELP: https://en.wikipedia.org/wiki/Mixed-excitation_linear_prediction

[3] Дэвид Роуи: http://www.rowetel.com/?page_id=434

[4] сентябре 2010 года: https://habrahabr.ru/post/104662/

[5] Speex: https://speex.org/index.shtml.en

[6] Opus: http://opus-codec.org/

[7] однополосной модуляцией: https://ru.wikipedia.org/wiki/Однополосная_модуляция

[8] Брюс Перенс: http://perens.com/

[9] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/hts1a_1300.wav

[10] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/hts1a_700c.wav

[11] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/hts2a_1300.wav

[12] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/hts2a_700c.wav

[13] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/forig_1300.wav

[14] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/forig_700c.wav

[15] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/ve9qrp_10s_1300.wav

[16] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/ve9qrp_10s_700c.wav

[17] Слушать: https://www.pvsm.ru/downloads/codec2/newamp5/mmt1_1300.wav

[18] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/mmt1_700c.wav

[19] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/vk5qi_1300.wav

[20] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/vk5qi_700c.wav

[21] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/vk5qi_1300_ber0.01.wav

[22] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/vk5qi_700c_ber0.01.wav

[23] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/cq_ref_1300.wav

[24] Слушать: https://www.pvsm.ru/downloads/codec2/newamp6/cq_ref_700c.wav

[25] Оригинал: http://www.rowetel.com/downloads/codec2/hts1a.wav

[26] Codec2 v0.1 (2550 бит/с): http://www.rowetel.com/downloads/codec2/hts1a_c2_v0.1.wav

[27] MELP (2400 бит/с): http://www.rowetel.com/downloads/codec2/hts1a_melp.wav

[28] Оригинал: http://www.rowetel.com/downloads/codec2/hts2a.wav

[29] Codec2 v0.1 (2550 бит/с): http://www.rowetel.com/downloads/codec2/hts2a_c2_v0.1.wav

[30] MELP (2400 бит/с): http://www.rowetel.com/downloads/codec2/hts2a_melp.wav

[31] FreeDV: http://freedv.org/tiki-index.php

[32] Источник: https://geektimes.ru/post/284676/