Aner 5 21 ноября, 2016 Опубликовано 21 ноября, 2016 · Жалоба Жесткие требования по кварцу как раз таки есть. Лучше находить 2ppm, 5 ppm похуже. Обычно подешевле дотупны 10ppm_ные, на этой плате он и установлен. Тут нужно не забывать что такая высокая чувствительность ( или бюджет линка) во многом обеспечивается идеальными условиями и отлаженным, согласованым RF трактом с учетом антенны, не столько малой полосой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 21 ноября, 2016 Опубликовано 21 ноября, 2016 (изменено) · Жалоба 400bps - это хорошо. Я так понимаю, фрейм у Вас остается 22.5 mS. Не пробовали играть с параметрами MELPE1200, объединяющего 3 фрейма? Или сделать все по документу на 600 (4 фрейма, 90mS)? Оригинальный MELP 2400: фрейм 180 семплов = 22,5 ms биты: LSF 25 = 7 +6 +6 + 6 FMag 8 Pitch 7 Gain 8 BPV 4 Jitter 1 Sync 1 Итого: 54 бита на 1 фрейм Мои преобразования в 400 бит/c: фрейм 640 семплов = 80 мс LSF 13 = 7+ 6 (msvq_index 3,4 выкинул - это составляющие высшего порядка, не смертельно) FMAg = 0 - полностью убрал (полагаю, это дубляж инфы LSF для реализации исправления ошибок по FEC) - в melpe-600 их нет Pitch 7 Gain 8 BPV 4 - оставил фильтры как есть (а то женский голос может стать мужским) Jitter =0 - выкинул Sync =0 - это вообще выкинул не задумываясь Итого: 32 бита или 4 байта ровно Зло тут ИМХО в длинном фрейме: местами речь похожа на мычание. Показывал знакомым: 50 на 50: одни говорят неприемлемо, другие считают - приемлемо. Касаемо документов, я нашёл: 1) Real Time Implementation of 600 bps MELP Vocoder 2) Stanag 4591 .. the 600 bps 1200 bps and 2400 bps NAT0 interoperable narrow band voice coder (с подписью вица-адмирала) 3) New Nat0 stanag narrowband voice coder 600 bps Но у меня не так много знаний в голове чтобы выполнить ВСЁ что там предлагается. На "Попугае Какаду" на 600 бит/с(с сайта melpe) всё-же речь разборчивее чем на моём моде 400 бит/с. fspeech_600_demo.wav А на счет софта на RFM96 - так в инете его куча , проблем особо нет. Правда, я родил свой инклуд (модуль) для RFM96 на основе подобной библиотеки.. А вот мой "Какаду" на 400 бит /с. Из слышимых недостатков: местами невнятная речь и эффект звучащей струны: kakadu400.wav Надо бы попробовать несколько коротких фреймов обработать(4) и обобщить лишь часть параметров и сунуть в пакет (как в melpe 600). Жесткие требования по кварцу как раз таки есть. Лучше находить 2ppm, 5 ppm похуже. Обычно подешевле дотупны 10ppm_ные, на этой плате он и установлен. Тут нужно не забывать что такая высокая чувствительность ( или бюджет линка) во многом обеспечивается идеальными условиями и отлаженным, согласованым RF трактом с учетом антенны, не столько малой полосой. С вами согласен, при полосах уже 62 кГц, лучше использовать TCXO. А те кварцы что у меня стоят - разнятся на 300+ Гц, но на UHF набег аж в 3,6 кГц дал. За неимением лучшего - скорректировал множитель синтезатора в приемнике, так чтобы этот набег компенсировался. А на счёт ВЧ трактов, я индикатором напряженности поля нашел частоту при которой показания индикатора поля максимально. И надеюсь что на приеме ВЧ тракт братьями-китайцами сделан правильно! Антенна - диполь полуволновый раскрыв 135 - 180 градусов 50-75 Ом. Так что в принципе ВЧ часть терпимо. Ранее с CC1101 экспериментировал, так результаты были хуже - жуткая интерференция даже в комнате: приём глох Изменено 21 ноября, 2016 пользователем Mister_DSP Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Попробовал объединить некоторые параметры из 4-х соседних фреймов. Ничего путного не вышло, возможно из-за отсутствия расширенной кодовой книги. Сделал так 600 бит/с: LSF: 7 бит (msvq_index[0], остальные не используются) PITCH: 7 Gain: 8 BPVC: 4 итого: 26 бит/фрейм длина фрейма 348 байт. Вариант "советского какаду" с таким конфигом: kakadu_348.wav Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 22 ноября, 2016 Опубликовано 22 ноября, 2016 · Жалоба Наверное, я помешался на вокодерах, но идея получить 200-300 бит/с при граничной разборчивости меня не оставляет совсем...... Освоил мульти-фреймовое кодирование, всё-же смог утрамбовать биты от 4-х фреймов. Вот первые результаты: 600 бит/с (фрейм 320 семплов - в 2 раза меньше по сравнению с предыдущим образцом 640 семплов - выросла разборчивость): melpe600bps.wav Ну и ради пробы 300 бит/с (фрейм 640 семплов - как в старой копии): melpe300bps.wav По сравнению с предыдущим 300 бит/с - не трещит! Секрет прост: некоторые параметры речевого сигнала меняются медленно - так что их можно было обобщить. Спасибо си-шному printf, который позволил проследить за параметрами :) В записях звука есть небольшое дрожжание тона, как в фирменном "какаду" скачанного с сайта melp. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 28 ноября, 2016 Опубликовано 28 ноября, 2016 · Жалоба Возможно пригодится ув. GeGel и остальным кто в теме вокодеров. В репозитории piarphone в папке melpe, есть файлик "mathhalf_i.h". Из него убрать всё вида: if ((acc > MAX_40) || (acc < MIN_40) || (acc != floor(acc))) { fprintf(stderr, "BASIC_OP: Error in 40 bits format.\n"); exit(0); } Инными словами - убрать всё что касается printf с проверкой и вычисление условия. На тестовом образце кодирование уменьшилось с 8 секунд до 3,5 с. Пока всё. Дальше ещё посмотрим что можно сделать.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 29 ноября, 2016 Опубликовано 29 ноября, 2016 · Жалоба Возможно пригодится ув. GeGel и остальным кто в теме вокодеров. В репозитории piarphone в папке melpe, есть файлик "mathhalf_i.h". Из него убрать всё вида: if ((acc > MAX_40) || (acc < MIN_40) || (acc != floor(acc))) { fprintf(stderr, "BASIC_OP: Error in 40 bits format.\n"); exit(0); } Инными словами - убрать всё что касается printf с проверкой и вычисление условия. На тестовом образце кодирование уменьшилось с 8 секунд до 3,5 с. Пока всё. Дальше ещё посмотрим что можно сделать.... я не понял, там что #ifdef DEBUG нету?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 29 ноября, 2016 Опубликовано 29 ноября, 2016 · Жалоба я не понял, там что #ifdef DEBUG нету?? Если б было, то я об этом здесь не писал. Дальнейший анализ этого злосчастного MELP 1200 привело меня к профайлингу. Пытался вычислить что там так безбожно тормозит. В итоге нашёл ответ : ВСЁ !!! Даже замена функций вещественными БПФ и ДПФ ничего не даст, так как остальной код целочисленный и приходится конвертить целое в вещественное туда-обратно. Видел этот референс с АСМ-инструкциями для Ti. Так что остаётся лепить из 2400, с чего и начинал. Обращался в Ti, сказали фиг мы вам что дадим, так как вы - не крупная фирма с громким именем! (dspini.com) Хотел там сорцы TWELP 300 купить. Посмотреть реализацию. Однако я сам на пороге 300 бит/с с качеством лучшим чем Codec2 450 bps! :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 7 декабря, 2016 Опубликовано 7 декабря, 2016 · Жалоба Все ушли на фронт или есть что нового? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Милливольт 0 7 декабря, 2016 Опубликовано 7 декабря, 2016 · Жалоба Все ушли на фронт или есть что нового? Пока ничего. Рыдал над ГОСТом. Полностью повторил методику поверки. Пришлось очень много переделать. Но до "отлично" не дотянул, да и не получится, видимо. Но честное "хорошо" есть. Если интересно, выложу иллюстрации для 800... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 7 декабря, 2016 Опубликовано 7 декабря, 2016 · Жалоба я тоже остановился на 600 бит/с - это как раз компромисс между чутьем приемника и разборчиостью. есть версия на 300 бит/с - но голос слегка робототехнический. с версией 600 бит/с - фрейм 240 семплов (30 мс) с 300 бит/с - фрейм 320 семплов (40 мс) в принципе речь стационарна до 30 мс. так что я особо не грущу - сойдёт и так! :) занят рисованием печатной платы.... ну на счет образцов - если нетрудно, выложите плиз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Милливольт 0 7 декабря, 2016 Опубликовано 7 декабря, 2016 (изменено) · Жалоба я тоже остановился на 600 бит/с - это как раз компромисс между чутьем приемника и разборчиостью. 19.WAV 20.WAV21.WAV 22.WAV54.WAV Изменено 7 декабря, 2016 пользователем Милливольт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 8 декабря, 2016 Опубликовано 8 декабря, 2016 · Жалоба и всё-же я смотрю, вы отклонились от первоначальной задумки: конкретный словарь на 1 человека. всё-же на 100 бит/с звучало великолепно (в самом первом посте) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Милливольт 0 8 декабря, 2016 Опубликовано 8 декабря, 2016 · Жалоба и всё-же я смотрю, вы отклонились от первоначальной задумки: конкретный словарь на 1 человека. всё-же на 100 бит/с звучало великолепно (в самом первом посте) Да, пока дела неважные. Эти записи сделаны для словаря "из двух человек", и именно их голоса и используются. Т.е. работы еще до дьявола и больше. Плохо с детскими голосами (большое отличие основного тона вверх) и т.п. Сделали обсуждение этой темы. Результаты не радуют. 1. Научная ценность - 0 (здесь я согласен) 2. Никакого практического применения при отсутствии полностью универсального алфавита (спорно, на мой взгляд) 3. Применимость даже при полном успехе - сомнительная, т.е. заменить стандартный кодек 2400 на 800 даже при идентичном качестве - ничего не дает, разумнее просто поработать над расширением полосы пропускания (пожалуй, согласен) 4. Коммерческие перспективы нулевые - ловить пару децибел в радиосвязи бессмысленно, а повысить, допустим, пропускную способность каналов связи без разработчиков этих каналов - не по чину слэйвз (наверное, где-то так) 5. Затраты на реализацию алгоритма на современном программном уровне потенциально очень велики (с учетом зарплаты программистов) - а таких денег нет и не предвидится (вынужден согласиться). Т.е. поиграться можно, но реальность - увы - вот она. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mister_DSP 0 8 декабря, 2016 Опубликовано 8 декабря, 2016 · Жалоба Основная задумка с вокодерами: с их помощью поднять бюджет линка, за счёт увеличения чутья приемника из-за с-ужения полосы пропускания(понижения скорости битов). Мои данные получены на практике: 1) MELP 2400 бит/с - чутьё -124 дБм 2) Codec2 300 бит/с - чутьё -135 дБм Выигрыш между 2) и 1) в 11 дБм, а это в 3,5 раза увеличена дальность при прочих равных. Это же здОрово! С детскими голосами действительно проблема. Даже с MELP :) Потому что как писали сами TI (они придумали MELP), кодовая книга составлена из мужксих и женских голосов дикторов (взрослые) TIMT на многих языках + немного аборигенов прихватили :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Милливольт 0 8 декабря, 2016 Опубликовано 8 декабря, 2016 · Жалоба Выигрыш между 2) и 1) в 11 дБм, а это в 3,5 раза увеличена дальность при прочих равных. Это же здОрово! Это если считать "напрямую" в безэховой камере, например. А в реальности подстилающий эфирный шум сильно подпортит картину. Кроме того, во много раз проще и дешевле увеличить мощность, чем выжимать последние капли имени Бриллюэна. Тем более, надежность связи будет тем выше, чем пропорционально больше мощность передатчика относительно мощности шумов, которые могут неожиданно (Sic!) превысить свой базовый уровень. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться