реклама на сайте
подробности

 
 
> MELP (MELPe) 600, всё про него
kaktus_M
сообщение Apr 16 2017, 11:17
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 16-04-17
Пользователь №: 96 565



Уважаемые форумчане!

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

Поэтому осмелился восполнить пробел и сделать MELP 600 бит/с самому. sm.gif
За основу были взяты исходники от MELP 2400 бит/с (референтный код, с плавающей точкой).
Заставив его собираться в GCC, начал эксперименты.

Как известно, исходный фрейм в MELP 2400 - это 22,5 мс, что соответствует 180 одноканальным семплам.
Биты фрейма расписываются так:
Линейно-спектральные частоты - 7+6+6+6 бит = 25 бит (10 LSF частот типа float(4 байта) векторно квантуются в 4 стадии)
Магнитуды Фурье: 10 бит
Энергия фрейма: 5 + 3 бита - квантуется по половине фрейма
Основной тон - 7 бит
Фильтры по 4-м полосам: 4 бита
Джиттер: 1бит
Синхробит - 1 бит

Путём экспериментов выяснил, несколько важных моментов:

1) Магнитуды Фурье можно выкинуть, вместо них домножить на 1.0
2) Синхробит- вообще не нужен
3) Джиттер - информация тривиальная и получается вычислением других данных

Получается, вместо 56 бит можно использовать только 44 бита без заметного ухудшения качества и распознаемости речи.

Далее, известно, что параметры человеческой речи могут быть описаны стационарно без потерь разборчивости на фреймах длительностью не более 40 мс.
Что соответствует 320 семплам при Fs=8кГц.
Именно фреймы такой длины используются в кодеке Codec2 (опции с малыми битрейтами).

Выбор между Codec2 и MELP2400 в качестве отправной точки тоже неслучаен.
Эксперименты показали, что Codec2 крайне не поддается шумоподавлению с помощью адаптивных фильтров - флуктуации помехи на фоне полезного сигнала сохраняются и ведут к резкому падению речевой разборчивости.
Зато MELP2400 отлично работает с адаптивным шумоподавителем, речь без дополнительных фоновых звуков.

Основная трудность: создание своей собственной кодовой книги путём векторного квантования.
Нужно из речевых фрагментов получать 10 LSP коэффициентов, затем их преобразовывать в LSF-коэффициенты.
Всё это отражено в исходниках MELP2400.

Проблема возникла на этапе векторного квантования LSF - было непонятно, как из векторов LSF оставить только те, которые нетривиальныпо отношению друг к другу.
Читал про LGB-алгоритми про центроиды: кроме теории практических примеров - ноль, не говоряуже о том что квантование должно быть мульти-стадийным.

Завершилась эпопея с кодовой книгой - путем скачивания с pudn.com программы одного китайского гражданина, которая после допиливанияделала то что надо!
А именно: из LSF-векторов строила кодовую книгу - оставляла нетривиальные вектора, да и причем уровень разрядности и количество стадий можно кастомно задать!

Не буду напрягать промежуточными изысканиями, скажу что данного битового распределения хватает чтобы получить MELP600:

LSF: 8 бит - одноуровневое векторное квантование (256 элементов кодовой книги из голоса конкретного диктора)
Gain: 5 бит - усиление усредняетсяза2 полуфрейма и квантуется скалярно 32 значениями
Pitch: 7 бит- тут без изменений
BPV: 4 бит- тоже без изменений

Итого 24 бита- ровно 3 байта на 1 фрейм.
Фрейм взят 40 мс - 320 семплов.

При таком раскладе получаем MELP со скоростью 600 бит/с.

Сделал несколько наглядных иллюстраций : 2 прикрепленых архива.
В каждом: оригинал + синтезированная вокодером запись.

Брал голоса дикторов (женский голос).

Прикрепленный файл  Vahonina_Elvira.rar ( 913.3 килобайт ) Кол-во скачиваний: 56


Собственно вот в чём вопрос:

1) годится ли полученный MELP 600 бит/с в качестве вокодера для служебной радиосвязи?
2) какова разборчивость в процентах от всего звукового образца?

3) Помогите с векторным квантованием четырёх величин - по какому алгоритму можно проквантовать уровни громкости в 4-х соседних фреймах?

Звуковая иллюстрация второго диктора:

Прикрепленный файл  Baldenkova_Svetlana.part1.rar ( 700 килобайт ) Кол-во скачиваний: 49

Прикрепленный файл  Baldenkova_Svetlana.part2.rar ( 571.63 килобайт ) Кол-во скачиваний: 44
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kaktus_M
сообщение Apr 18 2017, 13:25
Сообщение #2





Группа: Участник
Сообщений: 5
Регистрация: 16-04-17
Пользователь №: 96 565



petrov, Вы правы, M_DSP это я... sm.gif Пришлось зарегаться по-новой так как забыл пароль и ящик на который регистрировался ранее...

Милливольт, большой Вам привет и велкам! sm.gif

Эксперименты показали, что 8 бит на кодовую книгу не хватает, чтобы охватить все голоса. Оптимально 12 бит или ещё с запасом- 13 бит.
Сделал нарезку из 10 звуковых файлов мужских голосов + 10 женских голосов.
Из этой нарезки сделал 2 кодовые 13-бит:

1) Одноуровневое векторное квантование 2^13 = 8192 наборов LSF

2) Двух-уровневое векторное квантование 7+6 => 2^7 + 2^6 = 192 наборов LSF

Вариант 2 быстрее и экономичнее, но искажения больше, чем в варианте 1.

Первый вариант с кодовой книгой VQ(13):
Прикрепленный файл  vq13.rar ( 864.43 килобайт ) Кол-во скачиваний: 30


Второй вариант с MSVQ(7+6) - звучит хуже:
Прикрепленный файл  msvq76.rar ( 890.27 килобайт ) Кол-во скачиваний: 26


В этих двух пробах 1 фрейм = 30 мс и 29 бит на фрейм.

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

Так что скорее всего американский акцент кодека MELP связан с тем что кодовая книга там под граждан СШАsm.gif

Получившийся битрейт 966,666666... бит/с - радиотракт моего приёмника оптимально прокачивается пакетом с достижением чутья -130 дБм.
При этом качество звука намного лучше, чем в прошлой конфе(тема M_DSP) на 975 бит/с.

Цитата(Dr.Alex @ Apr 17 2017, 11:56) *
Так а может лучше совершенствовать приёмник, чем ухудшать и так похабный звук? :-))))))

sm.gif
Использую готовый модуль LORA1278F30, дальность радиосвязи там хоть отбавляй. С мощностью 1 Вт и чутьем -124 дБм
Но есть соблазн всегда получить больше: цель сделать -130дБм.

Есть ли в природе приемник дающий чутье более -133 дБм на скорости 1 кбит/с ? Частоты 70 см диапазона

Сообщение отредактировал kaktus_M - Apr 18 2017, 13:21
Go to the top of the page
 
+Quote Post
_pv
сообщение Apr 18 2017, 14:55
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(kaktus_M @ Apr 18 2017, 19:25) *
Цитата(Dr.Alex @ Apr 17 2017, 16:56) *
Так а может лучше совершенствовать приёмник, чем ухудшать и так похабный звук? :-))))))

Есть ли в природе приемник дающий чутье более -133 дБм на скорости 1 кбит/с ? Частоты 70 см диапазона

-133дБм при паре кГц полосы это, если правильно посчитал, грубо говоря - около 1нВ/Гц, что уже недалеко от температурного шума 50 Ом, так что пожалуй только ухудшать похабный звук.

да кстати, вопрос, а насколько хуже (а может и лучше?) будет разборчивость речи у аналогового канала АМ/ЧМ с полосой, допустим в пару кГц, и с таким же с/ш чтобы туда 1кБит/с для melp600 влез?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 03:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01489 секунд с 7
ELECTRONIX ©2004-2016