СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

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


В программе для цифровой радиопередачи FreeDV скоро можно будет проверить новый кодек в работе

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

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

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

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

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

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

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

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



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


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

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

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

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

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

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

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

комментарии (74)

+1
+2 –1
evnuh ,  
всякие ссылки поломаны, проверьте ещё раз каждую
+1
unxed ,  
преимущественно ссылки «слушать»
0
FisHlaBsoMAN ,   * (был изменён)
Можно поискать самому http://www.rowetel.com/downloads/codec2/
0
pfactum ,  
+11
smartly ,  
>Например, при цифровой передаче звука с Марса.

Предлагаю передавать сообщения текстом.
0
A-Stahl ,   * (был изменён)
<Цензура>
+4
+5 –1
smartly ,  
Описаный в статье кодек не годится для записи звуков атмосферы марса.
+2
lucius ,  
В звуках атмосферы Марса присутствует речь?)
0
dron_k ,   * (был изменён)
Могут быть ситуации в рамках каких либо оперативных процедур,
когда набирать текст неудобно или нет времени…
Распознавание же речи пока не может быть использовано в критических отраслях изза вероятности ошибок.
+1
rusec ,  
радиосигнал до Марса идёт несколько минут в одну сторону. Какая уж тут оперативность.
0
TheShock ,  
Ремонт прибора, когда руки заняты.
+1
Hellsy22 ,   * (был изменён)
Чуть больше, чем несколько минут.
Мне тоже показался пассаж про Марс странным — оттуда картинки в высоком качестве передают с приличной скоростью.
+1
+2 –1
rusec ,  
ну да. Если я правильно делю 56-400 000 000 км на скорость света, то от 3 до 22, в зависимости от взаимного расположения планет. А что Вас удивляет? Скорость света конечна, даже до геостационара задержка чувствуется, пинг через спутник заметно больше чем по подводному кабелю, а Марс намного дальше.
–1
dron_k ,  
>>>радиосигнал до Марса идёт несколько минут в одну сторону. Какая уж тут оперативность.
Голосовое сообщение в любом случае будет отправлено быстрее чем печатаное.
0
eZjik ,  
лазером передавать
+6
OvO ,  
голос надо кодировать в буквы, а текст сжимать
+5
kryvichh ,   * (был изменён)
Оптимальный голосовой кодек будет: текст в фонетической транскрипции + параметры отдельных звуков + описание физических особенностей речевого аппарата говорящего (передается в начале передачи один раз).

Правда, такой кодек не закодирует всхлипы, кашель, крик ужаса и т.п.
+11
+12 –1
spiritube ,  
Например, при цифровой передаче звука с Марса.

И для хранения голосового трафика согласно «Закону Яровой» тоже очень полезен.
+9
+10 –1
salopot ,  
Это еще мелочи, вот если Роскосмос таки решит отправить космонавтов куда-нибудь на марс, то по закону о «Персональных данных» им прийдется все переговоры записать до отлета и хранить в серверах на территории России. Иначе скорость света будет оштрафована…
0
darthmaul ,  
Лучше пусть вакуум штрафуют. Вроде как отрицательная масса могла бы помочь создать варп двиатель :)
+1
Nine_tailed ,  
Государственной территорией считаются (условно) также морские суда, воздушные и космические корабли, носящие флаг соответствующего государства.
0
salopot ,  
Вы полагает что гугл может припарковать в Норфолке частный корабль зарегистрированный в Росии и спокойно размещать там персональные данные граждан РФ. Именно это вы увидели в законе?

P.S. Нужно предложить на хабре универсальную кноку чтоб одновремнно понижать и статус комментария и карму. А-то какой-то бедняга заминусовав комент вынужден еще переходить в профиль и третий клик на карме. Как-то не user friendly получается
0
Nine_tailed ,  
Я не юрист и не могу сказать можно ли так сделать и таким образом обойти данный закон. Вполне может быть там есть специальный пункт для экстерриториальности (именно это вы описали — российское судно в порту иностранного государства).
+2
kosmos89 ,  
Интересно, а на МКС есть таможня между национальными сегментами?
0
LynXzp ,  
А вдруг стеганография? Не хорошо получается. Пусть во flac хранят :)
+3
Alyoshka1976 ,  
Этот кодек будет очень востребован в любительской радиосвязи на сверхдлинных волнах (в «диапазоне мечтателей» ниже девяти килогерц).
+2
unxed ,  
А как любители мастерят антенны для сверхдлинных волн?
+1
ZekaVasch ,  
ну один например подключился в лееру ограждения на дороге. Несколько км антенны для приема сигналов с подводных лодок.

На форумах Радиосканер ру поройтесь
+2
Alyoshka1976 ,  
Там всё ограничено фантазией :-) Вот, например, воздушный змей тянет вверх провод:
image
Или просто вертикальный провод, подвешенный к башне, с вот такой эпической удлиняющей катушкой:
image
Но это всё передающие. Приемные намного проще — я, например, использую вот такую немудреную снасть :-):
image
0
+1 –1
ruzzzz ,  
Отличная новость!
0
Tyrauriel ,  
Интересно, почешется Росгидромет, чтобы внедрить этот кодек у себя?
У них есть спутниковые терминалы двусторонней передачи данных, через свои собственные спутники.
Там ограничение до 1200 бит.
–1
stalinets ,  
Интересно было бы увидеть программку для IP-телефонии с этим кодеком, чтобы даже на смартфонах, находящихся в зоне 2G/GPRS была возможна устойчивая голосовая связь по IP.
–5
arheops ,  
https://speex.org/docs/manual/speex-manual/node10.html
250бит крайний кодек.
поддерживается asterisk
+2
Lertmind ,  
Что значит «крайний»? Почему вы указали «250 бит», если при 250 битах передачи голоса не происходит (No transmission (DTX))? Также:
There are 7 different narrowband bit-rates defined for Speex, ranging from 250 bps to 24.6 kbps, although the modes below 5.9 kbps should not be used for speech.
+1
arheops ,  
У кодека для телефонии, кстати, должно быть еще два свойства 1) Слабая заметность потери единичного пакета 2) малый пакет/small latency. Этот кодек, вроде бы, оба свойства не имеет.
0
insekt ,  
Откуда такие свойства проистекают?
0
gxcreator ,  
1. Чтобы небольшие потери пакетов не искажали речь
2. Чтобы не было задержки речи собеседника.
+1
arheops ,  
Ни откуда не проистекают. Потому кодеки и дают компрессию меньше, чем mpeg. Они так разрабатывалися. Свойство 2 не нужно только кодекам работающим через спутник, задержка в 100мс(через океан) уже человеком опознается. Ну и даже вайфай иногда выдает за 100мс задержки, что аналогично потере пакета, не говоря уже о сети в общем, в которой потери есть почти всегда.
0
ValdikSS ,  
GPRS и устойчивая голосовая связь противоречат друг другу. На GPRS пинг временами может быть в секунду и больше, а все популярные VoIP-библиотеки не слишком устойчивы к такому широкому джиттеру.

С EDGE, как правило, можно пользоваться кодеком OPUS с битрейтом в 8-12 кбит/с без особых проблем. Качество речи сносное: https://files.catbox.moe/0wz4a7.opus
0
nikolayv81 ,  

В edge работает скайп с видео! Проверено в деревне при ручном переключении модема в 2g из-за того что в 3g связь нестабильна и постоянные разрывы были. Да качество видео конечно не ахти но понять кто перед экраном можно, если не двигается быстро, а звук абсолютно нормальный для общения.

0
+1 –1
Dum_spiro_spero ,  
Я кажется чего-то не понимаю. А в чем проблема связи с Марсом? До Марса в среднем 225 млн. км, радиоволна пройдет это расстояние за 12.5 минут. Все равно ж связь по радио, а не модем на 300 бод. Можно произнести монолог и отправить его хоть в hi-res audio.
Или нет?
Погуглил радиомодемы — пишут 25 кГц, 19.2 кбод. Пишут, что скорость передачи почему-то завязана на энергию.
Кто бы на пальцах объяснил?
+1
arheops ,  
Чем больше скорость передачи, тем более критичен сигнал к шумам(падает соотношение сигнал-шум). Тоесть используя низкоскоростной канал, вы можете использовать меньше антенну и/или слабее передатчик. К примеру вместо 30м тарелки и 50кватт передатчика, 5м тарелку и 10кватт передатчик(что уже проще, правда?)
0
ZEvS_Cat ,  
+1. А еще, чем выше скорость передачи, тем шире полоса частот, необходимая для такой передачи. А чем шире полоса, тем потребуется бОльшая мощность.
0
arheops ,   * (был изменён)
Не совсем так. Полоса может быть и узкая, или 10 узких, просто расширять полосу на данном этапе проще, чем еще поднять мощность. Вообще в идеале надо иметь бесконечное число сверх-узких полосок, но это невозможно по физическим причинам(кроме варианта лазеров, которые именно такие полоски и дают — практически одна частота).
0
ZEvS_Cat ,  
Вот я и написал, что выгоднее сужать полосу (понижая скорость передачи — объем данных в секунду), чем увеличивать мощность передатчика.
0
Alexeyslav ,  
Связано это с количеством информации которую переносят радиоволны. Современные системы связи работают практически на пределе теоретических возможностей — около 1 бита на квант. Если бы существовал способ передать сигнал без потерь и рассеивания, то скорости были бы гораздо выше но антенны они такие, даже у направленных антенн сигнал с расстоянием расходится и плотность в точке приёма падает. Да, если бы приёмник мог сконцентрировать всю энергию переданную передатчиком, было бы не так плохо всё, но для этого нужны будут поистине гигантские антенны. А пока, инженеры вынуждены удовлетворяться приёмом только небольшой части энергии отправленного сигнала.
Причем с земли отправить гораздо проще — тут нет особых ограничений на размер антенны и мощность излучения, а на автономном аппарате в глубоком космосе весьма строгие ограничения как на размер антенны так и излучаемую мощность.
А потом ещё соотношение сигнал/шум портит малину, но матемаическими методами вроде бы добиваются определённых успехов, приближаясь к теоретическому пределу возможностей передачи информации. Это, к примеру, позволило на тех же антеннах повысить скорость передачи/расстояние надёжной связи до вояджера. На старых технологиях имели бы на таком расстоянии скорость в несколько бит в секунду.
0
ZEvS_Cat ,   * (был изменён)
> Dum_spiro_spero

В общем, популяризирую, совсем на пальцах.
Проведите, вместе со мной умозрительный эксперимент.
У Вас есть передатчик и приемник. Передатчик мощностью 1 мВт, и приемник (какой-то чувствительности). Допустим, передатчик передает 10 кбит/сек.
Теперь представьте, что необходимо передавать 20 кбит/сек.
Как можно поступить?

Вариант 1. Поставить еще один передатчик, точно такой-же, который будет передавать вторые 10 кбит, на соседней частоте. Тоже 1 миливаттный. И конечно второй приемник.
Да, теперь два одномиливаттных передатчика, излучая 2 миливатта передают 20 кбит/сек, и
два приемника их принимают.

Вариант 2. Расширить полосу передатчика в два раза, и увеличить мощность до двух мВт.
Теперь этот передатчик может также, как и в варианте 1, передавать 20 кбит/сек.

С точки зрения физики, нет никакой разницы между первым и вторым вариантом. Не в энергетическом, не в скоростном плане, просто разная схемотехническая реализация.
0
YegorVin ,   * (был изменён)
«Расширить полосу передатчика»
Что вы подразумеваете под полосой, увеличение частоты несущей?
0
ProstoUser ,  
Завязка на энергию простая.

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

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

Простейший пример. Пусть мы передаем сигнал амплитудной модуляцией. Мы можем передавать единичку максимальным уровнем, а ноль нулевым. При этом достаточно просто понимать, есть сигнал или нет сигнала. Надежная передача получится в том случае, если уровень шумов будет таким, что не «заглушит» несущую, если она есть и не даст ложного срабатывания ее нет. Для надежного определения факта наличия несущей можно увеличить время ее определения в принятом сигнале. Чем более длинный кусок эфира мы анализируем, тем меньше вероятность ошибки. Если же мы можем различать уровни амплитуды, например, 0, 1/3, 2/3, 1, то за одно изменение синала мы сможем передать уже не один бит, а целых два. Но для этого надо, чтобы уровень шума был меньше, чем в предыдущем случае. Чтобы различать не только факт наличия несущей, но и ее «громкость».

Ну а единственный способ увеличить соотношение сигнал/шум при выбранных параметрах передатчиков, модуляции и антенн — увеличить мощность сигнала.

Вот как-то так. Немного путано, но, надеюсь, понятно.
+1
ZEvS_Cat ,  
Интересно, как получается FFT 512, если на входе только 80 отчетов?
0
Halt ,   * (был изменён)
Zero padding плюс, скорее всего, там скользящее окно, то есть старые данные не выбрасываются а сдвигаются.
0
ZEvS_Cat ,  
Да, подумал про это. Наверное, исходя из 320 отчетов делается долговременное предсказание.
0
Deosis ,  
Написано, что используется 320 отсчетов, для БПФ дополняют до степени двойки.
80 — это количество новых отсчетов каждые 10 мс.
0
arthi7471 ,  
«PSK-модем — устройство для относительно нового цифрового вида».

Штаааа? Да PSK сто лет в обед.
0
SopaXT ,  

Да, но этот модем использует несколько несущих, и был специально разработан для FreeDV.

+1
Newbilius ,  
Ни в 1300, ни в 700C не могу разобрать текст целиком, только отдельные слова выхватываю, и то ненадёжно. А вот Codec2 v0.1 (2550 бит/с) и MELP (2400 бит/с) звучат гораздо разборчивей.
+1
Nihonjin ,   * (был изменён)
Вполне разборчиво, если прослушать сообщение 5+ раз, каждый раз проматывая в голове возможные варианты сказанного :D
Вообще, мне думается что англофонам не составит труда понять речь и с первого раза.
+2
ZEvS_Cat ,  
Я даже слушать не стал. Считаю, разборчивость надо оценивать на родном языке.
+1
hzs ,  
Я разницу между 1300 и 700 вообще на слух не различил, и там и там голос вполне отчётливо слышно.
В условиях очень больших расстояний и стоимости оборудования, 700C может быть очень хорошим вариантом.
+1
vanxant ,  
Ну не знаю, в последнем сэмпле голос-то слышно, вот только текст не разобрать) В обоих вариантах.
0
hzs ,  
Там не особо текст, там приветствие с произношением позывных: Hello CQCQCQ. Calling CQ. This is KA9Q. А дальше действительно неразборчиво, но это скорее всего связано с моим фиговым английским ну и произношение у говорящего явно хромает.
Вероятно пример последних семплов и был добавлен чтобы показать, что качество 700С не хуже и что если на сжатом им файле ничего не разобрать, то и на кодеке с увеличенном вдвое битрейте будет не лучше.
–1
+1 –2
DjOnline ,  
После прекрасного качества голоса в Skype, который звучит даже лучше чем в сотовой связи, здесь что на 1300 что на 700 вообще ничего не разобрать.
0
h31 ,  
Скайп совсем для других целей создавался. У него битрейт в разы выше.
0
aram_pakhchanian ,  
Все вполне очень отчетливо слышно – примерно как в любительском эфире, откуда часть записей и взята. Качество для целей служебной радиосвязи вполне удовлетворительное.
0
Killy ,   * (был изменён)
Спектр для образца vk5qi.
Вверху 700С, внизу 1300.
image
(PNG 2.2 МБ)
В 700С лучше видны верхние гармоники. А нижние зачастую хуже видны или немного искажены. (Не хватает оригинала для сравнения.)
Для меня 700С звучит более резко, но менее разборчиво из-за искажений, что согласуется с наблюдением, сделанным при сравнении спектров.
0
vit1251 ,  
Рисовали в MathCad? Подскажите название этого инструмента?
0
Killy ,  
Это скриншот из ocenaudio всего-навсего.
(Рекомендую в качестве альтернативы для Audacity.)
0
Killy ,  
Тем, кто со звуком работает, ещё Sonic Visualiser должен быть знаком.
0
Alyoshka1976 ,  
Любителям радиомониторинга такая спектрограмма-«водопад» тоже знакома по работе с такими программами как SDR# и Spectrum Lab.
0
kissarat ,  
Если записывать голос 50 лет по 8 часов в день то получится 43 Гб
0
ZEvS_Cat ,  
Вот еще вопрос. 700 бит/с, в «кадре» содержится 10 ms, значит в секунде 100 «кадров».
Что, каждый «кадр» по 7 бит?!?
0
amarao ,  
У Винжа разбирался такой вариант кодека: старательно тренируемая нейронная сеть (а-ля deepdream) учится «говорить как человек», т.е. получать на вход текст с маркерами эмоций, а выдавать звук. (и обратная задача, но это не важно сейчас).

Соответственно, при передаче по сверхнизкому каналу передаётся текст, если есть полоса — маркеры интонаций, если есть полоса — подстроечные коэфиценты для нейронной сети для передачи голоса.

При этом даже если канал падает до минимально возможного, мы всё ещё слышим речь, но «механическую». Если полоса широкая — нейронная сеть воспроизводит голос неотличимо от оригинала.
0
delvin-fil ,  
Может я чего-то не понимаю, но как по «ВАВ» судить? А по ссылкам именно wav.
0
ValdikSS ,  
wav получились путем сжатия исходной записи и разжатия обратно в wav.