Перейти к содержанию
    

Эхоподавление(если можно так сказать)

только следует учесть что oslec это линейный эходав, здесь все же больше подходит акустический

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По снятии АЧХ вроде вопросов особо нет, воспроизводим синус частотой скажем от 50 до 4000Hz и смотрим что получается на входе с микрофона.

А что воспроизвести, чтобы определить длину импульсной характеристики?

АФФтАр жжош!!! :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну как. Мы же определяем характеристики эхо канала.

Т.е. связи динамика с микрофоном. Таким способом мы получим на какой частоте какая амплитуда получается.

А вот касательно импульсной характеристики мне не всё понятно. Внутренний голос(не смеяться) мне подсказывает, что в моём случае длиной импульсной характеристики есть общая задержка от момента, когда на вход DAC подан сигнал до того момента, когда он в том или ином виде появится на выходие ADC и сойдет в 0. Иными словами - реакция на импульс прекратится и система перейдет в исходное состояние.

Как я понимаю это позволит прикинуть tail length для фильтров и от этого, как уже сказал ryhor, надо плясать при определении ресурсов.

 

 

только следует учесть что oslec это линейный эходав, здесь все же больше подходит акустический

Это да. Просто fontp сказал, что он будет всем хорош для меня и пока я ему верю :)

А что с чем должно быть линейно? Ну т.е. тут мне не совсем понятна суть. Меня тоже насторожили вчера слова

Echo cancellers depend on the hybrid working in a linear mode all the time

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

 

P.S. Я же говорил - я в этих делах только разбираюсь щас.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:bb-offtopic: Простите, сэр, вас случайно не Григорием величать? (у вас личный ящик письма не принимает)

 

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

 

ваше мыло в профайле ругается - типа не правильно

отпишитесь ryhor (одна собака) tut.by

 

 

 

Ну как. Мы же определяем характеристики эхо канала.

Т.е. связи динамика с микрофоном. Таким способом мы получим на какой частоте какая амплитуда получается.

А вот касательно импульсной характеристики мне не всё понятно.

 

 

что бы измерить длинну Импульной Характеристики (ИХ) надо видимо вспомнить определение ИХ.

 

И потом все таки взять себя в руки и подать таки Импульс в систему - что бы увидеть как она его пережовывает- т.е. какова ИХ системы? :)

 

забудьте слово гибрид - у вас есть:

- акустическое эхо

- и цифровой канал передачи данных

- и нету гибрида :) ну или он вам не заметен

 

 

 

Запостите картинку ИХ - интересно посмотреть

кстати на какой часатоте работает звуковая система? 8кГц?

Изменено пользователем ryhor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Нет. Ну я хоть и чайник в этих делах, но определение ИХ помню :)

Мой вопрос какраз и заключается в том, КАКОЙ именно импульс подать в систему? Для цифровой системы там всё ясно: импульс минимальной длительности и максимальной амплитуды. А тут же всё не так просто.

 

2.Я понимаю, что у меня нет гибрида(в том виде, в котором он присутствует а аналоговых тел. сетях).

Читаю я OSLEC:So we have three signals going to/from the echo canceller:

1. tx: the transmitted speech we are sending down the line сюда подам то, что сейчас воспроизводится в динамике

2. rx: the received signal, which will contain the echoэто у меня будет то, что я "поймал" с микрофона

3. ec: the (hopefully) echo cancelled signalа тут будет rx-tx Т.е. цель постигнута. Из near end сигнала был удалён far end и послан он обратно не будет. Следовательно на том конце человек не услышит своего эха

Для эходава ведь гибрид - это просто штуковина, которая отбивает эхо. Т.е. если мой "эхоканал"(аккустич. связь между динамиком и микрофоном) сможет вписаться по параметрам и выдаваемое эхо будет сравнимо по параметром с гибридом, то тогда этот ослик сможет работать в моей железяке :)

 

Главные вопросы, на которые я пока не могу найти ответа:

1. Echo cancellers depend on the hybrid working in a linear mode all the time Что тут имелось ввиду? Может ли мой уже,правильно, аккустический канал хотя-бы теоретически вписаться в это требование? Что тут имеется ввиду под словами working in a linear mode?

Мы не рассматрываем ведь loud speeker вариант, а связь идёт по корпусу девайса....Но пока я толком не понял что тут с чем должно быть линейно - я не могу оценить может ли это что-то быть линейно у меня в девайсе. тут мне нужен комьюнити help, так сказать :)

2. Какой импульс мне нужно подать и как? Я планирую воспроизведение какого-то импульса в динамик телефона(подача импульса на вход ЦАП) и собираем данные с выхода АЦП. Строим график, смотрим. Правильно ли я мыслю? Какой именно импульс я должен воспроизвести?

3. Ну и по поводу снятия АЧХ канала, после коментария DRUID3 мне аж самому стало интересно а как же действительно нужно было снимать АЧХ моего эхоканала? и действительно ли она необходима?

 

Система работает на частоте 8 килогерц. Телефония кароче :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это да. Просто fontp сказал, что он будет всем хорош для меня и пока я ему верю :)

А что с чем должно быть линейно? Ну т.е. тут мне не совсем понятна суть. Меня тоже насторожили вчера слова

Echo cancellers depend on the hybrid working in a linear mode all the time

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

 

P.S. Я же говорил - я в этих делах только разбираюсь щас.

 

Никому верить нельзя, даже себе. Мне можно (с)

 

Я не обещал Вам, что всё будет кокаколой. Я только предположил, что в вашем случае велика вероятность, что...

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

Но я же не знаю до какой степени эхо небольшое и линейное в вашей трубке. Акустические эхоподавители проектируются

всё-таки в основном для громкой связи

 

Echo cancellers depend on the hybrid working in a linear mode all the time означает очень простую вещь - что эхо отклик линеен по отношению к передаваемому сигналу. Для телефонного гибрида это обычно не совсем так - нелинейность нагрузки приводит к тому что появляются нелинейные продукты от передаваемого сигнала, которые, естественно не подавляются линейными адаптивными фильтрами. Поэтому в аналоговой телефонии адаптивными фильтрами эхо давится только до уровня 30-40 дб и ухом с чувствительностью 50-60дб прослушивается. В стандарте эхоподавления предлагается добивать нелинейные продукты,например, нелинейными компандерами - супрессорами

Но ваш микрофон и динамик - линейные устройства, особенно в слабосигнальном режиме

 

Отчасти непонимание телефонистских фраз связано с устаревшей телефонистской терминологией. По старинной телефонистской терминологии

двухпроводной линией называется любая среда распространения сигнала, в которой передаваемый и принимаемый сигнал не разделены (например аналоговый модемный канал без частотного или временного разделения), а четырёхпроводной линией - где приемный и передающий канал независимы (например цифровые) Гибрид появляется как устройство сопряжения четырёхпроводной линии с двухпроводной. На таком переходе всегда возникает эхо.

Ну и так далее... Путаница с ближними-дальними концами... Всё было однозначнона только на заре телефонии

В вашем случае до трубки канал цифровой (четырёхпроводный, даже если без проводов), а двухпроводная среда - акустическая ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну тогда первая строка гугла на запрос "импульсная характеристика"

 

http://ru.wikipedia.org/wiki/Импульсная_переходная_функция

 

т.е. как бы импульс для импульсной характеристики вполне определенная "весч". Что есть дельта функция для вас? - это один такой отсчет макс аплитуды (можно меньше) вокруг которого тишина...

как звук попадает в микрофон? - через динамик

как звук попадает в динамик? - вы его в него и посылаете через ЦАП

ну вот и приготовьте правильную посылку в ЦАП и пошлите ее

 

да - не шумите в комнате когда будете ИХ мерять и так же уберите возможные доп акустические каналы :). Ну на стол не ложите например - т.е. должен быть реальный акустисческий канал - подумайте как у вас там звук бегает

- по воздуху

- по плате

- по корпусу

...

 

 

 

я немного повторюся - для акустического канала вам надо

1. найти ИХ - в частности ее длину - отсюда станет ясна длина вашего адаптивного КИХ фильтра.

2. поглядеть АЧХ - насколько оно линейное - т.е вы в него синус - а оно вам в ответ насколько не синус? но тут если уж совсем каких то косяков железячных нет - все должно быть более менее - посему это больше как упражнение на разминку.

3. читаем про LMS и NLMS адаптивные фильтры.

4. Делаем реализацию фильтра с КИХ (3-4 строчки?) и реализацию "адаптатора" этого КИХ фильтра алгоритмом NLMS - столько же строчек по существу вопроса.

5. смотрим на результат - радуемся или плачем - в зависимости от успеха

6. думаем про "детектор двойного разговора"

7. конец

... через какое то время

8. если хочется бооольшего подавления - начинаем читать про RLS алгоритмы адаптации

 

 

Никакие готовые проекты вам не помогут - точнее они не нужны ибо сил на их анализ и привязывание к вашей ситуации надо гораздо больше чем сделать самом. Т.е. или вы осознаете что вам надо или нет:

если нет - готовые решения не помогут

если да - они вам не нужны

:) - вот такие пироги. По сути же вопроса (если не вдаваться в теорию по уши как говорится) - надо реализовать два алгоритма каждый из которых математически выражается одной строчкой. Один это КИХ, второй это NLMS. Но не вдаваясь в теорию "совсем ни капли"- вы не сможете их правильно применить - получается надо таки разобраться .

Можно глубоко, можно "по месту" - вот реализация КИХ с NLMS - это нормальное такое начало для получения более менее годного для практического применения результата без погреения себя в дебрях обработки сигналов.

Изменено пользователем ryhor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну тогда первая строка гугла на запрос "импульсная характеристика"

 

http://ru.wikipedia.org/wiki/Импульсная_переходная_функция

 

т.е. как бы импульс для импульсной характеристики вполне определенная "весч".

 

3. читаем про LMS и NLMS адаптивные фильтры.

4. Делаем реализацию фильтра с КИХ (3-4 строчки?) и реализацию "адаптатора" этого КИХ фильтра алгоритмом NLMS - столько же строчек по существу вопроса.

5. смотрим на результат - радуемся или плачем - в зависимости от успеха

6. думаем про "детектор двойного разговора"

7. конец

... через какое то время

8. если хочется бооольшего подавления - начинаем читать про RLS алгоритмы адаптации

 

Обычно в целочисленной реализации 3-4 строчки никак не получается, даже 30-40 не получится. Но к счастью, у автора темы процессор - floating-point.

NLMS можно было бы давно уже сделать в десяток строк. На floating-point процессоре, если время сходимости не напрягает - вообще может работать простейший LMS с очень низким коэффициентом адаптации, причём double-talk-detector в этом случае не нужен. ( Для 16-разрядных вычислений такое никак не пройдёт - потому не используется - у TI есть Application по поводу проблем LMS, порождённых разрядностью)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обычно в целочисленной реализации 3-4 строчки не получается, даже 30-40 не получится. Но к счастью, у автора темы процессор - floating-point.

B NLMS можно было бы давно уже сделать в десяток строк. На floating-point процессоре вообще может работать простейший LMS с очень низким коэффициентом адаптации, причём double-talk-detector в этом случае не нужен

 

да ладно 3-4 строчки на КИХ хватит :)

ну там проверить не нули ли пришли в гости - но это лабуда

 

NLMS в целых числах - 5 строчек считая вместе с "for(..."

ну там да - пару строчек до и пару после

 

Т.е. согласен - на все про все КИХ + NLMS 30-40 строчек в самый раз.

 

UPD - да пересмотрел - действительно что бы быстро и точность не сильно губить в 16 битах приходится немного цикл развернуть (unroll) и пошаманить. Однако у автора плавующие звери.

 

 

плавающая точка - это хорошо, но скорость адаптации все равно радует именно побыстрее. Т.е. если у вас фильтр адаптивный будет пару минут сходится к 20дБ подавления - то можно считать что его и нет. А малый коэфф адаптации именно это и подарит.

 

ну и детектор двойного разговора - точнее его отсутствие - будет "разносить" фильт в случае чего на ура - ибо он (фильтер) будет пытаться подстроится под подавление звука который совсем даже не из динамика пришел.

Изменено пользователем ryhor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да ладно 3-4 строчки на КИХ хватит :)

ну там проверить не нули ли пришли в гости - но это лабуда

 

NLMS в целых числах - 5 строчек считая вместе с "for(..."

ну там да - пару строчек до и пару после

 

Т.е. согласен - на все про все КИХ + NLMS 30-40 строчек в самый раз.

 

плавающая точка - это хорошо, но скорость адаптации все равно радует именно побыстрее. Т.е. если у вас фильтр адаптивный будет пару минут сходится к 20дБ подавления - то можно считать что его и нет. А малый коэфф адаптации именно это и подарит.

 

ну и детектор двойного разговора - точнее его отсутствие - будет "разносить" фильт в случае чего на ура - ибо он (фильтер) будет пытаться подстроится под подавление звука который совсем даже не из динамика пришел.

 

 

Так КИХ не отдельно, КИХ внутри цикла LMS

 

Я представлял себе это так - достаточно быстрая адаптация при калибровке или вначале сеанса связи. Пока клиент снимает трубку - даблтока нет.

Можно щелкнуть дельта-функцией или даже послать случайный шум в динамик. Главное, чтобы адаптация завершилась пока клиент несёт трубку к уху. А это секунда

Потом работать с очень низким коэф. адаптации. Некорелированый с передатчиком шум и базар при слабой адаптации ничего не собьёт. Аналоговые модемы так и работают - замораживают коэффициент адаптации после стартапа до минимальных значений. Малый кооф.адаптации даёт большое время сходимости,да, но малую ошибку оценки.

Кстати это и есть самый простой способ измерения импульсного отклика - LMS c малым коэффициентом адаптации. Если оценить все проблемы синхронизации при прямом измерении. Но я не думаю, что ему нужен импульсный отклик, разве что из любопытства. Ему нужен LMS! ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так КИХ не отдельно, КИХ внутри цикла LMS

 

Я представлял себе это так - достаточно быстрая адаптация при калибровке или вначале сеанса связи. Пока клиент снимает трубку - даблтока нет.

Можно щелкнуть дельта-функцией или даже послать случайный шум в динамик. Главное, чтобы адаптация завершилась пока клиент несёт трубку к уху. А это секунда

Потом работать с очень низким коэф. адаптации. Некорелированый с передатчиком шум и базар при слабой адаптации ничего не собьёт. Аналоговые модемы так и работают - замораживают коэффициент адаптации после стартапа до минимальных значений. Малый кооф.адаптации даёт большое время сходимости,да, но малую ошибку оценки.

 

 

Ну как любят мух отдельно от каклет - смешивать фильтр и адаптивный алгоритм - это на любителя :)

 

Адаптация 20дБ за 1 сек - это очень и очень хорошо - это даже вроде по какому то ИТУшному стандарту, но LMS и даже NLMS ее в среднем обеспечить не могут. Обычно надо несколько секунд. Потом пулять самому шум из своего динамика это конечно тема, но часто вы видели шипяще щелкающие телефоны в природе? Обычно пока дальняя сторона наговаривает нам в динамик местный фильтр успевает настроится и обеспечить отсутсвие эха для нее. Далее - акустический эхо канал устанавливается постепенно - например после того как пару динамик-микрофон к голове приложили он может и поменяться и в дальнейшем опять может поменяться - поэтому примораживать адаптацию на совсем немного "опасно".

 

Про "двойной разговор"

- Почему это нет DD пока клиент снимает трубку? это типа дано? в реальности к сожалению это совсем не так.

- Любой посторонний шум (речь, звуки) попадающий в микрофон при включенном адаптаторе будут его так сказать неправильно информировать :) - на что он будет хладнокровно подстраивать фильтр - в никуда. А то что коэфф адаптации маленький - это только как бы говорит что адаптатор почти выключен. Т.е. получается что "двойной разговор" "безопасен" когда нет адаптации, а если она все время нужна и достаточно активно?

 

 

 

Кстати это и есть самый простой способ измерения импульсного отклика - LMS c малым коэффициентом адаптации. Если оценить все проблемы синхронизации при прямом измерении. Но я не думаю, что ему нужен импульсный отклик, разве что из любопытства. Ему нужен LMS! ))

 

Начнем с конца - какой длинны LMS ему таки нужен? :) Хватит 32 тапа? или там все 200мс эха?

Ну и как бы ИХ меряется очень просто - посредством измерения ИХ :). Кстати не вижу какие там проблеммы с синхронизацие? пикнул и пиши звук.

 

а вот LMS с малым коэф. может намерять такого что никакой ИХ не снилось. Как долго давать адаптироваться? Ну в общем то в сферическом (в вакууме) случае они конечно сойдутся к одному и тому же, но все же лучше дейстовать прямыми методами, тем более что они проще и гораздо менее подвержены ошибкам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну как любят мух отдельно от каклет - смешивать фильтр и адаптивный алгоритм - это на любителя :)

 

На любителя разносить их в разные циклы ))

 

Адаптация 20дБ за 1 сек - это очень и очень хорошо - это даже вроде по какому то ИТУшному стандарту, но LMS и даже NLMS ее в среднем обеспечить не могут. Обычно надо несколько секунд.

 

Стандарт G168 требует адаптацию за одну секунду до -30 дб(на широкополосном сигнале, не на синусоиде, на синусовом сигнале эхоподавители адаптируются плохо) и NLMS её ВСЕГДА обеспечивал с запасом лет 20 уже как. 1 сек, это "не очень хорошо", а 'так себе". Теретически сходимость зависит от собственных значений функции автокорреляции сигнала, длины фильтра, коф. адаптации. Для фильтров длиной 16 мс, используемых наиболее часто в качестве "ближних" эхоподавителей, NLMS адаптируется по g168 на ура. Ш-ш-ш! и всё, какие там секунды... Когда эхоподавитель делал я, это Ш-ш-ш! происходило от щелчка подключения кодека к аналоговой линии. Когда говорун начинал говорить, а слухач слушать реально адаптация уже давно заканчивалась :-)

 

Если длинный фильтр - 200 мс )) - то тогда да, может быть и проблема с NLMS (устойчивость требует снижать коф. адаптации обратно пропорционально длине адаптивного фильтра), но длинные эхоподавители это особая песня.

 

Кстати на голосе эхоподавители адаптируются не очень, может с этим и связано отчасти Ваше ошибочное утверждение про несколько секунд. ( Или Вы говорите только о дальних или акустических). Голос - сигнал часто узкополосный. В самых изощрённых эхоподавителях входные сигналы "дифференцируются" отбеливающим фильтром (авторегресией как в вокодерах), а выходные "раскрашиваются" обратным интегрирующим. Время сходимости "на голосе" снижается в разы. Но стандарт говорит о шумоподобном сигнале.

 

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

 

Потом пулять самому шум из своего динамика это конечно тема, но часто вы видели шипяще щелкающие телефоны в природе? Обычно пока дальняя сторона наговаривает нам в динамик местный фильтр успевает настроится и обеспечить отсутсвие эха для нее. Далее - акустический эхо канал устанавливается постепенно - например после того как пару динамик-микрофон к голове приложили он может и поменяться и в дальнейшем опять может поменяться - поэтому примораживать адаптацию на совсем немного "опасно".

 

Про "двойной разговор"

- Почему это нет DD пока клиент снимает трубку? это типа дано? в реальности к сожалению это совсем не так.

- Любой посторонний шум (речь, звуки) попадающий в микрофон при включенном адаптаторе будут его так сказать неправильно информировать :) - на что он будет хладнокровно подстраивать фильтр - в никуда. А то что коэфф адаптации маленький - это только как бы говорит что адаптатор почти выключен. Т.е. получается что "двойной разговор" "безопасен" когда нет адаптации, а если она все время нужна и достаточно активно?

 

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

Я не говорил, что без DD - лучше. Я говорил, что всё зависит от уровня эха. При слабом, линейном, медленно меняющемся эхе может оказаться,

что кроме линейного LMS ничего больше и не нужно. Сделать LMS, посмотреть как работает, если нет - то переделать в NLMS. Если нет - приделать дабл-ток-детектор и прочие прибабахи (обычно адаптацию выключают не только на даблтоке (сильном принимаемом сигнале с дальнего конца) и но ещё и при слабом передаваемом сигнале). Адаптивный фильтр работает как коррелятор, накопляя коррелированую с входом компоненту выхода. Если коф. адаптации маленький, то он не выключен, просто он накопляет её очень медленно. ( Выключен при малых значениях коэффициента адаптации он действительно получается при 16-разрядной реализации фильтров. Но это просто потеря точности. При хорошей точности вычислений он работает, но неспешно. Почему Вы так уверены, что параметры среды будут меняться быстрее? Кончайте Вы "активно" заниматься словоблудием )

 

Начнем с конца - какой длинны LMS ему таки нужен? :) Хватит 32 тапа? или там все 200мс эха?

Ну и как бы ИХ меряется очень просто - посредством измерения ИХ :). Кстати не вижу какие там проблеммы с синхронизацие? пикнул и пиши звук.

 

а вот LMS с малым коэф. может намерять такого что никакой ИХ не снилось. Как долго давать адаптироваться? Ну в общем то в сферическом (в вакууме) случае они конечно сойдутся к одному и тому же, но все же лучше дейстовать прямыми методами, тем более что они проще и гораздо менее подвержены ошибкам.

 

Опять Вы торгуетесь как на базаре )) Вопросы всегда есть - с одно стороны, с другой стороны...

 

Проще всего выяснить практически - сделать 128 тапов и уменьшать (или увеличивать). Если там 200 мс эха, то нужен действительно настоящий акустический эхоподавитель или скорее проще похерить вообще всю эту "трубку", ввиду ограниченности ресурсов процессора.

Хватит ли 32 тапа? Вы кого спрашиваете? Я не знаю. Скорее всего нет. Но есть надежда, что 128 хватит. Почему? Отвечаю сразу, чтобы Вы больше ко мне не цеплялись. Я конечно не знаю, что там за трубка. Всяко бывает. Но опыт такой. Когда-то я делал эхоподавитель для порта FXO, к которому аналоговый телефон подключался напрямую. Можно предположить, что эхо в такой ситуации возникает не только от нескомпенсированости импедансов на гибриде (эхо линии), но включает и прямую аккустическую компоненту с телефонной трубки. Так вот, такое "ближнее эхо" отлично компенсировалось адаптивными фильтрами длиной 12 мс (96 отсчётов), независимо от используемых телефонных аппаратов.

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

Традиционные "ближние" линейные эхоподавители на АТС и тех же мобильниках эффективно давят эту слабую акустическую компоненту.

 

В сферическом вакуме - это "пикнул и пиши". Назаписываете шума и наводок вместо ИХ да ещё запутаетесь с синхронизацией начала. А LMS с исчезающим коф. адаптации даёт на шумоподобном сигнале то что нужно и теоретически и практически.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

умилительно читать ваше словоблудие :) - нет с вам спорить никак не есть самоцель

 

чисто пытаюсь уберечь людей от:

- измерения ИХ посредством LMS

- веры что NLMS сходится всегда и быстро независимо от окружения

:)

 

я покажусь занудой но задача стоит

- сделать Акустический Эхо Подавитель

 

я спрошу только один вопрос - вы точно делали акустический эхо подавитель (на цифровом или что как бы есть одно и тоже что и без канала связи)? - потому что судя по потоку мыслей вы делали что то другое. Отсюда видимо и советы а-ля измерять ИХ посредством LMS или ненужности DD при (N B)LMS алгоритмах. Так же радует глаз уверенность в невозможности изменения эхоканала в процессе работы - бывает конечно что он и стоит как вкопанный, но чаще нет и именно пока несут к уху он и меняется.

 

NLMS, LMS никогда не сойдутся ни к -30 и ни к -20дБ если в момент поднятия трубки (что есть начало работы адаптаро) в микрофон будет попадать сторонний (не из эхоканала) звук. Не сойдется он ровно на столько на сколько будет ему мешать этот сторонний источник. Я тут не причем - это природа такая, а теория ее только описывает. Как ни странно практика ее подтверждает.

 

И именно поэтому было придумано средство

- не адаптироваться в случае звука не из эхоканала.

- адаптироваться как можно быстрее в случае звука из эхоканала.

Этот подход тоже имеет проблеммы, но он более живуч в практике чем то что предлагаете вы.

 

Т.е. я немного критикую подход в котором мы

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

- и потом медленно и печально с малым (кстатит каким?) шагом адаптации будем "перетянуть" коэфф фильтра в правильную форму.

 

Чтобы этот подход дал приемлимый результа - надо делать несколько непростительных для реальной этой задачи предположений. Это не будет работать в средне-нормальном случае применения для автора топика - лучше сразу сделать все по уму и потом наслаждаться результатом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чисто пытаюсь уберечь людей от:

- измерения ИХ посредством LMS

- веры что NLMS сходится всегда и быстро независимо от окружения

:)

 

я покажусь занудой но задача стоит

- сделать Акустический Эхо Подавитель

 

я спрошу только один вопрос - вы точно делали акустический эхо подавитель (на цифровом или что как бы есть одно и тоже что и без канала связи)? - потому что судя по потоку мыслей вы делали что то другое. Отсюда видимо и советы а-ля измерять ИХ посредством LMS или ненужности DD при (N B)LMS алгоритмах. Так же радует глаз уверенность в невозможности изменения эхоканала в процессе работы - бывает конечно что он и стоит как вкопанный, но чаще нет и именно пока несут к уху он и меняется.

 

NLMS, LMS никогда не сойдутся ни к -30 и ни к -20дБ если в момент поднятия трубки (что есть начало работы адаптаро) в микрофон будет попадать сторонний (не из эхоканала) звук. Не сойдется он ровно на столько на сколько будет ему мешать этот сторонний источник. Я тут не причем - это природа такая, а теория ее только описывает. Как ни странно практика ее подтверждает.

 

И именно поэтому было придумано средство

- не адаптироваться в случае звука не из эхоканала.

- адаптироваться как можно быстрее в случае звука из эхоканала.

Этот подход тоже имеет проблеммы, но он более живуч в практике чем то что предлагаете вы.

 

Т.е. я немного критикую подход в котором мы

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

- и потом медленно и печально с малым (кстатит каким?) шагом адаптации будем "перетянуть" коэфф фильтра в правильную форму.

 

Чтобы этот подход дал приемлимый результа - надо делать несколько непростительных для реальной этой задачи предположений. Это не будет работать в средне-нормальном случае применения для автора топика - лучше сразу сделать все по уму и потом наслаждаться результатом.

 

 

1. Во всех телефонных модемах без частотного разделения между тем до сих пор используется простейший LMS в эхоподавителях.

Несмотря на встречный сигнал. Последнее время такое начали делать даже в радио-модемах. На непрерывном даблтоке.

Кроме того во всех модемных эквалайзерах для измерения ИХ обычно используется LMS по традиции. И это ничего))

 

2. В линейных голосовых эхоподавителях до сих пор используется NLMS в большинстве случаев. RLS - хорошо, но используется реже,

поскольку требует значительно больших вычислительных ресурсов. Несколько лет назад RLS вообще не использовался.

Я не спорю - в настоящих голосовых эхоподавителях dauble-talk детектор используется всегда. Но настоящие эхоподавители предназначены для "настоящего" эха.

3. Чтобы сделать всё по уму на все случаи жизни, нужно взять и сделать акустический эхоподавитель. А не морочить голову людям в форумах.

Но здесь обсуждается как бы не делать АКУСТИЧЕСКИЙ эхоподавитель. Я говорил, что для очень слабого и короткого эха это реально.

4. Вы и есть зануда, а не кажетесь. Предположения, конечно приходится делать, за неимением точных данных, но я не собираюсь просить за них у вас прощения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стандарт G168 требует адаптацию за одну секунду до -30 дб(на широкополосном сигнале, не на синусоиде, на синусовом сигнале эхоподавители адаптируются плохо) и NLMS её ВСЕГДА обеспечивал с запасом лет 20 уже как. 1 сек, это "не очень хорошо", а 'так себе". Теретически сходимость зависит от собственных значений функции автокорреляции сигнала, длины фильтра, коф. адаптации. Для фильтров длиной 16 мс, используемых наиболее часто в качестве "ближних" эхоподавителей, NLMS адаптируется по g168 на ура. Ш-ш-ш! и всё, какие там секунды... Когда эхоподавитель делал я, это Ш-ш-ш! происходило от щелчка подключения кодека к аналоговой линии. Когда говорун начинал говорить, а слухач слушать реально адаптация уже давно заканчивалась :-)

добавьте к сигналу ближней стороны скажем -20дБ шума и посмотрите куда ваш NLMS сойдется и как быстро он будет это делать.

 

Если длинный фильтр - 200 мс )) - то тогда да, может быть и проблема с NLMS (устойчивость требует снижать коф. адаптации обратно пропорционально длине адаптивного фильтра), но длинные эхоподавители это особая песня.

Кстати на голосе эхоподавители адаптируются не очень, может с этим и связано отчасти Ваше ошибочное утверждение про несколько секунд. ( Или Вы говорите только о дальних или акустических). Голос - сигнал часто узкополосный. В самых изощрённых эхоподавителях входные сигналы "дифференцируются" отбеливающим фильтром (авторегресией как в вокодерах), а выходные "раскрашиваются" обратным интегрирующим. Время сходимости "на голосе" снижается в разы. Но стандарт говорит о шумоподобном сигнале.

ало внимание - у нас голос :)

 

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

Шуметь придется в свой динамик что бы свой микрофон поймал сигнал - посему:

- причем тут канал?

- как можно не слышать шум из динамика своего телефона?

- как его услышит микрофон если его не слышит ухо?

- как громко надо шуметь что бы быть эффективным на фоне внешних шумов?

 

На самом деле этот метод не используют по причинам

- не красиво

- канал меняется и пшикать надо будет регулярно

- самое важное - на голосе эхоподавитель тоже нормально сходится

- качество подавления ограничены внешними шумами

- скорость схождения ограничены внешними шумами

 

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

 

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

да я уже план-график расписал чего делать и как. :)

 

Я не говорил, что без DD - лучше. Я говорил, что всё зависит от уровня эха. При слабом, линейном, медленно меняющемся эхе может оказаться,

что кроме линейного LMS ничего больше и не нужно. Сделать LMS, посмотреть как работает, если нет - то переделать в NLMS. Если нет - приделать дабл-ток-детектор и прочие прибабахи (обычно адаптацию выключают не только на даблтоке (сильном принимаемом сигнале с дальнего конца) и но ещё и при слабом передаваемом сигнале). Адаптивный фильтр работает как коррелятор, накопляя коррелированую с входом компоненту выхода. Если коф. адаптации маленький, то он не выключен, просто он накопляет её очень медленно. ( Выключен при малых значениях коэффициента адаптации он действительно получается при 16-разрядной реализации фильтров. Но это просто потеря точности. При хорошей точности вычислений он работает, но неспешно. Почему Вы так уверены, что параметры среды будут меняться быстрее? Кончайте Вы "активно" заниматься словоблудием )

 

Что значит я уверен или не уверен? я тут не причем - это все природа. Хочет меняет хочет не меняет :). Т.е. как бы дело не в уверенности или не уверенности, а в том что практика говорит (в прямом смысле в этом случае :) ). Т.е. еще раз параметры эхоканала - меняются (считайте что это дано).

 

Ну а так ваш план-график не сильно отличается от моего, но мне не нравится делать LMS не пытаясь даже понять чего им будет компенсироваться.

 

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

 

В сферическом вакуме - это "пикнул и пиши". Назаписываете шума и наводок вместо ИХ да ещё запутаетесь с синхронизацией начала. А LMS с исчезающим коф. адаптации даёт на шумоподобном сигнале то что нужно и теоретически и практически.

- алгоритмы не сложные

- нет проблем с синхронизацией - цель измерения увидеть форму и длину ИХ - работы на пару часов кодить и 5 минут смотреть на данные

- то что надо сделать практически было уже три раза написано, бездумно лепить LMS с малым коэфф и компенсировать это "решение" шипением в свой динамик - это как бы... даже слов нету что :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...