Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Речевой кодек для задачи, поставленной GeGel
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3
Милливольт
Цитата(Mister_DSP @ Nov 18 2016, 17:25) *
у меня корелляционный приемник. он сигнал из-под шума вытаскивает. sm.gif
вот ещё сделал 200 бит/с
для конфига модема -137,1 дБм !

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


Насчет "корреляционного приемника" Вы, как мне кажется, несколько преувеличиваете. Т.к. Шеннон неопровержим...

Сделайте одолжение, закодируйте МЕЛПом - 200 бит мой файл. Очень интересно. А то у меня уже от этой чертовой работы глаза на затылке. Хочется сравнить с передовыми достижениями супостатовской мысли (свой вариант этой записи я уже выкладывал).

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

Милливольт, спасибо за оригинальный звуковой образец, сделав то что вы попросили, я обнаружил, что пропёрся: нет пола голоса - везде тон низкий.
Звуковой образец 200 bps (с мужским голосом) прилагаю:
Нажмите для просмотра прикрепленного файла

Вернулся к 400 бит/с моде:
Нажмите для просмотра прикрепленного файла

ИМХО мне кажется что 400 - 300 бит/с - это "Шенноновский предел" классических вокодеров.
Всё что ниже - приходится много выкидывать: удлинять фрейм - тогда речь будет стремиться к нечленораздельному мычанию, атрибуты кодовой книги подрезать - будет мыльничный голос или ворочание языком, подрезать разрядности громкости - будет мямленье, подрезать тон - будет робот или потеря пола голоса,...

Так что останавливаюсь на 400 бит/с, который можно сделать 300 и 200 бит/с, путём понижения частоты семплирования с 8 кГц - на 6 или 4 кГц соответственно.
Но 6 кГц ещё терпимо (в радиосвязи верхняя ЗЧ 3400 Гц, а при 6 кГц семплировании Fmax=3 кГц - что ещё терпимо...)
А Fs=4 кГц уже глушняк.....

Цитата(Милливольт @ Nov 18 2016, 16:21) *
Кстати, из истории: во всех портативках ЧМ вытеснила SSB, хотя энергетический проигрыш радиолинии немалый.

Это потому что SSB не быдло-ориентированная... Не каждому захочется слушать квакание и крутить ручку "clarifier". Может я отстал от жизни, но единственный портативный SSB вариант я видел - Dragon SY 101 на 27 МГц.
А так конечно SSB лучше , но как писал дедушка Поляков, при малых индексах ЧМ модуляция не уступает SSB. biggrin.gif
Dr.Alex
Цитата(Милливольт @ Nov 18 2016, 19:59) *
Насчет "корреляционного приемника" Вы, как мне кажется, несколько преувеличиваете. Т.к. Шеннон неопровержим...


Шыннон ни коим образом не запрещает «««Вытаскивать Сигнал Из-Под Шума»»», как некоторые любят выражаться.

А наоборот, даже настаивает на этом.

Передавайте со скоростью 0.1 бит/c на Герц полосы, и сможете принимать при S/N —11.4 дБ.
Mister_DSP
В RFM96 так же как и в чипах Семтеч: SX1276 и аналогичных , наряду с обычными FSK/OOK режимами есть ихний проприетарный режим, называемый LoRa (LOng RAnge).
За счёт расширения битовой последовательности (привет DCSS, чипы, чирпы) удаётся заставить ЧМ-детектор выделить сигнал в 100 раз меньший чем шум (при 4096 чипов на 1 бит). Итого когда классический GFSK детектор имеет SNR=+9дБ, детектор в LoRa-режиме обеспечивает в пределе до SNR=-20 дБ.(со знаком МИНУС)

Но не стоит забывать, что и полоса пропускания растёт и она тупит чутьё, так как насасывается шумов.

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

До предела Шеннона даже корелляционным приемникам далеко... По-мойму ещё 10-20 дБ остаётся до предела.

Помехи корелляционному приемнику не страшны как классическому, так как приемный тракт обработвывет на подшумовом уровне.

Я в шоке: 50 мВт мощности, антенны - простые проволочки - а приемник ловит на 4 км по прямой и без радиовидимости в городских условиях (правда с поиском точки приема -которая обнаруживается в 2-3 шагах от построек как обычно.....) И что самое ценное - в пределах 1-1,5 км связь устойчива и без интерференционных проявлений (не глохнет). А вот FSK-передатчик мало того что даже в пределах квартиры интерферирует так ещё и на 400-500 метров дальность максимально... при тех же равных условиях: антенны/мощность
Dr.Alex
Цитата(Mister_DSP @ Nov 19 2016, 18:36) *
Помехи корелляционному приемнику не страшны как классическому, так как приемный тракт обработвывет на подшумовом уровне.


Корреляция оптимальна в гауссовом шуме, а практически ВСЕ проблемы СЕГОДНЯШНЕЙ связи как раз в том, что искажения вовсе не гауссовские.
Иначе наша жысть была бы легка и проста как у сферического коня в вакууме.
Да и вообще корреляционный приёмник это математическая абстракция..


Цитата(Mister_DSP @ Nov 19 2016, 18:36) *
Итого когда классический GFSK детектор имеет SNR=+9дБ, детектор в LoRa-режиме обеспечивает в пределе до SNR=-20 дБ.(со знаком МИНУС)


Сравниваете тёплое с мягким.
Вот открываем шит на 1276 и смотрим::
FSK/OOK, 4.8 kb/s ..................................................... —119 дБм
LoRa, 62.5 kHz bandwidth, SF=6 (4688 b/s) ............. —121 дБм

То есть примерно на 2 дБ лучше. Так что сказок тоже не надо.


Цитата(Mister_DSP @ Nov 19 2016, 18:36) *
До предела Шеннона даже корелляционным приемникам далеко... По-мойму ещё 10-20 дБ остаётся до предела.


Современные системы (например DVB-x2), работают примерно в 1 дБ от Шеннона.
Это если считать от АЦП.
Если считать от антенны...... ну...... хорошие приёмники имеют право шуметь на 2 дБ всего, это реально. А то и меньше.
Так что как ни крути, децибела 3 до Шеннона получается.
Милливольт
Цитата(Dr.Alex @ Nov 19 2016, 15:27) *
Шыннон ни коим образом не запрещает «««Вытаскивать Сигнал Из-Под Шума»»», как некоторые любят выражаться.


Господа, вы меня пугаете. Причем, очень сильно.
Много лет считалось, что для любой радиолинии необходим расчет энергетического потенциала, например так:
" Пусть для того чтобы обеспечить требуемую вероятность ошибки при передаче одной двоичной единицы информации , необходимо иметь энергетическое отношение сигнал/ шум:
h2O.ТР=ЕО/NOе=(PC/PШ)ВХ*tО*fЭ; (9)
Тогда требуемое отношение сигнал / шум берут с некоторым запасом (системный запас), т.е.
(PC/PШ)ТР=gСИСТh2O.ТР/tО*fЭ; (10)
где gCИСТ- коэффициент запаса, выбирается от 2 до 10. Зададимся gCИСТ=4.
Для того чтобы линия связи обеспечивала передачу информации с помехоустойчивостью не ниже заданной, необходимо выполнить условие:
(РС/РШ)ВХі(РС/РШ)ТР; (11)
Приняв во внимание (8), (10) и (11) имеем:
(РИЗЛGSЭ/4pr2NOе)exp(-0.23ar)іgСИСТ h2o ТР/tО; (12)
Шумовая температура: Тэ=1000 К;
Отношение с/ш: g=50Дб;
Длительность элементарного символа: tО=75,3 мкс;
Длина волны: l=14,8 см;
Коэффициент запаса: gСИСТ=4;
Коэффициент затухания: a=0,1 дБ/км;
Коэффициент, учитывающий уменьшение скорости передачи: gR=0,75
Расстояние между передатчиком и приемником: r=250 км;
Скорость передачи информации – R = gR * log2 n/ tО = 23000 бит/с;
Спектральная плотность флюктуационных шумов на входе приемника - NO= кТэ= 1,38 * 10-20
Диаметр бортовой антенны: d=0.5 м;
Диаметр антенны наземной станции: D=25 м;
Коэффициент использования поверхности антенны: hА=0,55;
Требуемая средняя мощность сигнала излучаемого передатчиком в нашем случае выразится формулой:
РИЗЛіgСИСТ /gR * ln (1/2Рош ) * R * NO *(4lr/pdDhА)2 =1,74 * 10-6; "

см. напр. http://www.
techproof.ru/prunids-104[/i]6-1.html

Ну и т.п. расчеты.

Но тут явился некий ужасно корреляционный приемник, который при прочих равных условиях обеспечивает дальность связи много большую, чем все достижения человечества до того. А вообще-то он всего лишь: " Приемник, принцип действия которого основан на перемножении входного сигнала с одним или несколькими опорными сигналами известной формы и измерении функции взаимной корреляции. ".
Но с его появлением: " Я в шоке: 50 мВт мощности, антенны - простые проволочки - а приемник ловит на 4 км по прямой и без радиовидимости в городских условиях". (Ц).

Т.е. теперь расчет радиолинии - ффтоппку, методику измерения - туды-ж, оценку Ку и КНД антенн - само собой.
Это форум разработчиков или лампочку Ильича вкручиваем около новособранного детекторного приемника?
Dr.Alex
Цитата(Милливольт @ Nov 19 2016, 20:18) *
Но тут явился некий ужасно корреляционный приемник

А я-то здесь при чём? :-о
Mister_DSP
Не надо так воспаляться... rolleyes.gif

Факт остается фактом: отсутствие интерференционных проявлений до 1,5 км и связь в пределах 4 км без радиовидимости.

Покажите мне приемник на 600 бит/с с чутьём не хуже -135 дБм! Модель чипа в студию!
Dr.Alex
Цитата(Mister_DSP @ Nov 19 2016, 20:32) *
Покажите мне приемник на 600 бит/с с чутьём не хуже -135 дБм! Модель чипа в студию!

Не совсем понял, с какой целью мы должны вам что-то показывать? :-))))))))
Mister_DSP
у меня совершенно нет желания тут усираться и что-то доказывать тем кто даже не в курсе RFM96

тема себя исчерпала, пока полезного в ней ничего не вижу.

вопрос остается в силе: приемник с чутьём не хуже -135 дБм на 600 бит/с. дальше можете соревноваться в троллинге. селяви.
Dr.Alex
Цитата(Mister_DSP @ Nov 19 2016, 20:46) *
у меня совершенно нет желания тут усираться и что-то доказывать тем кто даже не в курсе RFM96

тема себя исчерпала, пока полезного в ней ничего не вижу.

вопрос остается в силе: приемник с чутьём не хуже -135 дБм на 600 бит/с. дальше можете соревноваться в троллинге. селяви.


Вы можете нормально объяснить, почему вам должны его показать?
Это докажет какую-то вашу мысль (какую?) и вы выиграете какой-то спор?

На вашем RFM96 стоит чип SX1276, всем здесь известный, и данные по чувствительности которого я вам привёл.
Милливольт
Цитата(Mister_DSP @ Nov 19 2016, 18:46) *
у меня совершенно нет желания тут усираться и что-то доказывать тем кто даже не в курсе RFM96
тема себя исчерпала, пока полезного в ней ничего не вижу.


Напрасно Вы так... Никакая разработка прибора эвфемизмов не терпит, и без ругани успешной не бывает. В противном случае изделие рождается мертвым.

Впрочем, если угодно, - приношу Вам извинения за форму изложения своих взглядов.
Grizzzly
Цитата(Mister_DSP @ Nov 19 2016, 20:46) *
вопрос остается в силе: приемник с чутьём не хуже -135 дБм на 600 бит/с. дальше можете соревноваться в троллинге. селяви.

Да вроде как вполне нормальное чутье, даже завышено, эдак, децибел на 10.

Для 600 бит/с Lora работает с ~ -145 дБм: рис. 1.

Ну а вот сами приемопередатчики:
http://ww1.microchip.com/downloads/en/Devi...c/50002346B.pdf
http://ww1.microchip.com/downloads/en/Devi...c/70005219A.pdf

Еще здесь на 5-м слайде есть табличка.
Dr.Alex
Цитата(Grizzzly @ Nov 20 2016, 00:21) *
Да вроде как вполне нормальное чутье, даже завышено, эдак, децибел на 10.

Для 600 бит/с Lora работает с ~ -145 дБм: рис. 1.

Еще здесь на 5-м слайде есть табличка.

Напутали вы что-то, и сайт мусорный какой-то.
Давайте всё-таки к первоисточнику.
Открываем самый распоследний шит: http://www.semtech.com/apps/filedown/down....file=sx1276.pdf
Смотрим стр.25: чувствительность ЛоРа на скорости 782 бит/с есть —131 дБм.
Сравнить с ФСК на такой скорости нельзя, так как нет такого режима или нет данных в шите.
Зато можно сравнить на скорости около 4800:
FSK/OOK, 4.8 kb/s ..................................................... —119 дБм (стр.16)
LoRa, 62.5 kHz bandwidth, SF=6 (4688 b/s) ............. —121 дБм (стр.25)
Grizzzly
Цитата(Dr.Alex @ Nov 20 2016, 01:27) *
Давайте всё-таки к первоисточнику.

Посмотрел табличку. Ну, для 600 бит/с будет где-то -133 дБм.

Вот здесь получается, что -134 дБм: http://www.semtech.com/images/datasheet/an1200.22.pdf
Рисунок 3 на странице 12.

Как раз есть кривые и для FSK, и для Lora.

P.S. Спасибо, что подправили меня и привели верный даташит sm.gif
Mister_DSP
Семтек лора калькулятор в помощь...
Даташит - это фигня, малое пространство вариантов и сравнить не получится.
Вот для 600 бит/с : -135 дБм
Нажмите для просмотра прикрепленного файла

Цитата(Милливольт @ Nov 19 2016, 19:12) *
Напрасно Вы так... Никакая разработка прибора эвфемизмов не терпит, и без ругани успешной не бывает. В противном случае изделие рождается мертвым.
Впрочем, если угодно, - приношу Вам извинения за форму изложения своих взглядов.

Извинения приняты.
Может я конечно своими выкладками "разбудил в вас зверя", но я считаю что это не повод ругаться.
Ну и форум разработчиков электроники он на то и форум, что иногда и "лампочку Ильича" приходится вкручивать sm.gif

А вообще это нисколько не нарушает расчета бюджета линка, алгоритм которого вы тут приводили, речь идет о несколько большей чувствительности приемника и его иммунитету к интерференции. Всё остальное как обычно. Никаких торсионных полей там нетsm.gif

Цитата(Dr.Alex @ Nov 19 2016, 23:27) *
Зато можно сравнить на скорости около 4800:
FSK/OOK, 4.8 kb/s ..................................................... —119 дБм (стр.16)
LoRa, 62.5 kHz bandwidth, SF=6 (4688 b/s) ............. —121 дБм (стр.25)

Некорректное сравнение!
То что для ФСК - это на частоте 433 МГц (Band 2 3)
А LoRa на 868 МГц (Band 1) и конечно она занижена для этого диапазона sm.gif

Вот для скорости 6,2 кбит в сек. чутье -124 дБм.
Что на 3 дБ выше чем вы указали , а скорость в 1,5 выше - не хило так да??? sm.gif

Я к тому что параметры ещё надо правильно выбирать!
Так что 1:0 в мою пользу =)))

Нажмите для просмотра прикрепленного файла
Grizzzly
Цитата(Mister_DSP @ Nov 20 2016, 15:09) *
Семтек лора калькулятор в помощь...

Интересная вещь! Спасибо. Жалко, что он не кроссплатформенный. Даже странно, это всё же разработчики "железа", а не секретари в офисе =) У меня Linux, под Wine тоже не завелось sad.gif Любопытно было бы посмотреть различные комбинации.
Mister_DSP
Цитата(Grizzzly @ Nov 20 2016, 13:15) *
Интересная вещь! Спасибо. Жалко, что он не кроссплатформенный. Даже странно, это всё же разработчики "железа", а не секретари в офисе =) У меня Linux, под Wine тоже не завелось sad.gif Любопытно было бы посмотреть различные комбинации.

Очень полезная программа для Лора-строительства, позволяет:
1) выбрать конфигурацию с максимальной чувствительностью при данной скорости
2) оптимизировать пакет и навернуть код-рейт FEC
3) узнать время длительности всей посылки, преамбулы

Одним словом, оптимизация параметров под свои цели.

Она требует Microsoft .Net framework и если нет нужного, скачивает и устанавливает....

Есть ещё другая программа(не момню название), для конфигурации регистров и их экспорта в текстовый файл sm.gif
Grizzzly
Вот что еще нашлось: http://strij.net/publikatsii/tehnologiya/l...strij-lora.html
Отечественный "Стриж", пишут, что чувствительность порядка -152 дБм. Какая-то сверхузкополосная модуляция. Не читал, поэтому не осуждаю :-))) Надо внимательно изучить их спецификации.

Нашелся онлайн калькулятор: http://strij.net/lpwan-kalkulyator
GeGeL
Сейчас играюсь с дешевыми образцами SX1278 (433 MHz only) от китайского производителя. Их (а также SX1276) будет поставлять в RU и UA известная компания наряду с RN2483 от Microchip.
Интерфейс - SPI (доступ к регистрам SX1278) + прерывания, C-библиотека имеется.
Позже дам отчет по BER в реальных условиях.

По кодеку: битрейт 400bps вполне реален для передачи поверх GSM. Предложенный мною модем потребует минимальной переделки, если останутся MELPE-фреймы (67.5 mS): просто передавать вместо одного бита подряд три одинаковых (18 8KHz сэмплов/3 периода на бит). Возможна оптимизация в виде предискажения вейформы, а также особенности коррелятора: возможно, эффективнее будет отбрасывать начало вейформы.
Также можно выйти на 600 bps (12 сэмплов/2 периода на бит).

Mister_DSP, какие исходники Вы берете за основу: MELP float, fixed или MELPE? И пробовали ли оптимизировать под ARM?
Тупо портирование рефференс-кода MELPE fixed на STM32F446 из Keil потребовало более 500 MIPS (анализ), так что там непочатый край работы по оптимизации. И, возможно, гуру подскажут: на сколько сложно перевести его на float? И на сколько это будет эффективно для Cortex F4?
Aner
Смотрите на Cortex F7 или даже на H7, у STM в Cortex F7 DSPшки их не такие шустрые против 2000 от TI, непочатый край работы по оптимизации есть и не только по оптимизации. Мысил бродят о когерентном LoRa на SX1276, но както все у них неудобно пока. Также хотелось ToF, но они в чип ничего не заложили.
Mister_DSP
Цитата(GeGeL @ Nov 20 2016, 17:03) *
Mister_DSP, какие исходники Вы берете за основу: MELP float, fixed или MELPE? И пробовали ли оптимизировать под ARM?
Тупо портирование рефференс-кода MELPE fixed на STM32F446 из Keil потребовало более 500 MIPS (анализ), так что там непочатый край работы по оптимизации. И, возможно, гуру подскажут: на сколько сложно перевести его на float? И на сколько это будет эффективно для Cortex F4?

Melp Float 2400.
Из оптимизации только - переделка структуры пакета.
А дальше - эксперименты. К примеру - можно выкинуть Фурье-магнитуды (10 FMAG) и все процедуры с ними связанные. С оставленными LSF-ками голос не хуже. Потом с размером фрейма можно поиграться. Но за 640 семплов лучше не заходить, так как звук уже похож на мычание.

Пробовал Melp 1200 fixed point, но он у меня даже на ПК быстро не пошел.

Заливаю всё на STM32F407 (STM32F4discovery). Декодер работает на 40 МГц, энкодер на 20 МГц больше.

Может конечно, я делаю неверно, но melpe-600 у меня нет. А тех pdf-ок которые есть (они тут мелькали в одной из тем здесь) мне недостаточно чтобы сделать полностью всё то что написали..
Mister_DSP
Попробовал уменьшить битрейт с 400 на 300, путём загрубления атрибутов речи. Пока не ахти, но всё-же выкладываю.
Раздражает синтетическо-старикашеский оттенок голоса! И чем-то на Codec2 смахивает (на 450 bps)

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

И всё-же на 400 bps вышло лучше.

Мне надо 300 bps, чтобы использовать совместно с LoRa RFM96 в режиме чувствительности -135,7 дБм.
С 400 bps чутьё только -133 дБм.



У меня точно такой же, но на чипе RFM96 и логотип HopeRF sm.gif
Они кстати, только до +17 дБм непрерывно могут давать, на +20 дБм можно если только с 1% длительностью (так в даташите написано)
ИМХО это - самый лучший приемо-передатчик, который я видел...
Такие значения чувствительности получать и без жестких требований по кварцу ! И устойчива к интерференциям - а это ОЧЕНЬ важно для моих задач (мобильный абонент в пешем движении).
GeGeL
400bps - это хорошо. Я так понимаю, фрейм у Вас остается 22.5 mS. Не пробовали играть с параметрами MELPE1200, объединяющего 3 фрейма? Или сделать все по документу на 600 (4 фрейма, 90mS)?

ПС: Прилепил библиотеку на SX1278 и даташит.
Aner
Жесткие требования по кварцу как раз таки есть. Лучше находить 2ppm, 5 ppm похуже. Обычно подешевле дотупны 10ppm_ные, на этой плате он и установлен. Тут нужно не забывать что такая высокая чувствительность ( или бюджет линка) во многом обеспечивается идеальными условиями и отлаженным, согласованым RF трактом с учетом антенны, не столько малой полосой.
Mister_DSP
Цитата(GeGeL @ Nov 21 2016, 09:44) *
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 бит/с.
Нажмите для просмотра прикрепленного файла

А на счет софта на RFM96 - так в инете его куча , проблем особо нет. Правда, я родил свой инклуд (модуль) для RFM96 на основе подобной библиотеки..

А вот мой "Какаду" на 400 бит /с. Из слышимых недостатков: местами невнятная речь и эффект звучащей струны:
Нажмите для просмотра прикрепленного файла

Надо бы попробовать несколько коротких фреймов обработать(4) и обобщить лишь часть параметров и сунуть в пакет (как в melpe 600).

Цитата(Aner @ Nov 21 2016, 09:47) *
Жесткие требования по кварцу как раз таки есть. Лучше находить 2ppm, 5 ppm похуже. Обычно подешевле дотупны 10ppm_ные, на этой плате он и установлен. Тут нужно не забывать что такая высокая чувствительность ( или бюджет линка) во многом обеспечивается идеальными условиями и отлаженным, согласованым RF трактом с учетом антенны, не столько малой полосой.

С вами согласен, при полосах уже 62 кГц, лучше использовать TCXO. А те кварцы что у меня стоят - разнятся на 300+ Гц, но на UHF набег аж в 3,6 кГц дал.
За неимением лучшего - скорректировал множитель синтезатора в приемнике, так чтобы этот набег компенсировался.

А на счёт ВЧ трактов, я индикатором напряженности поля нашел частоту при которой показания индикатора поля максимально. И надеюсь что на приеме ВЧ тракт братьями-китайцами сделан правильно!

Антенна - диполь полуволновый раскрыв 135 - 180 градусов 50-75 Ом. Так что в принципе ВЧ часть терпимо.

Ранее с CC1101 экспериментировал, так результаты были хуже - жуткая интерференция даже в комнате: приём глох
Mister_DSP
Попробовал объединить некоторые параметры из 4-х соседних фреймов. Ничего путного не вышло, возможно из-за отсутствия расширенной кодовой книги.

Сделал так 600 бит/с:
LSF: 7 бит (msvq_index[0], остальные не используются)
PITCH: 7
Gain: 8
BPVC: 4
итого: 26 бит/фрейм

длина фрейма 348 байт.

Вариант "советского какаду" с таким конфигом:
Нажмите для просмотра прикрепленного файла
Mister_DSP
Наверное, я помешался на вокодерах, но идея получить 200-300 бит/с при граничной разборчивости меня не оставляет совсем......

Освоил мульти-фреймовое кодирование, всё-же смог утрамбовать биты от 4-х фреймов.
Вот первые результаты:

600 бит/с (фрейм 320 семплов - в 2 раза меньше по сравнению с предыдущим образцом 640 семплов - выросла разборчивость):
Нажмите для просмотра прикрепленного файла

Ну и ради пробы 300 бит/с (фрейм 640 семплов - как в старой копии):
Нажмите для просмотра прикрепленного файла

По сравнению с предыдущим 300 бит/с - не трещит!

Секрет прост: некоторые параметры речевого сигнала меняются медленно - так что их можно было обобщить. Спасибо си-шному printf, который позволил проследить за параметрами sm.gif

В записях звука есть небольшое дрожжание тона, как в фирменном "какаду" скачанного с сайта melp.
Mister_DSP
Возможно пригодится ув. 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
Цитата(Mister_DSP @ Nov 28 2016, 12:39) *
Возможно пригодится ув. 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
Цитата(DASM @ Nov 29 2016, 08:13) *
я не понял, там что #ifdef DEBUG нету??

Если б было, то я об этом здесь не писал.
Дальнейший анализ этого злосчастного MELP 1200 привело меня к профайлингу.
Пытался вычислить что там так безбожно тормозит.
В итоге нашёл ответ : ВСЁ !!!
Даже замена функций вещественными БПФ и ДПФ ничего не даст, так как остальной код целочисленный и приходится конвертить целое в вещественное туда-обратно.
Видел этот референс с АСМ-инструкциями для Ti.

Так что остаётся лепить из 2400, с чего и начинал.

Обращался в Ti, сказали фиг мы вам что дадим, так как вы - не крупная фирма с громким именем! (dspini.com)
Хотел там сорцы TWELP 300 купить. Посмотреть реализацию.

Однако я сам на пороге 300 бит/с с качеством лучшим чем Codec2 450 bps! smile3046.gif
Mister_DSP
Все ушли на фронт или есть что нового?
Милливольт
Цитата(Mister_DSP @ Dec 7 2016, 12:10) *
Все ушли на фронт или есть что нового?

Пока ничего. Рыдал над ГОСТом. Полностью повторил методику поверки. Пришлось очень много переделать. Но до "отлично" не дотянул, да и не получится, видимо. Но честное "хорошо" есть. Если интересно, выложу иллюстрации для 800...
Mister_DSP
я тоже остановился на 600 бит/с - это как раз компромисс между чутьем приемника и разборчиостью.
есть версия на 300 бит/с - но голос слегка робототехнический.

с версией 600 бит/с - фрейм 240 семплов (30 мс)
с 300 бит/с - фрейм 320 семплов (40 мс)

в принципе речь стационарна до 30 мс. так что я особо не грущу - сойдёт и так! sm.gif

занят рисованием печатной платы....

ну на счет образцов - если нетрудно, выложите плиз.
Mister_DSP
и всё-же я смотрю, вы отклонились от первоначальной задумки: конкретный словарь на 1 человека.
всё-же на 100 бит/с звучало великолепно (в самом первом посте)
Милливольт
Цитата(Mister_DSP @ Dec 8 2016, 12:19) *
и всё-же я смотрю, вы отклонились от первоначальной задумки: конкретный словарь на 1 человека.
всё-же на 100 бит/с звучало великолепно (в самом первом посте)

Да, пока дела неважные. Эти записи сделаны для словаря "из двух человек", и именно их голоса и используются.
Т.е. работы еще до дьявола и больше.
Плохо с детскими голосами (большое отличие основного тона вверх) и т.п.
Сделали обсуждение этой темы. Результаты не радуют.
1. Научная ценность - 0 (здесь я согласен)
2. Никакого практического применения при отсутствии полностью универсального алфавита (спорно, на мой взгляд)
3. Применимость даже при полном успехе - сомнительная, т.е. заменить стандартный кодек 2400 на 800 даже при идентичном качестве - ничего не дает,
разумнее просто поработать над расширением полосы пропускания (пожалуй, согласен)
4. Коммерческие перспективы нулевые - ловить пару децибел в радиосвязи бессмысленно,
а повысить, допустим, пропускную способность каналов связи без разработчиков этих каналов - не по чину слэйвз (наверное, где-то так)
5. Затраты на реализацию алгоритма на современном программном уровне потенциально очень велики (с учетом зарплаты программистов) - а таких денег нет и не предвидится (вынужден согласиться).

Т.е. поиграться можно, но реальность - увы - вот она.
Mister_DSP
Основная задумка с вокодерами: с их помощью поднять бюджет линка, за счёт увеличения чутья приемника из-за с-ужения полосы пропускания(понижения скорости битов).

Мои данные получены на практике:
1) MELP 2400 бит/с - чутьё -124 дБм
2) Codec2 300 бит/с - чутьё -135 дБм

Выигрыш между 2) и 1) в 11 дБм, а это в 3,5 раза увеличена дальность при прочих равных. Это же здОрово!

С детскими голосами действительно проблема. Даже с MELP sm.gif Потому что как писали сами TI (они придумали MELP), кодовая книга составлена из мужксих и женских голосов дикторов (взрослые) TIMT на многих языках + немного аборигенов прихватили sm.gif
Милливольт
Цитата(Mister_DSP @ Dec 8 2016, 12:51) *
Выигрыш между 2) и 1) в 11 дБм, а это в 3,5 раза увеличена дальность при прочих равных. Это же здОрово!


Это если считать "напрямую" в безэховой камере, например. А в реальности подстилающий эфирный шум сильно подпортит картину.
Кроме того, во много раз проще и дешевле увеличить мощность, чем выжимать последние капли имени Бриллюэна. Тем более, надежность связи будет тем выше, чем пропорционально больше мощность передатчика относительно мощности шумов, которые могут неожиданно (Sic!) превысить свой базовый уровень.
Mister_DSP
Большая мощность будет в другой серии. rolleyes.gif

На счет эфирного шума, если частотный детектор имеет SNR= -10дБ (минус!) то он вытащит из-под шума, если он гауссов и не превышает полезный сигнал более чем в 10 раз.

Я встречал разнотолки по поводу зависимости между мощностью передатчика и дальностью: то-ли корень 4-й степени или 2-й.

При переходе к мощности передатчика с 50 мВт на 1 Вт дальность во сколько увеличится? В 4,5 раза или в 2,1 раз ?
Прямая видимость без загораживания.

КБ Беркут почитал - стало совсем грустно: имеем 20-кратное потребление тока, а дальность всего в 2 раза...
Милливольт
Цитата(Mister_DSP @ Dec 8 2016, 13:15) *
На счет эфирного шума, если частотный детектор имеет SNR= -10дБ (минус!) то он вытащит из-под шума, если он гауссов и не превышает полезный сигнал более чем в 10 раз.

Воля Ваша, но причем тут детектор? Он не имеет никакого значения. Давайте забудем о модуляции вообще, и будем пока оперировать только немодулированными радиоимпульсами.
Итак, для улучшения приема в смысле сигнал/шум нам необходимо согласовать полосу пропускания канала со спектром передаваемого сигнала. Оптимальным решением будет согласованная фильтрация, когда АЧХ канала идентична нормированному спектру сигнала.
Достичь этого можно разными способами: порубить сигнал на идентичные куски и обеспечить когерентное накопление. При этом уровень сигнала будет расти пропорционально корню квадратному из количества усреднений, а уровень шума по этому же закону начнет снижаться. В результате С/Ш будет тем лучше, чем больше усреднений мы сделали.
Но это не значит, что указанный метод единственный и уникальный.
Точно так же мы можем ограничить эквивалентный битрейт (как и при когерентном накоплении) и ограничить полосу приемного тракта. При этом после прохождения приемных частотно избирательных цепей возрастут марковость нашего сигнала и его внутриспектральные связи. Соотношение сигнал/шум улучшится даже немножко лучше, чем при когерентном накоплении в предыдущем способе (при прочих равных условиях). Лучше потому, что АЧХ когерентного накопителя будет гребенчатой, что обеспечит некоторый проигрыш (хотя, в принципе, это лечится методом Уэлча).
Т.е. для получения наилучшего С/Ш правильнее всего иметь узкополосный сигнал и узкополосный приемный тракт.
Теперь к детектированию. Известно и строго доказано, что энергетически оптимальная модуляция одна-единственная: 180-градусная фазовая манипуляция (кстати, любая(!) ЧМ проигрывает этому методу). Оптимальное детектирование известно также со времен Котельникова – свертка принятого сигнала с его инвертированной во времени копией. Принятие решения описывается оптимальным приемником Котельникова в варианте т.н. «идеального наблюдателя».
И теперь вопрос: какие преимущества в приеме дает описываемый Вами детектор? Как это может быть – неверна старая теория или появилась новая? Почему станция с ЛОРА будет выигрывать относительно существующих радиотехнических средств?

Цитата
Я встречал разнотолки по поводу зависимости между мощностью передатчика и дальностью: то-ли корень 4-й степени или 2-й.
При переходе к мощности передатчика с 50 мВт на 1 Вт дальность во сколько увеличится? В 4,5 раза или в 2,1 раз ?
Прямая видимость без загораживания.


Нельзя привязывать дальность к мощности! Во-первых: канал связи какой? Как в космосе при приемных параболах – чистый Гаусс? Или по земле ходим? Тогда – Райс с многолучевостью. Со всеми вытекающими.
Местность степь или на ней есть местные предметы? Если есть, то еще хуже. (Мне приходилось сталкиваться со случаями, когда многоэтажное здание на холме выполняло функцию классического ретранслятора Айзенберга – измерения показали фантастическую эффективность маломощной станции).
Какова проводимость подстилающей поверхности, она меняется от сезона к сезону? Если да, то как.
И т.д. и т.п.
Самое главное: чем ниже мощность, тем большее значение приобретают эти факторы. Мощный передатчик «пробивает» некоторые трудности (в ряде случаев на нелинейностях материалов в полосе распространения), а маломощный сигнал тухнет (личный опыт: вынянченная 50 мВт SSB портативка собственной разработки, которая блестяще выигрывала у 5-ваттных станций при испытаниях в речной долине, легла трупом в городе: то великолепная работа, то полная радионевидимость).


Цитата
КБ Беркут почитал - стало совсем грустно: имеем 20-кратное потребление тока, а дальность всего в 2 раза...


Вполне себе правдоподобно...
Mister_DSP
Милливольт, возможно я хреновый оратор, но почему тогда разработчики технологии LoRa (это не только HopeRF, Semtech, но и даже MicroChip и другие...) говорят что реальная дальность связи с их модуляцией значительно выше по сравнению с другими видами, при прочих равных?

Прикладываю файлик-pdf с описанием принципа модуляции LoRa: LoRa™ Modulation Basics, если есть желание и время - прогляните его пожалуйста и дайте ответ - в чём там собака зарыта? (по бОльшей дальности).

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

Пока я понял выигрыш идет из-за более низкого отношения сигнал/шум детектора, надбавки к бюджету связи из-за которого растут быстрее, чем потери бюджета из-за расширения полосы пропускания.

Ну и на счёт узкой полосы(очень! узкой) - в умных книгах написано, что узкополоски подвержены слижком интерференциям. Тоесть связь будет "через шаг", убедился сам, вогнав RFM96 в режим FSK, а также наигрался с CC1101. Там без FEC делать нечего!

А в LoRa уже и FEC и Spread Spectrum - второе даёт очень хорошую устойчивость к интерференциям: я радостный в пределах километра бегал по жилым кварталам и не заткнулось вообще !!! А вот FSK затыкался даже в квартире (12 метров от передатчика 10 мВт).

Про Ваш SSB трансивер с 50 мВт было интересно почитать! Очень здОрово, что мощность - не решающий фактор в дальности связи: срок службы источников питания без подзарядке также важный параметр!

Я с такой мощность установил дальность 3,5 км по прямой в городе с неровным рельефом без прямой видимости в снегопады... Антенны - проволочки.
Милливольт
Цитата(Mister_DSP @ Dec 9 2016, 08:15) *
Милливольт, возможно я хреновый оратор, но почему тогда разработчики технологии LoRa (это не только HopeRF, Semtech, но и даже MicroChip и другие...) говорят что реальная дальность связи с их модуляцией значительно выше по сравнению с другими видами, при прочих равных?


Да реклама это, и ничего больше.
Где "реальная дальность связи с их модуляцией значительно выше"?? В канале Гаусса? Быть не может! В условиях практического применения? Не исключено. Но в КАКИХ именно условиях? И почему.
Без объяснения причин это напоминает абсолютную криптографию при нераскрытом алгоритме или рекламу батареек: "работают на 20% дольше". Дольше чего? Нет ответа.
Кстати, точно так же славили ППРЧ. Ура. Потом выяснилось, что тоже ... есть некоторые ограничения... иногда...
Или CDMA. Встречали безумную рекламу как они на 40 мВт кроют двухваттный GSM как бык овцу?
А ЛоРа расширяет спектр. Ну и молодцы, правильно. Сосредоточенные помехи "размажутся", интерференция будет меньше гадить.
Но у них получается, что расширять спектр методом ЛЧМ - это кошерно. А другие способы негодящи.
Точь в точь как Эдисон заказывал попиков для предания анафеме переменного тока - бо он от диавола. Но Доливо-Добровольский даже не заметил этих богослужений, и теперь весь мир использует трехфазный ток. Но весь мир знает Эдисона, но почти никто не знает о Добровольском, а ведь гений был.
Такова сила рекламы.
Mister_DSP
Цитата(Милливольт @ Dec 9 2016, 08:46) *
Точь в точь как Эдисон заказывал попиков для предания анафеме переменного тока - бо он от диавола. Но Доливо-Добровольский даже не заметил этих богослужений, и теперь весь мир использует трехфазный ток. Но весь мир знает Эдисона, но почти никто не знает о Добровольском, а ведь гений был.
Такова сила рекламы.

Про Эдиссона и Доливо-Добровольского было интересно узнать, спасибо.
Но в случае с LoRa, я думаю, что это - перегиб! rolleyes.gif

Я разочаровался в (G)FSK модуляции и теперь если делать "цыфру" - то только на базе технологий расширения спектра сигнала чип-последовательностью....
AlexandrY
Цитата(Mister_DSP @ Dec 25 2016, 13:17) *
Укатал девайс с вокодером в релиз:


Ого какой редкий кодек поставили.
Не слабоват ли канал для такого?

Последние статьи по LoRa говорят, что он сильно деградирует когда вокруг появляются LoRa-сети
Милливольт
Цитата(Mister_DSP @ Dec 25 2016, 12:17) *
Укатал девайс с вокодером в релиз:

Поздравляю!
Какая мощность, что интерференция, на каком битрейте остановились?

P.S. С кодеком забрезжил рассвет. Ряд начал сходиться, и алфавит перестал разбухать. Оказалось, пирсоновский коррелятор неприменим для случая оценки ортогональностей вокодерных спектров (умом двинуться: это как ножовка режет в доме, режет на улице, а в сарае не режет даже дерево). Нигде в литературе и намека на это не встретил... Пришлось рожать специальную функцию.
Кстати, интересный побочный выхлоп: вполне пристойно работает обычный (т.е. без алфавита) вокодер на скорости 800-600 при передаче только трех главных частотных компонент и непередаче амплитудных характеристик вообще(!). Звук, понятное дело, компрессированный, но для радиосвязи самое то.
Mister_DSP
Цитата
Ого какой редкий кодек поставили. Не слабоват ли канал для такого?

Если использовать только VS1063, то это : MP3, OGG Vorbis, IMA ADPCM, a-law, u-law - всё испытывал - работает, звук отличный даже на 64 кбит/с (моно), на 96 кбит/с вообще натурально звучит! Это профили используются, когда нужен качественный звук и дальность в районе 300-500 м.

С использованием мощей STM32 становится доступно пускать вокодеры - портировал Codec2 (450 бит/с, 700 бит/с), MELP 2400 бит/с - с него рожал MELP 1200, 600, и даже 400, 300 бит/с.
С уменьшением битрейта дальность растёт, а звук на грани разборчивости. Компромиссно на 600 бит/с. Хорош звук на 2400. На 300 - уже похож на роботоподобный.

Цитата
Последние статьи по LoRa говорят, что он сильно деградирует когда вокруг появляются LoRa-сети

К счастью, пока не коснулось. О LoRa-сетях мало кто слышал в том месте где я живу...
Кроме LoRa, чип может FSK, GFSK, OOK. Минимальная полоса пропускания приемника до 5,4 кГц !

Цитата
Какая мощность, что интерференция, на каком битрейте остановились?

В текущей прошивке :
мощность 50 мВт (есть возможность до 100 мВт раскачать)
битрейт 2400 бит/с (есть возможность до 300 бит/с - ещё не все прошивки зарелизил)
в LoRa режиме интерференция не проявляет себя на ближней дистанции (до 1 км),
в (G)FSK режимах интерференция есть даже в ближних зонах (десятки метров)

Пока пакет очень короткий, имеет присутствие сильного оверхеда пакета из-за длинной преамбулы.
С длинными пакетами можно вытянуть чутье на 3 дБ лучше, тогда возрастёт латентность (задержка речи) на низких битрейтах на 1..3 с.(в зависимости от конфигурации).

Цитата
P.S. С кодеком забрезжил рассвет. Ряд начал сходиться, и алфавит перестал разбухать. Оказалось, пирсоновский коррелятор неприменим для случая оценки ортогональностей вокодерных спектров (умом двинуться: это как ножовка режет в доме, режет на улице, а в сарае не режет даже дерево). Нигде в литературе и намека на это не встретил... Пришлось рожать специальную функцию.

Вам проще! Потому что моих знаний пока хватило на то чтобы из 2400 сделать 600/300 бит/с путём объединения фреймов в мультифрейм.
Разработать вокодер с нуля я не умею! sm.gif

Цитата
Кстати, интересный побочный выхлоп: вполне пристойно работает обычный (т.е. без алфавита) вокодер на скорости 800-600 при передаче только трех главных частотных компонент и непередаче амплитудных характеристик вообще(!). Звук, понятное дело, компрессированный, но для радиосвязи самое то.

В служебной р/связи остановились на 600 бит/с.
Хотя есть некий twelp с 300 бит/с, и даже видео на ютубе про него, но я, просмотрев и послушав, пришел к выводу, что это - утка!
"Не верю!" - одним словом! sm.gif

На 300 бит/с Codec2 звучит с хрустом, а в MELP 300 голос в робот-стиле.
Mister_DSP
удалось добиться чутья приёмника -130 дБм, что дало возможность связаться стабильно на 3 км по прямой в городе без прямой видимости на антенны-четвертухи с другим абонентом находящимся на улице.

смог прокачать LoRa-модем вокодером с битрейтом 975 бит/с. качество речи удовлетворительно - не мямлит и не робот....

с операторами поругался (кто принимал участие в испытаниях) - забраковали режимы Codec и MEL всё что ниже 800 бит/с.

Пришлось остановиться на -130 дБм.

С кодек-2 на 300 бит/с чутьё было -135 дБм, но звук вообще никакой.....

Последение новости проекта с вокодером тут: http://vrtp.ru/index.php?showtopic=27904&st=390

утолкал в корпус, сделал две:

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

протокол испытаний прошивки на 1500 бит/с:

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