Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Речевой кодек для задачи, поставленной GeGel
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3
Милливольт
Примерно год назад на этом форуме обсуждалась тема разработки "криптофона". Тема называлась "Проброс канала..." Предполагалась возможность создания ЗАС для обычного сотового.
У меня появилось (увы) свободное время, и эта задача не оставляла в покое. Через какое-то время стало понятно, что для ее решения необходим кодек совершенно необычного типа. Я попытался его изготовить на базе собственной гипотезы о формировании акустического сигнала в речевом аппарате.
Результаты первых (весьма несовершенных проб) представлены:
Исходный сигнал 128Кбит/сек - http://exfile.ru/482652
Сигнал после кодирования/декодирования с потоком 0.25 Кбит/сек, (приведенный к 128Кбит/сек после декодирования) здесь: http://exfile.ru/482653 (слышны погрешности интерполяции, но это уже в процессе устранения)
В данном случае поток- динамический, задержка не более 20 мсек, корреляция кластера и посылаемого фрагмента не хуже 0,975 (Пирсон).
Основное отличие от существующих кодеков заключается в том, что индивидуальные характеристики речи абонента изначально (один раз) отправляются в цифровом виде реципиенту. А дальше идет нормальный обмен с низкой скоростью. Это существенный недостаток, т.к. без этих данных на приемном конце будет голос без индивидуальных особенностей, либо чужой.
К достоинствам, как мне кажется, можно отнести работу исключительно во временной области, т.е. тестовая речь "нарезается" на куски-кластеры, они классифицируются, и получается новый "алфавит", который и передается. Приемник собирает сигнал, интерполирует что нужно, и подает на акустический тракт.
А для базовой задачи (криптофона) можно предложить передавать не цифру, а просто перепутанные кластеры. Т.к. в криптографии я понимаю мало, то предполагаю, что тов. Вернам здесь может быть уместен.
Я писал на почту ув. GeGel, но ответа не было. А форум я немножко захламляю в надежде неформальной экспертизы: нужен ли такой кодек, и для чего он может быть применен. Это важно, т.к. из меня программист как из говна пуля, и до реализации в реалтайме, да еще на смартфоновских процессорах, я это дело точно не доведу. А вкладываться фирмой в неоднозначные перспективы - неразумно.
z64
Народ работает в этой теме (Voice over GSM): http://mttgroup.ch/
Милливольт
Цитата(z64 @ Sep 24 2016, 15:27) *
Народ работает в этой теме (Voice over GSM): http://mttgroup.ch/



Спасибо, будем изучать.
GeGeL
Не получал от Вас ничего в последнее время, возможно, спам-бот резал.

Свой проект я более-менее довел до ума:
web: http://torfone.org/pairphone/indexru.html
github: https://github.com/gegel/pairphone
paper (EN): http://torfone.org/download/pp1a_doc.pdf

По наличию времени портирую код в отладку NUCLEO-STM32F446R с цифровой аудио-шиной к GSM-модулю Quectel M66, а пока код собирается gcc (Linux)/mingw(Windows) для PC с двумя аналоговыми аудио-интерфейсами (необходимо дополнительное USB- или Bluetooth- аудио).
Результаты тестирования на реальных GSM-каналах переменчивые. Например, в одном регионе между абонентами Life baseband-сигнал модема проходит отлично (BER=0.2%), а в другом - даже нет синхронизации (на линии включается дополнительное транскодирование, похоже, NB AMR, не смотря на то, что на обоих сторонах определяются GSM FR кодеки). Так что не все так просто, как рисуют китайцы.

Что касается упомянутого выше проекта, я с ним знаком (первая ссылка в моем paper, есть еще похожие работы, в том числе отечественные), но даный подход не может считаться криптографически надежным и по сути является шифрованием "от младшей сестры". Любые престановки имеют весьма малую фактическую длину ключа и позволяют легко восстановить исходный сигнал, имеющий очень четкую статистику для голоса.

Так что проблема надежного модема, пригодного для реальных GSM сжатых каналов, является теоретически сложной и пока открыта. Лично я считаю, что теоретическая оценка дата-емкости сжатого канала по ссылке 15 неверна, и вряд-ли удастся гарантированно надежно передать поток свыше 600bps. Так что вопрос упирается в исходник MELPE-600 или аналогичных по качеству кодеков.

Милливольт
Цитата(GeGeL @ Sep 25 2016, 10:08) *
Не получал от Вас ничего в последнее время, возможно, спам-бот резал.


Так что проблема надежного модема, пригодного для реальных GSM сжатых каналов, является теоретически сложной и пока открыта. Лично я считаю, что теоретическая оценка дата-емкости сжатого канала по ссылке 15 неверна, и вряд-ли удастся гарантированно надежно передать поток свыше 600bps. Так что вопрос упирается в исходник MELPE-600 или аналогичных по качеству кодеков.



А я уж было подумал, что Вы меня записали в апологеты старшего брата, в обскуранты и охранители Оруэлловских чудищ.

Насчет пригодного модема: ну, конечно, так. Надо дожимать до 300 и менее бит в секунду - тогда дело точно пойдет. Но существующая модель голосового тракта не способствует разработке таких кодеков.
Кстати, для голоса, характеристики которого записаны ранее и в передатчике и в приемнике, мне удалось получить поток (при дополнительном сжатии выходной цифровой последовательности) около 150 бит/сек (самому неудобно писать такое, бо не поверят). При этом качество не пострадало никак, за исключением замены низкоамплитудных участков сигнала "комфортным шумом".

Спасибо за комментарий, пошел читать Ваши ссылки.
z64
Не хочу давать советы, но:
1. 0.2 - многовато. Для MELP 600, не более 10-3.
2. С BT мы намаялись, что дальше некуда. Может Вам повезёт. В ВТ для режима HF ( а он Вам и нужен) есть неприятный эффект пропадания отсчётов. Для модема это - приговор. Учитывая, что в GSM есть пропадание отсчётов, то делайте выводы. Кстати Вы говорили про джитттер, мне кажется вернее назвать проскальзованием отсчётов.
Милливольт
Цитата(z64 @ Sep 25 2016, 10:42) *
Для модема это - приговор. Учитывая, что в GSM есть пропадание отсчётов, то делайте выводы. Кстати Вы говорили про джитттер, мне кажется вернее назвать проскальзованием отсчётов.


Позволю себе добавить, что величина джиттера прямо пропорционально (как ни странно) радиочастотному качеству работы (в простейшем случае - расстоянию от соты до телефона). Наши инженеры уверены, что в данном случае гадит собственная ППРЧ канала, но достоверного эксперимента поставить пока не удалось.
Дополнительным подтверждением может быть тот эффект, что у нас (транстелефонная ЭКГ) при плохой GSM связи первым делом слетает синхронизация FSK посылок...
z64
По радиочастотной тематике не я не спец. Могу только сказать, что из Европы, Прибалтики и Кавказа, при тестировании, модем работает вполне устойчиво. Два два часа до дачи в Подмосковье на машине - хорошо. Если настройки M66 выставлены правильно, то ошибки возникают после пропадания вокодерных кадров в самой сети. Я делали пакетную передачу, это не классический модем.
GeGeL
Цитата(z64 @ Sep 25 2016, 12:42) *
0.2 - многовато. Для MELP 600, не более 10-3.


MELP600 у меня, к сожалению, нет, не могу оценить. MELP1200 вполне толерантен к 2*10-2.

Цитата(z64 @ Sep 25 2016, 12:42) *
В ВТ для режима HF ( а он Вам и нужен) есть неприятный эффект пропадания отсчётов. Для модема это - приговор.


Да, BT только в качестве гарнитуры. Для линии подойдет USB-аудиокарта.

Цитата(z64 @ Sep 25 2016, 12:42) *
Кстати Вы говорили про джитттер, мне кажется вернее назвать проскальзованием отсчётов.


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

Цитата(z64 @ Sep 25 2016, 12:42) *
Я делали пакетную передачу, это не классический модем.


А какая у Вас модуляция используется, если не секрет?
z64
Могу лишь сказать, что одна из стандартных. Тут дело не в конкуренции, просто не вольно мы можем выпустить джина из бутылки. Это весьма специфическая область на бытовом уровне не применимая. Посудите сами как после качественного голоса в обычном мобильном выглядит речь на 1200 и тем более 600 bps? Тем не менее эта проблематика, думаю, имеет право на жизнь. Можно долго спорить на какую скорость можно выйти, но мой опыт показал, что практически всегда гарантированно достигается 800bps. Да, 1200+ хорошо работает если на приеме и передаче установлен EFR, не вопрос. НО! сеть не всегда не предоставляет такой режим. FR- практически всегда.
MSP430F
Всем доброго времени суток!
Очень интересная тема здесь обсуждается! Такие мизерные битрейты просто обескураживают, автору респект!
Но почему-то у меня возникла ассоциация с фильмом "В круге первом", там разрабатывали шифрованную телефонию для Сталина.
Мне кажется, что использование криптографии в телефонной связи - вещь весьма специфическая и вряд ли во-первых необходимая для 99 процентов населения, а во-вторых безопасная с точки зрения заинтересованности в личности шифрующихся индивидуумов соответсвующих органов. Поэтому, для кого китайцы разрабатывают свои крипто-девайсы, не совсем понятно. Ну это мое ИМХО, возможно, я чего-то не понимаю в жизни.
Милливольт
Цитата(MSP430F @ Sep 29 2016, 08:25) *
Всем доброго времени суток!
Очень интересная тема здесь обсуждается! Такие мизерные битрейты просто обескураживают, автору респект!
Но почему-то у меня возникла ассоциация с фильмом "В круге первом", там разрабатывали шифрованную телефонию для Сталина.
Мне кажется, что использование криптографии в телефонной связи - вещь весьма специфическая и вряд ли во-первых необходимая для 99 процентов населения, а во-вторых безопасная с точки зрения заинтересованности в личности шифрующихся индивидуумов соответсвующих органов. Поэтому, для кого китайцы разрабатывают свои крипто-девайсы, не совсем понятно. Ну это мое ИМХО, возможно, я чего-то не понимаю в жизни.


К сожалению, Вы совершенно правы. Разработка подобных вещей для гражданского применения и бессмысленна, и грозит неприятностями в случае успеха. Не знаю побудительных мотивов ув. GeGel, а у меня их два: в случае успеха получится великолепный компрессор для ЭКГ, позволяющий к тому же при необходимости передать через любой(!) акустический канал фрагмент Холтеровской записи в условиях, описанных ( http://tredex-company.com/ru/kak-rabotaet-telecard ). Второе - простое любопытство: речь ведь энергетически неоптимальна как вследствие узкой базы сигнала, так и высокого пик-фактора (эволюция не довела до совершенства). А низкобитрейтовый оптимизированный для канала связи сигнал будет иметь более высокий энергетический потенциал линии. И это может быть интересно для радиолюбительской связи.
petrov
Цитата(MSP430F @ Sep 29 2016, 10:25) *
Ну это мое ИМХО, возможно, я чего-то не понимаю в жизни.


1. Научно-техническое творчество - абсолютная ценность, тут и обсуждать нечего.

2. Такие вещи полезны для общества как естественный противовес против тотального перевеса в игре одного субъекта по отношению к другим субъектам.
Mister_DSP
Очень интересная ИМХО тема, жаль что заглохла.

Тоже сейчас занимаюсь передачей/приемом голоса с помощью вокодера и RFM96.

В качестве вокодеров использую собственные моды на базе Codec2 и MELP.
У Codec2 битрейт 300 бит/с, у MELP 600 бит /с.

В первом варианте: дальность больше, качество речи ниже.
Во втором наоборот.

Ссылка на тему в другом форуме (на подобие дневника): http://vrtp.ru/index.php?showtopic=27904&st=90

Вопрос аудитории: можно ли радиолюбителю физ-лицу купить проприетарные кодеки на DSPINI и работать с сорцами под NDA?
Милливольт
Цитата(Mister_DSP @ Nov 5 2016, 13:22) *
Ссылка на тему в другом форуме (на подобие дневника): http://vrtp.ru/index.php?showtopic=27904&st=90



Спасибо за ссылку, очень интересно.
Справедливое (по Вашей ссылке) замечание о неуниверсальности решения с предварительной отправкой "алфавита" в цифровой форме.
Пытаюсь обойти эту трудность - сделать алфавит универсальным. Пришлось отказаться от иллюстраций во временной области - звук, увы, в этом случае становится "вокодерным".
В общем, для любительской связи, как мне кажется, дело может оказаться перспективным. Здесь есть важная деталь: для нешифрованной речи нет смысла стремиться к сверхнизкому битрейту: главное, чтобы сигнал помещался в отведенной полосе и имел более низкий пик-фактор, чем речь. Кроме того, если удастся реализовать на приеме "идеального наблюдателя" плюс нечувствительность к пропаданию пакетов, то энергетический выигрыш в цифровой радиолинии может быть больше, чем у сверхнизкоскоростных кодеков.
Результаты экспериментов для скорости 800 бит/сек и разных вероятностей ошибки (модуляция - двухчастотная FSK, требуемая полоса - 400...2400Гц). Слова, понятное дело, выбраны несуществующими для оценки разборчивости.

1. Исходный кодированный/декодированный сигнал http://exfile.ru/483068
2. Ошибка 1*10-1 http://exfile.ru/483065
3. Ошибка 5*10-1 http://exfile.ru/483066
3 Ошибка 8*10-1 http://exfile.ru/483067


Mister_DSP
Милливольт, спасибо за поддержание темы и беседу!
Было интересно скачать и послушать образцы звуков.

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

Я пытаюсь сейчас найти свой "критерий Шеннона", компромисс своего рода между разборчивостью речи и дальностью связи, которая зависит от чувствительности приемника. Более низкий битрейт позволяет либо с-узить полосу пропускания приемника, либо увеличить спред-фактор, либо навернуть бОльший коэфициент избыточности в FEC (в RFM96 она аппаратная 5/4 ... 8/4). Забыл написать, что в ней корелляционный приемник, могущий принимать сигнал на десятки децибелл меньше шума.

Моя цель: сделать сверхдальние приемо-передатчики для служебной связи. Вопросы шифрования имеют второстепенное значение.

В вашем же проекте как я понял, основной упор идёт на протаскивание зашифрованного канала через сети GSM с устойчивостью к атакам взлома и де-анонимизации всех мастей.
Тоже интересное направление и восстребованное как и хорошими так и плохими дядьками sm.gif - крайне рисковано.

Нашёл тему про проброс канала здесь на форуме (старая) "криптофон", в гугле ищется.
Также видел репозиторий от ув. человека GeGel, он почему-то использует MELP1200 с Fixed Point - у меня эта версия на STM32 легла не очень хорошо: требуется повышение частоты в 3-4 раза или оптимизация на асме.
Взял MELP2400 c Floating Point - она на STM32 пашет реактивно с FPU.

Всё-же если можно, было бы интересно ваш кодек протестить на предмет сжатия/качества звука : у вас есть скомпилированный бинарник под Win32, который мог бы сжимать/разжимать?

На vrtp в тему добавил новый пост.

Сделал несколько звуковых проб своими модами вокодеров: test1, test2. Приложил ниже.

Codec2 на 300 bps проигрывает по качеству - звучание с MELP 489 bps лучше. ИМХО.

Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла


Ещё вопрос, встречал тут тему про кодек MELP(e), насколько ясно из темы с доступностью MELP 2400/1200 проблем особо нет, но кому-нибудь удалось достать MELPe 600 bps именно версию от Federal Standard ? Я понимаю, что можно самому доработать, но всё-ж было бы интересно взглянуть на реализацию "от первых рук".

Поиск в Гугле по именам констант/переменных закончился только упоминанием о 1200 и 2400.

Ниже выложил кодеки Codec2 300 bps с препроцессором шума и MELP 489 bps под Win32 для экспериментов. На вход требует моно файл 8 кГц 16 бит без wav-хедера (0.raw).

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла
Милливольт
Цитата(Mister_DSP @ Nov 6 2016, 13:14) *
[

Моя цель: сделать сверхдальние приемо-передатчики для служебной связи. Вопросы шифрования имеют второстепенное значение.


Это дело почтенное...


Цитата
В вашем же проекте как я понял, основной упор идёт на протаскивание зашифрованного канала через сети GSM с устойчивостью к атакам взлома и де-анонимизации всех мастей.
Тоже интересное направление и восстребованное как и хорошими так и плохими дядьками sm.gif - крайне рисковано.


Никак нет. Нехай они все околеют, и террорюги, и борцы с ними.

Спасибо за иллюстрации - их всегда не хватает. В качестве ответа прилагаю первые звуки моего ребеночка с универсальным алфавитом. http://exfile.ru/483070 (эквалайзер пока не подключен)
Скорость около 800 без сжатия выходного цифрового потока - со сжатием получается около 300.
Т.к. пока к тестированию не готов (проклятая математика, которую как ни облизывай, все равно - дураком будешь), скажу в пояснение следующее:
Отличие разработанного мной кодека заключается в том, что кодируется не речь, а ее короткие фрагменты. При экспериментальной работе (в предположении, что общепринятая модель генерации голоса неверна) выяснилось: в речевом сигнале есть участки повышенной стационарности. Т.е. если рассматривать процесс как нестационарный (в широком(!) смысле), то при коротких реализациях можно найти особые точки, в окрестностях которых стационарность резко возрастает, и процесс можно считать эргодическим(NB!). Экспериментально установлено, что эти точки встречаются в речевом сигнале с плавающим периодом от 5 до 20 мсек, и чаще всего (но не обязательно) их период совпадает с периодом "пульса" речи. Энергетические спектры этих реализаций несут всю информацию об эргодической составляющей (математиков прошу не кривиться) процесса. А оставшаяся стохастическая компонента нам и не нужна.
Для радиосвязи получается замечательная ситуация: один раз в 5...20 мсек мы передаем номер спектра (всего-лишь!). Все остальное время можем молчать. А для демодулятора лучше будет, если мы передаем этот номер непрерывно в виде какой-то, допустим, синусоидальной посылки. Т.е. есть особая точка - передаем частоты 1 и 5 к примеру. Пока не пришла следующая точка, тогда передаем следующие частоты 2 и 11 к примеру. При такой передаче свертка этой синусоиды с ее копией, а еще проще - спектроанализатор скользящего окна на выходе демодулятора, дадут нам хорошее приближение к теоретическому оптимуму по энергии. А уж если нам известны частоты или их комбинации, которые могут встречаться, и которые не могут - то простейший корректирующий код будет несложно организовать хоть в реальном времени.
Т.е. все как-то "удобно упаковывается" для радиосвязи. И неудобно для криптографии, но тут я дилетант. Впрочем, сейчас каждый программист, не говоря о системщиках, знает криптографию вдоль и поперек, и имеет собственный метод, причем гарантированной стойкости.
Mister_DSP
Ваш уровень знаний в математике(в терминологии) выше, чем мой. Я не совсем хорошо владею терминологией и некоторые моменты в посте не понял.
Предположу в своих терминах, что в вашем вокодере используется "таблично-волновой" метод синтеза речи: в режиме обучения человеческая речь нарезается на кусочки и составляется алфавит ортогональных нетривиальных речевых фрагментов фиксированной длительности (с алгоритмом отсева похожих повторов). А уже непосредственно при кодировании/декодировании идёт распознавание речевого фрагмента - сравнение его с элементами из алфавита и выбор наиболее похожего.
Классические схемы вокодеров больше "частотно-синтезные", чем "таблично-волновые". Как с музыкальными синтезаторами: FM-синтезатор и WaveTable-синтезаторы. Что-то похожее между принципами есть...

Тогда на базе такого вокодера можно сделать "именные телефоны", которые закреплены за одним человеком или группой людей(с функцией переключения банков речи).

Без кодовой книги - с универсальным алфавитом: я ничего не смог понять, когда прослушал последнюю запись.
Милливольт
Цитата(Mister_DSP @ Nov 6 2016, 16:02) *
Тогда на базе такого вокодера можно сделать "именные телефоны", которые закреплены за одним человеком или группой людей(с функцией переключения банков речи).


Совершенно верно, именно так и планировалось изначально... Но после многих споров и совещаний пришли к выводу, что подобная вещь востребована не будет.
Так что, все в растрепанных планах, увы.
Mister_DSP
Тоесть конечного результата/продукта не будет?
А если отбросить коммерцию, доступно ли повторение вашей конструкции радиолюбителями?
GeGeL
Цитата(Mister_DSP @ Nov 6 2016, 15:14) *
В вашем же проекте как я понял, основной упор идёт на протаскивание зашифрованного канала через сети GSM с устойчивостью к атакам взлома и де-анонимизации всех мастей.
Тоже интересное направление и восстребованное как и хорошими так и плохими дядьками sm.gif - крайне рисковано.

Это как раз таки в моем проекте. Ув. Милливольт придерживается противоположного мнения.

Цитата(petrov @ Sep 29 2016, 14:00) *
1. Научно-техническое творчество - абсолютная ценность, тут и обсуждать нечего.
2. Такие вещи полезны для общества как естественный противовес против тотального перевеса в игре одного субъекта по отношению к другим субъектам.

Золотые слова. Добавлю лишь, что ни я, ни кто другой не вправе делить дядек на плохих и хороших.

Mister_DSP, ваша тема весьма созвучна с работами David Rowe, у них сильная комьюнити, стоит присоединиться.
Да, давно я не заходил на vrtp - интересный монолог у Вас. И что примечательно, я тоже сейчас насилую дешевые китайские LoRa-модули sm.gif

Цитата(Милливольт @ Nov 6 2016, 13:45) *
Справедливое (по Вашей ссылке) замечание о неуниверсальности решения с предварительной отправкой "алфавита" в цифровой форме. Пытаюсь обойти эту трудность - сделать алфавит универсальным. Пришлось отказаться от иллюстраций во временной области - звук, увы, в этом случае становится "вокодерным".

Многие отказываются от голосового общения в пользу того же Torchat только из-за возможности идентификации, и не просто так в Торфоне появился вокодер, убирающий из параметров избыточную индивидуальную информацию, облегчающую идентификацию. Поэтому у меня есть огромный интерес к разработке кодека, сохраняющего разборчивость, но максимально обезличивающего голос. И это намного более востребовано, чем кажется, спросите, например, на том же SilkRoad sm.gif

И вопрос по поводу перфоманса MELPE: хватил ли STM32F446 (180MHz/225DMIPS) для одновременной работы кодера/декодера?
Как вариант, сейчас использую $13 NanoPi:

http://www.friendlyarm.com/index.php?route...;product_id=109

(OpenHW/OpenSW, Debian) с $5 MicroSD, $3 USB WiFi, $4 2.4' TFT+TouchPad и $7 PowerBank.

Прекрасное портативное решение для OnionPhone и телефонии через Tor, но слишком прожорливое для PairPhone. Хотелось бы подобрать более адекватное железо для этой цели.
Милливольт
Цитата(GeGeL @ Nov 8 2016, 20:35) *
Многие отказываются от голосового общения в пользу того же Torchat только из-за возможности идентификации, и не просто так в Торфоне появился вокодер, убирающий из параметров избыточную индивидуальную информацию, облегчающую идентификацию. Поэтому у меня есть огромный интерес к разработке кодека, сохраняющего разборчивость, но максимально обезличивающего голос. И это намного более востребовано, чем кажется, спросите, например, на том же SilkRoad sm.gif

Как неожиданно... У нас после долгих обсуждений, прослушиваний и даже ругани было сформулировано требование: не хуже MP3! А то нежные юноши и еще более нежные девы с гневом отвергнут неполноценную поделку из недоразвитой области Ойкумены. Я выметал икру и весь богатейший словарный запас, но не признать правоту коммерсантов не могу.
Этого, понятное дело, достичь невозможно. Но кое-что улучшить удалось: http://exfile.ru/483111
А тут еще оказалось, что и компрессор недопустим. Ни в каком виде. В общем, - абсолютно гробовая тема.
Mister_DSP
Да, увы, к сожалению сегодняшнее молодое поколение "большого пальца" требует качества MP3(кстати оно тоже разное бывает и далеко не всегда самое разборчивое при 8 кГц sm.gif ).
И если ориентироваться на сегмент "нежных дев", то это тупиковый путь в получении гешефта за девайсы.
Такой кодек может быть очень сильно восстребован когда нужно получить высокий бюджет линка без требований к качеству речи.
Могу посоветовать поискать других заказчиков - пожарная / МЧС / альпинисты / геологи..... радолюбители "со специфическим уклоном" также будут рады.

Цитата
Но кое-что улучшить удалось: http://exfile.ru/483111

ИМХО отлично вышло! Разборчивасть приемлема для служебной связи. Главное понятно что сказано.

При прослушивании Ваших записей периодически слышу эффект "стука каблуком сапога Петра Великого об паркетный пол sm.gif " Что весьма придаёт оттенок Петровской России, что забавно - как будто задиктовывают царские указы! sm.gif Но это так, эмоции...

Что касается Дэвида Рува и присоединения к его коммунити.
Дэвид работает над Codec2 и насколько понял разборчивость вполне устраивает. Хотя Codec2 на 700 бит/с звучит хуже чем MELPe 600. ИМХО.
На счет радиотракта - у него классическая NFM, с LoRa режимами и подшумовым приемом замечен мной не был.

А на счёт обезличивания голоса, ИМХО можно вокодировать с постоянным Pitch-ем. Вот, приложил варианты голосовых проб с постоянным дефолтовским Pitch-eм. ЕМНИП =50.0 в MELP. В итоге имеем "голос робота", хозяина которого установить невозможно? (или уже и это возможно?)

Нажмите для просмотра прикрепленного файла

Цитата
Как вариант, сейчас использую $13 NanoPi:

Весьма интересно, но я сейчас как раз прорабатываю вопросы габаритов и энергопотребления. Нужен мобильный вариант от батареек, умещающийся в ладони.
Милливольт
Цитата(Mister_DSP @ Nov 9 2016, 06:59) *
При прослушивании Ваших записей периодически слышу эффект "стука каблуком сапога Петра Великого об паркетный пол sm.gif " Что весьма придаёт оттенок Петровской России, что забавно - как будто задиктовывают царские указы! sm.gif Но это так, эмоции...

Огромная, просто гигантских размеров благодарность! Ваше точное наблюдение здорово помогло.
Я не обращал на это внимание, а следовало бы! Причину и следствия доложу попозже.
Милливольт
Добавлю: в результате проблема с универсальным алфавитом успешно решилась. Он обещает быть не более 10КБ, что для современных ЗУ вполне приемлемо. Прилагаю иллюстрацию, в которой два голоса, причем в алфавите пока нет кластеров, полученных из женских голосов(NB!).
Чуть не сдох за две ночи.
http://exfile.ru/483127
Mister_DSP
Какой битрейт у последнего образца?
По распознаваемости хорошо, даже пол голоса можно отличать.

Кодовую книгу можно сделать больше, современные контроллеры имеют около 1 Мбайта флеша, поэтому не проблема.
Главное чтобы неявно РАМу не жрал (как это с Codec2) - а то понапишут malloc-и - и потом сиди думай сколько памяти на кучу(heap) отводить sm.gif

У моего мода MELP489 тоже есть один призвук: слегка пукает когда тишина, но это вокодер так акустический шум с микрофона вокодирует.
Проблема решается простым Noise-Killer-ом:
Цитата
#define NOISE 50

u8 NoiseKiller(s16* buf)
{
u32 i=FRAME;
s32 a=0;
while(i--)if(*buf<0)a-=*buf++;
else a+=*buf++;
if((a/FRAME)<NOISE)
{
memset((void*)(buf-FRAME),0,FRAME<<1);
return 1;
}
return 0;
}
Милливольт
Цитата(Mister_DSP @ Nov 10 2016, 10:31) *
Какой битрейт у последнего образца?


Пока динамический. Т.е. каждые 5...20 мсек идет один байт номера кластера. Несжатые данные для приведенной иллюстрации уложились в 850 бит/сек (женский голос требует несколько большего количества данных вследствие более высокой частоты следования посылок). Если убирать периоды молчания и хотя бы в простейшем виде сжимать выходную цифровую последовательность (а она хорошо сжимается даже классическим Хаффменом) то легко выйти на 300. Дальше надо извращаться, но пока не до того, бардак в программе дикий.

Кстати, по поводу возможности неидентификации голоса абонента: в предлагаемом методе все получается легко и просто. http://exfile.ru/483128
Можно сравнить с предыдущей иллюстрацией. И это не работа УСЧ, восстановить исходные частоты формант и посылок обратным преобразованием не удастся.
Mister_DSP
ИМХО VBR для радиосвязи не очень, потому что на лету не есть камильфо дёргать регистр бодрейта передатчика/приемника. Ну и синхронизировать как-то надо. Поэтому берется максимальный (пиковый битрейт).
Милливольт
Цитата(Mister_DSP @ Nov 10 2016, 15:55) *
ИМХО VBR для радиосвязи не очень, потому что на лету не есть камильфо дёргать регистр бодрейта передатчика/приемника. Ну и синхронизировать как-то надо. Поэтому берется максимальный (пиковый битрейт).


В каноническом варианте - именно так. А мы попробуем адаптировать модулятор к особенностям кодера. Ведь речь идет о полудуплексе. Заодно и синхронизацию можно будет похерить. Если на входе спектроанализатор скользящего окна... Но то такэ... Сначала надо для демонстрации серьезности заявки передать цифровой сигнал поверх GSM.
Mister_DSP
Ниже выложил пробу звука на 978 бит/с - это тоже что и MELP 1200, только без битов FEC.
Средний вариант между 1956 bps и 489 bps.

Нажмите для просмотра прикрепленного файла

Как видно, уже такого битрейта хватает на предельное распознавание речи в развлекательных радиопередачах.

Ну ещё 4 пробы звука с микрофона: оргигнал, melp 978, и пара обезличенных проб: робот с высоким и низким значением Pitch:

Нажмите для просмотра прикрепленного файла

sm.gif

Ну и сам вокодер для достоверности в экспериментах:
Нажмите для просмотра прикрепленного файла
Милливольт
Цитата(Mister_DSP @ Nov 11 2016, 13:39) *
Ниже выложил пробу звука на 978 бит/с - это тоже что и MELP 1200, только без битов FEC.
Средний вариант между 1956 bps и 489 bps.

Спасибо, полезно. У Вас в оригинальном файле какая-то предобработка? Вроде бы предварительное эхо?
Я его ради интереса пропустил через свой кодек http://exfile.ru/483147
Если слушать через динамик, то, как мне кажется, мой вариант предпочтительнее, если же через наушники, то однозначно - МЕLP лучше.

Mister_DSP
Если вы спросили про первую пробу(где 2 голоса), то это запись с радио - может быть все что угодно: начиная от эха, заканчивая фоновыми звуками.
Милливольт
Всё, нет моих сил больше. В файле - последняя версия акустической части, ничего менять не буду. С вокодера, которому передается только нормированный энергетический спектр (без синусной и косинусной компонент), выжать что-нибудь еще невозможно. Пришлось отказаться от полулогарифмического сжатия сигнала, т.к. все эксперты морщили носы, говорили о "советском" звучании и т.п.
Впрочем, замечания приму к сведению и буду за них признателен (виртуально, понятное дело). Нажмите для просмотра прикрепленного файла
z64
Я правильно понял постановку задач. Нужно получить неузнаваемость голоса абонента?
Милливольт
Цитата(z64 @ Nov 12 2016, 22:24) *
Я правильно понял постановку задач. Нужно получить неузнаваемость голоса абонента?

Нет, разумеется, у меня такой задачи не стоит. Пока только рожал ежика. Смысл родов в том, чтобы ограничиться минимумом информации как передаваемой по каналу связи, так и хранимой в приемном и передающем устройстве. При приемлемом качестве речи (хотя желания потенциальных пользователей в этом плане абсолютно нереалистичны).
Mister_DSP
какой битрейт (максимальный, пик) у последней звуковой пробы?
Милливольт
Цитата(Mister_DSP @ Nov 13 2016, 05:40) *
какой битрейт (максимальный, пик) у последней звуковой пробы?


Такой же, не изменился. Для именно этой пробы - 850 без предварительного сжатия и 300 после Хаффмена. Изменил только окно данных в синтезаторе.
Mister_DSP
По качеству если 800 бит/с - то уступает MELP-у. Если 300 бит/с - превосходно для такого битрейта!

Какой размер блока в байтах сжимаете Хаффманом?
Милливольт
Цитата(Mister_DSP @ Nov 13 2016, 07:46) *
Какой размер блока в байтах сжимаете Хаффманом?


300 миллисекунд
Mister_DSP
Сможет ли Хаффман пожать блок из 33 байт? Это 6 фреймов вокодера MELP, данные кореллируют между собой (параметры речевого сигнала)
Милливольт
Цитата(Mister_DSP @ Nov 13 2016, 08:51) *
Сможет ли Хаффман пожать блок из 33 байт? Это 6 фреймов вокодера MELP, данные кореллируют между собой (параметры речевого сигнала)

Да, в каноническом включении здесь проблемы. Но если представлять последовательность байт в виде ДИКМ, причем невязку корректировать в последующем такте, то все очень недурно получается. Номера передаваемых спектров надо, понятное дело, изначально располагать по частости встречаемости и минимальному ожидаемому приращению на последующем такте.
Этот метод мы отработали еще при цифровой передаче ЭКГ через акустический канал мобильника (как говорит ув. GeGel "поверх GSM"). (это лучше нарисовать, т.к. я что-то косноязычно выражаюсь).

Для иллюстрации та же запись с разным битрейтом. Это без(!) Хаффмена, просто передаваемые спектры обновляются не при появлении каждой новой "особой точки", а через тактНажмите для просмотра прикрепленного файла, через два такта, через три, т.е. время обновления спектра становится не приблизительно 10 мсек изначально, а 20...30.. и т.д. Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
Из этих иллюстраций хорошо видно (слышно) как действительно сильно коррелирован речевой сигнал.
Mister_DSP
При таких крохотных битрейтах вышло великолепно! rolleyes.gif Речь на грани разборчивости, зато в узкие каналы пролезет.

Единственно в пробе на 100 бит/с фрагменты слов проглатываются - это плохо.

А так в целом отлично!

Если спектр не обновляется, а только через такт: выходит вы просто дублируете синтез волны при декодировании или как?
Я так делал, получается голосовой джиттер. Фрейм у меня 22,5 мс.

Пробовал LSP брать через раз - нормально выходит, но если брать через 3 раза, то уже неприемлемо.

Мой мод кодека до 381 бит/с ещё можно уменьшить путём загрубления Pitch/Gain/BPV. LSP лучше не трогать.
Но качество пострадает, расборчивость на грани.
Милливольт
Цитата(Mister_DSP @ Nov 13 2016, 15:04) *
Единственно в пробе на 100 бит/с фрагменты слов проглатываются - это плохо.

В очередной раз спасибо за ценное замечание. Устранил.Нажмите для просмотра прикрепленного файла
Но для стабильного потока без сжатия не получается 100 - только 120. Т.е. 1 раз в 100 мсек передается номер спектра (8 бит) плюс количество повторений в течение этого периода времени (4 бита).
Итого 12 бит за 100 мсек, соответственно 120 бит/сек. Звук грубоватый, конечно, не выйдет говорить в итальянском темпе, но для служебной связи, возможно, и будет приемлемо.
Вообще, рекорды битрейта - не самоцель. А вот передача поверх GSM должна показать кто есть ху.
Mister_DSP
Пробовал навернуть Рида-Соломона на пакет 6x6 байт - раздул до 8x8 байт (добавочные 2x8 8x2 и 2x2). Потребовалось увеличить битрейт модема в 2 раза. В итоге только хуже -много пакетов теряется в дальней зоне, а в ближней - с искажениями.

Видать, чутьё упало на 3дБ, поэтому пакетов нет, коррекция простаивает....

Так что Ваш интерес снижать битрейт - очень восстребованное ИМХО дело!
Милливольт
Цитата(Mister_DSP @ Nov 16 2016, 06:18) *
В итоге только хуже -много пакетов теряется в дальней зоне, а в ближней - с искажениями.


У нас при разработке микромощной телеметрии для использования внутри зданий была та же самая история. Ничего из общеупотребительных средств не помогало. Но в итоге проблема решилась успешно.
Если это будет уместным, опишу подробно.
Mister_DSP
Цитата(Милливольт @ Nov 16 2016, 09:56) *
У нас при разработке микромощной телеметрии для использования внутри зданий была та же самая история. Ничего из общеупотребительных средств не помогало. Но в итоге проблема решилась успешно.
Если это будет уместным, опишу подробно.

напишите в личку пожалуйста о способе решении, если можно....
Милливольт
Цитата(Mister_DSP @ Nov 16 2016, 12:43) *
напишите в личку пожалуйста о способе решении, если можно....

Отправил.
Mister_DSP
Поковырял MELP, родил ещё моды на 400, 350, 300 и 267 бит/c:

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла

Нажмите для просмотра прикрепленного файла

Оригинал:
Нажмите для просмотра прикрепленного файла

С битрейтами 300 и 267 бит/с - осуществима конфигурация приемника RFM96 с чувствительностью: -135,7 dBm (0,037 мкВ)
А это - километры расстояний при мощности передатчика 50 мВт sm.gif
Милливольт
Цитата(Mister_DSP @ Nov 18 2016, 14:59) *
С битрейтами 300 и 267 бит/с - осуществима конфигурация приемника RFM96 с чувствительностью: -135,7 dBm (0,037 мкВ)
А это - километры расстояний при мощности передатчика 50 мВт sm.gif


Блажен кто верует, тепло ему на свете (Ц).
Т.к. шумы эфира и индустриальные помехи никуда не деваются. У советских разработчиков систем связи была такая присказка: "Сначала мы выжали чувствительность, а потом начали с ней бороться". Кстати, из истории: во всех портативках ЧМ вытеснила SSB, хотя энергетический проигрыш радиолинии немалый.
А насчет 50 мВт и километров - это не показатель. И в любом случае хорошая аналоговая станция в тех же условиях даст результат как минимум не хуже (проверено и перепроверено) Мозг, обрабатывая речевой сигнал в помехах и шумах, дешифрует его так успешно, что нам с DSP и не снилось пока.
Mister_DSP
у меня корелляционный приемник. он сигнал из-под шума вытаскивает. sm.gif
вот ещё сделал 200 бит/с
для конфига модема -137,1 дБм !

Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.