Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Речевой кодек для задачи, поставленной GeGel
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2, 3
Милливольт
Цитата(Mister_DSP @ Jan 7 2017, 16:05) *

Прочитал Вашу с Раковым дискуссию на тему о качестве звучания. Мне кажется, что Вы правы.
Но Вы напрасно используете нестандартизированные речевые фрагменты для демонстрации. Тем более, что Ваш голос имеет выраженную индивидуальность.
Когда делали ГОСТ для телефонии, то провели очень большую работу, причем каждая фраза специально адаптирована для групп звуков.
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла

Попробуйте, и оппонент пусть попробует. Сразу будет нагляднейшая иллюстрация
А если Вы еще и 600 битовые иллюстрации сделаете, то будет вдвойне убедительно: почему Вы выбрали именно такой битрейт, а не другой.

Желаю Вашему изделию всяческих успехов и широкого применения.
Mister_DSP
Цитата(Милливольт @ Jan 9 2017, 12:50) *
Попробуйте, и оппонент пусть попробует. Сразу будет нагляднейшая иллюстрация
А если Вы еще и 600 битовые иллюстрации сделаете, то будет вдвойне убедительно: почему Вы выбрали именно такой битрейт, а не другой.

А он и не сможет попробовать, так как он вырвал откуда-то тот звуковой образец. Или лукавит, боится обнародовать свой вариант прежде времени.

Согласен с вами, что тестировать надо на ГОСТовских фразах, одно непонятно -мне в микрофон их говорить или заливать во Flash именно голоса этих дядей/тёть? sm.gif

Цитата(Милливольт @ Jan 9 2017, 12:50) *
Желаю Вашему изделию всяческих успехов и широкого применения.

После небольшой передышки возобновлюсь.
Mister_DSP
Сделал несколько звуковых проб по ГОСТ-овским фразам для телефонии, фраза специально адаптирована для групп звуков.

В пробах в отдельных папках несколько мужских и женских голосов.
Женские голоса, как оказалось, воспроизводятся хуже.

a) Оригиналы - оцифровки с сэмплрейтом 8 кГц - то что подаётся на вокодер:
http://vrtp.ru/index.php?act=Attach&ty...t&id=721167

b ) MELP 2400 bps (Federal Standard - orig.) - оригинал на 2400 бит/с
http://vrtp.ru/index.php?act=Attach&ty...t&id=721169

c) MELP 1500 bps (modified) - модифицированный вариант на 1500 бит/с
http://vrtp.ru/index.php?act=Attach&ty...t&id=721170

d) MELP 975 bps (modified) - модифицированный вариант на 975 бит/с
http://vrtp.ru/index.php?act=Attach&ty...t&id=721171

e) Car Noise +12dB - оригинал/2400/1500/975 бит/с на фоне шумов авто-трассы, +12 дБ.
http://vrtp.ru/index.php?act=Attach&ty...t&id=721172



Подробнее: http://vrtp.ru/index.php?act=categories&am...mp;article=3660
Mister_DSP
Милливольт, хочу поинтересоваться у вас как специалиста по разработке вокодеров.

Можно ли звук, приложенный ниже сжать эффективно до 300 бит/с и меньше, но так чтоб разборчивость была ОЧЕНЬ близка к оригиналу?

В исходном звуковом образце частота дискретизации 6 кГц и данные пропущены через LPF со срезом 3 кГц. И потом через HPF со срезом 1 кГц. Затухание обоих фильтров 48 дБ/окт.
Итого имеем речевой сигнал очень обеднённый но разборчивый: 1-3 кГц тоесть ширина 2 кГц.

Его можно эффектно пожать?
Я так понимаю, что ни один из известных вокодеров здесь не подойдёт.

Каков вообще должен быть принцип?
Найти коэффииенты LPC? Сколько минимум их надо? Векторное квантование ?

По моим прикидкам чтобы сделать 500 бит/с - надо не более 24 бит (5 бит - энергия, 7 бит - основной тон, 1 бит - тон/шум, 11 бит - LPC коэффициенты или ссылка из кодовой книги по векторнуму квантовани.) При этом фрейм выбран 48 мс (оптимально 20 - 40 мс) - но терпимо.

в какую сторону плясать?

подозреваю такие кодеки пишут под заказ для ФСБ или аналогичных структур. везде кодеки с телефоноподобным речевым сигналом(диапазон 0-4 кГц)

Нажмите для просмотра прикрепленного файла
Милливольт
Цитата(Mister_DSP @ Jan 12 2017, 09:15) *

Идея ограничения полосы пропускания именно перед вокодером для более успешного сжатия начала прорабатываться английскими разработчиками с 1949 года. Основная мысль была такова: делим речевой сигнал на две полосы - низкочастотную, которую кодируем обычной ИКМ с пониженной частотой дискретизации, и высокочастотную, которую подаем на специализированный вокодер.
При синтезе эти сигналы суммируются, и нормальный спектр речевого сигнала восстанавливается. Разработка получила название "Полувокодер" и была успешно запущена в единичных экземплярах.
Так что - ничего нового под луной. В данном случае предлагается вариант полувокодера с отрезанной низкочастотной частью.
Что касается кодирования такого сигнала, то вокодер нужно будет адаптировать, т.к. АЧХ и ФЧХ примененных фильтров будут определять работу системы обнаружения пульса.
Сделал Вам иллюстрацию: как видите, ничего хорошего не получилосьНажмите для просмотра прикрепленного файла скорость 800.

Кстати, у МЕЛПа действительно есть какое-то неприятие русскоговорящими пользователями. Я прокручивал своим сотрудникам МЕЛП и своего новорожденного. Результат для МЕЛПа:
- И это по-каковски оно (!!) говорит? Это английский?
- Нет, конечно, слушай внимательно.
- А что оно сказало?
- Слушай еще раз!
- А-а-а, теперь все понятно

Если же МЕЛПовскую запись подать на компрессор типа полулогарифматора, то эти претензии уходят. Но получается очень жесткий и шумный сигнал, похожий на «поехали!» применявшийся в старой космической связи. Но разборчивость растет.
Mister_DSP
Цитата
Если же МЕЛПовскую запись подать на компрессор типа полулогарифматора, то эти претензии уходят. Но получается очень жесткий и шумный сигнал, похожий на «поехали!» применявшийся в старой космической связи. Но разборчивость растет.


Фиг его знает, все члены семьи понимают друг друга что на 2400 что на 975. На последнем правда на фоне шумов автотрассы тяжеловато.

Вы можете привести формулу закона полу-логарифматора? Хотел бы поэкспериментировать...

Y=A*LOG(B,X);

Y- выходной отсчёт
X - входной отсчет
A - коэффициент
B - основание логарифма (какое? 2, e, 10, ..?)
Милливольт
Цитата(Mister_DSP @ Jan 12 2017, 14:37) *
Фиг его знает, все члены семьи понимают друг друга что на 2400 что на 975. На последнем правда на фоне шумов автотрассы тяжеловато.
Вы можете привести формулу закона полу-логарифматора? Хотел бы поэкспериментировать...


Не взыщите, не помню, боюсь соврать.
В аналоговом варианте для DX связей делали так: обеляющий фильтр -> резистор -> два встречных диода на землю -> П контур на пассивных элементах.
Диоды выполняли требуемую функцию если Ку был выставлен правильно. Разборчивость была исключительной...
Mister_DSP
Цитата(Милливольт @ Jan 12 2017, 15:40) *
Диоды выполняли требуемую функцию если Ку был выставлен правильно. Разборчивость была исключительной...

я так делал в передатчике на VHF диапазон (два встречнo-параллельных диода в сборке BAV99):
http://vrtp.ru/index.php?showtopic=26250&st=120

Нажмите для просмотра прикрепленного файла
Mister_DSP
Вышла новая версия Codec2 - добавлен новый режим на 700 бит/с (версия "C").

Подробно про кодек здесь:
http://www.rowetel.com/?p=5373

Сорцы с модом 700C пока находятся только в этом репозитории:
https://svn.code.sf.net/p/freetel/code/codec2-dev/

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

Пример голосов сжатый 700С (по ГОСТ-у):
Нажмите для просмотра прикрепленного файла

ИМХО, звучит очень даже хорошо...

Милливольт, вы не могли бы оценить качество/разбочивость этого кодека по выложенному звуковому образцу ну и прогнать через кодек свои тесты(программы выше)?
Милливольт
Цитата(Mister_DSP @ Jan 15 2017, 17:05) *
ИМХО, звучит очень даже хорошо...
Милливольт, вы не могли бы оценить качество/разбочивость этого кодека по выложенному звуковому образцу ну и прогнать через кодек свои тесты(программы выше)?


Боюсь, Вы переоцениваете мою квалификацию.
Личное впечатление - хорошо, намного разборчивее МЕЛПа. Но ГОСТовская методика ведь требует меняющихся дикторов, меняющихся слушателей и последующей обработки результатов. Т.е. субъективная моя оценка - хорошо, а детально - это надо целую кухню разворачивать.
Лично мне кажется, что для Вашей РС этот кодек будет предпочтительнее...

P.S. Ваш покорный слуга определился с алфавитом, все получилось. Теперь проблема упаковки во фреймы и продумывание нечувствительности к единичным ошибкам, иначе работа коту под хвост.
Примеры 600бит/сек Нажмите для просмотра прикрепленного файла
И 300бит/секНажмите для просмотра прикрепленного файла
Упор сделан именно на разборчивость, хотя в окончательном варианте звук будет несколько лучше.

alex_os
2 Милливольт

А можно использовать PESQ сорцы (или чего-нибудь аналогичное) для сравнения низкоскоростных кодеков?
Mister_DSP
Цитата(Милливольт)
Лично мне кажется, что для Вашей РС этот кодек будет предпочтительнее...

Кодек2 версии 700С долго не хотел нормально работать на STM32.
Оказалось, что одна функция всё тормозила.
Подробнее с выкладками здесь: http://vrtp.ru/index.php?showtopic=27904&st=540

Вот как звучит детище Дэвида на моём детище:
Нажмите для просмотра прикрепленного файла

Конечно не фонтан, но лучше чем предыдущие версии кодека 700А и 700В.
kaktus_M
Оживлю тему.

В стадии разработки вокодеры на 356 и 178 бит/с.

Подробнее здесь: http://vrtp.ru/index.php?showtopic=27904&st=690

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

Милливольт
Итог работы по новому вокодеру: получилось то, что могло, а многое, - увы. Но, возможно, кому-нибудь эти соображения окажутся полезными.
https://goo.gl/tA9XYs
x736C
«В принципе, качество звучания не проигрывает в сравнении с 800 бит/сек от MELP»
Тут я бы поспорил. Но все равно очень круто.

Ссылка некорректная, лучше обернуть: https://goo.gl/tA9XYs
Милливольт
Спасибо за замечание, ссылку поправлю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.