|
|
  |
Речевой кодек для задачи, поставленной GeGel, Приводятся примеры исходного и сжатого речевым кодеком сигнала |
|
|
|
Nov 6 2016, 12:14
|

Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050

|
Милливольт, спасибо за поддержание темы и беседу! Было интересно скачать и послушать образцы звуков. У меня любительский подход к делу, да и знаний в теоретическом плане маловато(в теории обработки информации), поэтому оцениваю качество распознавания синтезированной вокодером речи чисто субъективно по ощущениям. По моему опыту - вокодеры очень не любят когда речь произносится оператором нечленораздельно , очень быстро без пауз и выделения слов. При достаточном удалении также могут проглатываться отдельные слоги в словах. Я пытаюсь сейчас найти свой "критерий Шеннона", компромисс своего рода между разборчивостью речи и дальностью связи, которая зависит от чувствительности приемника. Более низкий битрейт позволяет либо с-узить полосу пропускания приемника, либо увеличить спред-фактор, либо навернуть бОльший коэфициент избыточности в FEC (в RFM96 она аппаратная 5/4 ... 8/4). Забыл написать, что в ней корелляционный приемник, могущий принимать сигнал на десятки децибелл меньше шума. Моя цель: сделать сверхдальние приемо-передатчики для служебной связи. Вопросы шифрования имеют второстепенное значение. В вашем же проекте как я понял, основной упор идёт на протаскивание зашифрованного канала через сети GSM с устойчивостью к атакам взлома и де-анонимизации всех мастей. Тоже интересное направление и восстребованное как и хорошими так и плохими дядьками  - крайне рисковано. Нашёл тему про проброс канала здесь на форуме (старая) "криптофон", в гугле ищется. Также видел репозиторий от ув. человека GeGel, он почему-то использует MELP1200 с Fixed Point - у меня эта версия на STM32 легла не очень хорошо: требуется повышение частоты в 3-4 раза или оптимизация на асме. Взял MELP2400 c Floating Point - она на STM32 пашет реактивно с FPU. Всё-же если можно, было бы интересно ваш кодек протестить на предмет сжатия/качества звука : у вас есть скомпилированный бинарник под Win32, который мог бы сжимать/разжимать? На vrtp в тему добавил новый пост. Сделал несколько звуковых проб своими модами вокодеров: test1, test2. Приложил ниже. Codec2 на 300 bps проигрывает по качеству - звучание с MELP 489 bps лучше. ИМХО.
test1.zip ( 932.52 килобайт )
Кол-во скачиваний: 47
test2.zip ( 976.26 килобайт )
Кол-во скачиваний: 39Ещё вопрос, встречал тут тему про кодек MELP(e), насколько ясно из темы с доступностью MELP 2400/1200 проблем особо нет, но кому-нибудь удалось достать MELPe 600 bps именно версию от Federal Standard ? Я понимаю, что можно самому доработать, но всё-ж было бы интересно взглянуть на реализацию "от первых рук". Поиск в Гугле по именам констант/переменных закончился только упоминанием о 1200 и 2400. Ниже выложил кодеки Codec2 300 bps с препроцессором шума и MELP 489 bps под Win32 для экспериментов. На вход требует моно файл 8 кГц 16 бит без wav-хедера (0.raw).
melp_489bps.zip ( 730.46 килобайт )
Кол-во скачиваний: 46
codec2_300bps.zip ( 918.14 килобайт )
Кол-во скачиваний: 43
Сообщение отредактировал Mister_DSP - Nov 6 2016, 11:35
--------------------
SPY vs. SPY Хорошо там, где нет ничего...
|
|
|
|
|
Nov 6 2016, 14:00
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 17-05-15
Пользователь №: 86 729

|
Цитата(Mister_DSP @ Nov 6 2016, 13:14)  [
Моя цель: сделать сверхдальние приемо-передатчики для служебной связи. Вопросы шифрования имеют второстепенное значение. Это дело почтенное... Цитата В вашем же проекте как я понял, основной упор идёт на протаскивание зашифрованного канала через сети GSM с устойчивостью к атакам взлома и де-анонимизации всех мастей. Тоже интересное направление и восстребованное как и хорошими так и плохими дядьками  - крайне рисковано. Никак нет. Нехай они все околеют, и террорюги, и борцы с ними. Спасибо за иллюстрации - их всегда не хватает. В качестве ответа прилагаю первые звуки моего ребеночка с универсальным алфавитом. http://exfile.ru/483070 (эквалайзер пока не подключен) Скорость около 800 без сжатия выходного цифрового потока - со сжатием получается около 300. Т.к. пока к тестированию не готов (проклятая математика, которую как ни облизывай, все равно - дураком будешь), скажу в пояснение следующее: Отличие разработанного мной кодека заключается в том, что кодируется не речь, а ее короткие фрагменты. При экспериментальной работе (в предположении, что общепринятая модель генерации голоса неверна) выяснилось: в речевом сигнале есть участки повышенной стационарности. Т.е. если рассматривать процесс как нестационарный (в широком(!) смысле), то при коротких реализациях можно найти особые точки, в окрестностях которых стационарность резко возрастает, и процесс можно считать эргодическим(NB!). Экспериментально установлено, что эти точки встречаются в речевом сигнале с плавающим периодом от 5 до 20 мсек, и чаще всего (но не обязательно) их период совпадает с периодом "пульса" речи. Энергетические спектры этих реализаций несут всю информацию об эргодической составляющей (математиков прошу не кривиться) процесса. А оставшаяся стохастическая компонента нам и не нужна. Для радиосвязи получается замечательная ситуация: один раз в 5...20 мсек мы передаем номер спектра (всего-лишь!). Все остальное время можем молчать. А для демодулятора лучше будет, если мы передаем этот номер непрерывно в виде какой-то, допустим, синусоидальной посылки. Т.е. есть особая точка - передаем частоты 1 и 5 к примеру. Пока не пришла следующая точка, тогда передаем следующие частоты 2 и 11 к примеру. При такой передаче свертка этой синусоиды с ее копией, а еще проще - спектроанализатор скользящего окна на выходе демодулятора, дадут нам хорошее приближение к теоретическому оптимуму по энергии. А уж если нам известны частоты или их комбинации, которые могут встречаться, и которые не могут - то простейший корректирующий код будет несложно организовать хоть в реальном времени. Т.е. все как-то "удобно упаковывается" для радиосвязи. И неудобно для криптографии, но тут я дилетант. Впрочем, сейчас каждый программист, не говоря о системщиках, знает криптографию вдоль и поперек, и имеет собственный метод, причем гарантированной стойкости.
Сообщение отредактировал Милливольт - Nov 6 2016, 14:02
|
|
|
|
|
Nov 6 2016, 15:51
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 17-05-15
Пользователь №: 86 729

|
Цитата(Mister_DSP @ Nov 6 2016, 16:02)  Тогда на базе такого вокодера можно сделать "именные телефоны", которые закреплены за одним человеком или группой людей(с функцией переключения банков речи). Совершенно верно, именно так и планировалось изначально... Но после многих споров и совещаний пришли к выводу, что подобная вещь востребована не будет. Так что, все в растрепанных планах, увы.
Сообщение отредактировал Милливольт - Nov 6 2016, 15:51
|
|
|
|
|
Nov 8 2016, 19:35
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Цитата(Mister_DSP @ Nov 6 2016, 15:14)  В вашем же проекте как я понял, основной упор идёт на протаскивание зашифрованного канала через сети GSM с устойчивостью к атакам взлома и де-анонимизации всех мастей. Тоже интересное направление и восстребованное как и хорошими так и плохими дядьками  - крайне рисковано. Это как раз таки в моем проекте. Ув. Милливольт придерживается противоположного мнения. Цитата(petrov @ Sep 29 2016, 14:00)  1. Научно-техническое творчество - абсолютная ценность, тут и обсуждать нечего. 2. Такие вещи полезны для общества как естественный противовес против тотального перевеса в игре одного субъекта по отношению к другим субъектам. Золотые слова. Добавлю лишь, что ни я, ни кто другой не вправе делить дядек на плохих и хороших. Mister_DSP, ваша тема весьма созвучна с работами David Rowe, у них сильная комьюнити, стоит присоединиться. Да, давно я не заходил на vrtp - интересный монолог у Вас. И что примечательно, я тоже сейчас насилую дешевые китайские LoRa-модули  Цитата(Милливольт @ Nov 6 2016, 13:45)  Справедливое (по Вашей ссылке) замечание о неуниверсальности решения с предварительной отправкой "алфавита" в цифровой форме. Пытаюсь обойти эту трудность - сделать алфавит универсальным. Пришлось отказаться от иллюстраций во временной области - звук, увы, в этом случае становится "вокодерным". Многие отказываются от голосового общения в пользу того же Torchat только из-за возможности идентификации, и не просто так в Торфоне появился вокодер, убирающий из параметров избыточную индивидуальную информацию, облегчающую идентификацию. Поэтому у меня есть огромный интерес к разработке кодека, сохраняющего разборчивость, но максимально обезличивающего голос. И это намного более востребовано, чем кажется, спросите, например, на том же SilkRoad  И вопрос по поводу перфоманса 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. Хотелось бы подобрать более адекватное железо для этой цели.
|
|
|
|
|
Nov 8 2016, 21:46
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 17-05-15
Пользователь №: 86 729

|
Цитата(GeGeL @ Nov 8 2016, 20:35)  Многие отказываются от голосового общения в пользу того же Torchat только из-за возможности идентификации, и не просто так в Торфоне появился вокодер, убирающий из параметров избыточную индивидуальную информацию, облегчающую идентификацию. Поэтому у меня есть огромный интерес к разработке кодека, сохраняющего разборчивость, но максимально обезличивающего голос. И это намного более востребовано, чем кажется, спросите, например, на том же SilkRoad  Как неожиданно... У нас после долгих обсуждений, прослушиваний и даже ругани было сформулировано требование: не хуже MP3! А то нежные юноши и еще более нежные девы с гневом отвергнут неполноценную поделку из недоразвитой области Ойкумены. Я выметал икру и весь богатейший словарный запас, но не признать правоту коммерсантов не могу. Этого, понятное дело, достичь невозможно. Но кое-что улучшить удалось: http://exfile.ru/483111А тут еще оказалось, что и компрессор недопустим. Ни в каком виде. В общем, - абсолютно гробовая тема.
Сообщение отредактировал Милливольт - Nov 8 2016, 21:48
|
|
|
|
|
Nov 9 2016, 05:59
|

Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050

|
Да, увы, к сожалению сегодняшнее молодое поколение "большого пальца" требует качества MP3(кстати оно тоже разное бывает и далеко не всегда самое разборчивое при 8 кГц  ). И если ориентироваться на сегмент "нежных дев", то это тупиковый путь в получении гешефта за девайсы. Такой кодек может быть очень сильно восстребован когда нужно получить высокий бюджет линка без требований к качеству речи. Могу посоветовать поискать других заказчиков - пожарная / МЧС / альпинисты / геологи..... радолюбители "со специфическим уклоном" также будут рады. Цитата Но кое-что улучшить удалось: http://exfile.ru/483111ИМХО отлично вышло! Разборчивасть приемлема для служебной связи. Главное понятно что сказано. При прослушивании Ваших записей периодически слышу эффект "стука каблуком сапога Петра Великого об паркетный пол  " Что весьма придаёт оттенок Петровской России, что забавно - как будто задиктовывают царские указы!  Но это так, эмоции... Что касается Дэвида Рува и присоединения к его коммунити. Дэвид работает над Codec2 и насколько понял разборчивость вполне устраивает. Хотя Codec2 на 700 бит/с звучит хуже чем MELPe 600. ИМХО. На счет радиотракта - у него классическая NFM, с LoRa режимами и подшумовым приемом замечен мной не был. А на счёт обезличивания голоса, ИМХО можно вокодировать с постоянным Pitch-ем. Вот, приложил варианты голосовых проб с постоянным дефолтовским Pitch-eм. ЕМНИП =50.0 в MELP. В итоге имеем "голос робота", хозяина которого установить невозможно? (или уже и это возможно?)
robot_melp_489bps.rar ( 475.75 килобайт )
Кол-во скачиваний: 46Цитата Как вариант, сейчас использую $13 NanoPi: Весьма интересно, но я сейчас как раз прорабатываю вопросы габаритов и энергопотребления. Нужен мобильный вариант от батареек, умещающийся в ладони.
Сообщение отредактировал Mister_DSP - Nov 9 2016, 06:01
--------------------
SPY vs. SPY Хорошо там, где нет ничего...
|
|
|
|
|
Nov 9 2016, 21:51
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 17-05-15
Пользователь №: 86 729

|
Цитата(Mister_DSP @ Nov 9 2016, 06:59)  При прослушивании Ваших записей периодически слышу эффект "стука каблуком сапога Петра Великого об паркетный пол  " Что весьма придаёт оттенок Петровской России, что забавно - как будто задиктовывают царские указы!  Но это так, эмоции... Огромная, просто гигантских размеров благодарность! Ваше точное наблюдение здорово помогло. Я не обращал на это внимание, а следовало бы! Причину и следствия доложу попозже.
|
|
|
|
|
Nov 10 2016, 08:19
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 17-05-15
Пользователь №: 86 729

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

Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050

|
Какой битрейт у последнего образца? По распознаваемости хорошо, даже пол голоса можно отличать. Кодовую книгу можно сделать больше, современные контроллеры имеют около 1 Мбайта флеша, поэтому не проблема. Главное чтобы неявно РАМу не жрал (как это с Codec2) - а то понапишут malloc-и - и потом сиди думай сколько памяти на кучу(heap) отводить  У моего мода 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; }
--------------------
SPY vs. SPY Хорошо там, где нет ничего...
|
|
|
|
|
Nov 10 2016, 11:46
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 17-05-15
Пользователь №: 86 729

|
Цитата(Mister_DSP @ Nov 10 2016, 10:31)  Какой битрейт у последнего образца? Пока динамический. Т.е. каждые 5...20 мсек идет один байт номера кластера. Несжатые данные для приведенной иллюстрации уложились в 850 бит/сек (женский голос требует несколько большего количества данных вследствие более высокой частоты следования посылок). Если убирать периоды молчания и хотя бы в простейшем виде сжимать выходную цифровую последовательность (а она хорошо сжимается даже классическим Хаффменом) то легко выйти на 300. Дальше надо извращаться, но пока не до того, бардак в программе дикий. Кстати, по поводу возможности неидентификации голоса абонента: в предлагаемом методе все получается легко и просто. http://exfile.ru/483128Можно сравнить с предыдущей иллюстрацией. И это не работа УСЧ, восстановить исходные частоты формант и посылок обратным преобразованием не удастся.
Сообщение отредактировал Милливольт - Nov 10 2016, 14:18
|
|
|
|
|
Nov 10 2016, 15:12
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 17-05-15
Пользователь №: 86 729

|
Цитата(Mister_DSP @ Nov 10 2016, 15:55)  ИМХО VBR для радиосвязи не очень, потому что на лету не есть камильфо дёргать регистр бодрейта передатчика/приемника. Ну и синхронизировать как-то надо. Поэтому берется максимальный (пиковый битрейт). В каноническом варианте - именно так. А мы попробуем адаптировать модулятор к особенностям кодера. Ведь речь идет о полудуплексе. Заодно и синхронизацию можно будет похерить. Если на входе спектроанализатор скользящего окна... Но то такэ... Сначала надо для демонстрации серьезности заявки передать цифровой сигнал поверх GSM.
|
|
|
|
|
Nov 11 2016, 12:39
|

Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 5-11-16
Пользователь №: 94 050

|
Ниже выложил пробу звука на 978 бит/с - это тоже что и MELP 1200, только без битов FEC. Средний вариант между 1956 bps и 489 bps.
proba_978_bps.rar ( 2.68 мегабайт )
Кол-во скачиваний: 44Как видно, уже такого битрейта хватает на предельное распознавание речи в развлекательных радиопередачах. Ну ещё 4 пробы звука с микрофона: оргигнал, melp 978, и пара обезличенных проб: робот с высоким и низким значением Pitch:
melp_978bps_examples.rar ( 952.71 килобайт )
Кол-во скачиваний: 39 Ну и сам вокодер для достоверности в экспериментах:
MELP_978BPS.rar ( 364.13 килобайт )
Кол-во скачиваний: 51
Сообщение отредактировал Mister_DSP - Nov 11 2016, 12:22
--------------------
SPY vs. SPY Хорошо там, где нет ничего...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|