|
|
  |
Эхоподавление(если можно так сказать), Нужен реальный совет под реальную задачу. |
|
|
|
Jul 31 2009, 22:37
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
Имеем трубку(телефон), режим связи: обычный(не "громкая связь"). Микрофон и динамик имеют аккустическую связь, которую конструктивными методами устранить не удаётся никак. Имеем эффект эха, задержка в канале большая - поэтому эхо мозговым фильтром пользователя не компенсируется и вызывает раздражение  В девайсе использован вокодер Speex, однако стандартная реализация его echo сanceller очень громоздка и предназначена больше для организации громкой связи. Для применения этой фичи as is нет оперативки, да и оптимизировать опять много чего придётся.....в общем не вариант. Нужно как-то организовать простой алгоритм эхоподавления применительно к конкретной трубке, с конкретными параметрами ну и т.д. Как бы сделать простое "вычитание" воспроизводимого динамиком сигнала из того, что поступает в микрофон и не передавать удалённому абоненту его-же голос?
--------------------
The truth is out there...
|
|
|
|
|
Aug 1 2009, 07:22
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(sigmaN @ Aug 1 2009, 02:37)  Имеем трубку(телефон), режим связи: обычный(не "громкая связь"). Микрофон и динамик имеют аккустическую связь, которую конструктивными методами устранить не удаётся никак. Имеем эффект эха, задержка в канале большая - поэтому эхо мозговым фильтром пользователя не компенсируется и вызывает раздражение  В девайсе использован вокодер Speex, однако стандартная реализация его echo сanceller очень громоздка и предназначена больше для организации громкой связи. Для применения этой фичи as is нет оперативки, да и оптимизировать опять много чего придётся.....в общем не вариант. Нужно как-то организовать простой алгоритм эхоподавления применительно к конкретной трубке, с конкретными параметрами ну и т.д. Как бы сделать простое "вычитание" воспроизводимого динамиком сигнала из того, что поступает в микрофон и не передавать удалённому абоненту его-же голос? То что Вы проговариваете в микрофон всё равно попадает в ухо без всякой задержки и фильтруется мозгом. Эхо "себя", которое Вы слышите, возникает не на вашем конце провода, а на удалённой телефонной станции. Главным образом там оно и должно подавляться. Поскольку дальнее эхо подавлять сложно и возможно это только цифровыми методами - адаптивными фильтрами. Эхо которое звучит с задержкой для Вас и должно подавляться обязательно, возникает как "ближнее" (как бы без задержки) на дальней телефонной станции, там обычно и подавляется.. Наоборот, на ближней к Вам телефонной станции возникает эхо, которое мешает не Вам, а вашему удалённому абоненту. Тот сигнал, который передаётся Вам с дальнего конца, отражается при проигрывании в Вашу 2-х-проводную клиентскую аналоговую линию на ближнем конце. Эхо всегда возникает при переходе с 4-х-проводной на 2-х-проводную линию, ещё не доходя до телефона. Хотя телефон тоже вносит свою лепту, особенно благодаря нелинейностям. Каждая АТС должна чистить за собой ближнее эхо, во всяком случае так принято в абонентских коммутируемых сетях. Принято считать, что временная протяженность импульсной характеристики (задержка) ближнего эха составляет до 20 мсек Станция обычно за собой эхо и чистит. В аналоговом виде раньше использовались гибриды - аналоговые мостовые схемы-компенсаторы эха. Чтобы сколько-нибудь прилично достигнуть баланса необходимо было использовать хорошие большие, похожие на идеальные, трансформаторы, которые и использовались на станциях первого поколения. Потом переходили на микротрансформаторы и оптронные фитюльки-гибриды , которые компенсировали эхо плоховато, собственно, почти никак, особенно на реактивной (не чисто активной) или ненормируемой нагрузке. Но зато к тому времени появилась цифровая обработка адаптивными линейными эхоподавителями и эти гибридики, собственно, нужны только для того, чтобы создать условия для гарантированой работы цифровых эхоподавителей (во всём диапазоне частот энергия эха должна быть ниже энергии сигнала, его вызывающего). Подавление ближнего эха (которое на дальнем конце звучит с задержкой) - это функция АТС, а не трубки. Даже если у Вас будет трубка такая большая, что в неё можно засунуть хороший трасформатор или dsp-процессор с линейным эхоподавителем или вообще отключите свою трубку, ближнее эхо (отражённый сигнал) будет возникать для удалённого абонента на Вашей АТС при проигрывании сигнала в аналоговую линию примерно 50 ом+- 100% волнового сопротивления ))
|
|
|
|
|
Aug 1 2009, 07:42
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(fontp @ Aug 1 2009, 10:22)  Главным образом там оно и должно подавляться. С какого бодуна, удаленный конец должен бороться с эхом ставшим заметным по причине неприеслимо больших задержек создаваемых ВАШМИ кодеком. На дальнем конце, если обеспечили удовлетворительный уровень отражения и не внесли существенных задержек, то и не обязаны ни за что "бороться". Цитата Дальнее эхо подавлять сложно и возможно это только цифровыми методами - адаптивными фильтрами. Стпень сложности зависит от природы эха. По любому, это много проще, нежели подавление акустического эха в произвольном акустическом оформмлении. Цитата Эхо которое с задержкой и нужно подавлять, возникает как "ближнее" со стороны ближней телефонной станции. Ближнее, на то оно и ближнее, что сколь-нибудь существенной задержки НЕТ ВООБЩЕ. Цитата Эхо всегда возникает при переходе с 4-х-проводной на 2-х-проводную линию, ещё не доходя до телефона. Аналоговый двухпроводный Абонентский Комплект составляет собой неразрывное целое с Телефоном и рассматривать их по отдельности просто невозможно. Цитата Чтобы.... Дальше вообще помолчу.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 1 2009, 07:57
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(sigmaN @ Aug 1 2009, 01:37)  Микрофон и динамик имеют аккустическую связь, которую конструктивными методами устранить не удаётся никак. Имеем эффект эха, задержка в канале большая - поэтому эхо мозговым фильтром пользователя не компенсируется и вызывает раздражение  Сдается мне, что Вы все совершенно сумбурно и не правильно описали  ситуацию и причины Первый вопрос у кого из абонентов проблемы - у Вас - у соббеседника - у обоих Второй В каких условиях возникают проблемы - собеседник аналоговый абонент - ISDN - Мобильник - Такой-же как Вы и вообще у Вас своя система коммутации Цитата(fontp @ Aug 1 2009, 10:46)  Где Вы такое прочитали? Рекомендации, тогда еще, МКТТ всосаны, можно сказать, с молком матери. И осенью 25 лет, как занимаюсь связным оборудованием. Посему то, что Вы где-то слышали, читали в интернете, .... можете оставить при себе. Цитата(fontp @ Aug 1 2009, 10:46)  Напротив, я написал.. А я прочитал  и сообщаю, что написанное Вами есть каша из разрозненных явлений, фактов и слухов.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 1 2009, 08:05
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(zltigo @ Aug 1 2009, 11:57)  А я прочитал  и сообщаю, что написанное Вами есть каша из разрозненных явлений, фактов и слухов.  Я и не писал статью. Здесь, например, можно найти более систематическое изложение http://www.commsdesign.com/showArticle.jht...icleID=16502325Можно догадаться, что канал - всё таки цифровой (раз там где-то кодер SPEEX), тогда "трубка" эмулирует станцию ( не телефон!), следовательно автору нужен линейный эхоподавитель (раз не спикерфон) Совсем простых методов компенсации не получится (акустический эхоподавитель в любом случае сложнее линейного. но и линейный вычислительно тоже не прост) В SPEEX эхоподавитель, насколько я помню, реализован в float и на базе FFT. В этом смысле, алгоритм может быть проще - если реализовать в fixed-point (возможно быстрее) и NLMS (возможно меньше памяти). А в остальном, алггоритм в любом случае не может быть простым. Ближнее эхо только по сравнению с дальним "без задержки", а на самом деле имеет протяжённость во времени и "тупо вычитать" не получится. Нужен ближний эхоподавитель, обычно делают на протяженность 16 мс(128 тапов) импульсной характеристики отклика, может можно попробовать меньше (4 мс ?), если связь чисто аккустическая (прямое подключение АЦП и ЦАП без гибрида и линии) и линейная В open source есть эхоподавители на С, NLMS здесь, хоть тормоз, конечно, но хоть, кажется, не float http://www.rowetel.com/ucasterisk/oslec.htmlЗдесь даётся ещё более лучший эхоподавитель LEC в исходниках C. Он RLS, в исходниках,есть акккустический, есть вариант для tms5х, но, строго говоря, не совсем open source )) http://www.miketdspsolutions.com/Можно попробовать извлечь оттуда содержательный код и сократить линию задержки до минимума...
|
|
|
|
|
Aug 1 2009, 11:06
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
Цитата тогда "трубка" эмулирует станцию ( не телефон!) Ошибку свою понял. Термин телефон я использовал в вопросе необдуманно. Цитата Стпень сложности зависит от природы эха. По любому, это много проще, нежели подавление акустического эха в произвольном акустическом оформмлении. Это радует. На это вся надежда  Цитата Первый вопрос у кого из абонентов проблемы - у Вас - у соббеседника - у обоих У обоих. Цитата В каких условиях возникают проблемы - собеседник аналоговый абонент - ISDN - Мобильник - Такой-же как Вы и вообще у Вас своя система коммутации Такой-же как я. Система коммутации "голос в пакетах". Используется непрозрачный CSD. Проблема в следующем(как я её вижу): Абонент 1 говорит привет, голос оцифровывается, жмётся вокодером и передаётся по цифровому линку.Далее, по этому линку наше привет идёт 800ms(где-то так и идёт). Т.е. абонент 1 уже давно закончил выговаривать привет и ждёт. Тут Абонент 2 наконец слышит Привет из динамика своего телефона(прошло 800ms). При воспроизведении слова Привет, на стороне Абонента2 этот-же привет воспринимается микрофоном Абонента 2 как речь, оцифровывается, жмётся и отправляется на сторону Абонента 1. Проходит ещё 800ms и Абонент 1 слышит свой Привет, но, естественно уже тише.... Как я понял, это какраз far echo. Т.е. фильтрацией должен заниматься Абонент 2. И делать он должен это по принципу: я не воспринимаю на входе микрофона ту аудиоинформацию, которую сам-же воспроизвожу через свой динамик. Цитата Аппаратные AEC+LEC рассматриваются? нет. Некуда там даже резистор лишний припаять  P.S. Спасибо за ссылки, щас гляну. float'ом нас не напугать. Проц с FPU брался специально с учётом того, что исполнитель(я) неопытный и плывучка пригодиться. Вообще, speex собран float. По причине наличия FPU - такой подход оказался быстрее по тестам.
--------------------
The truth is out there...
|
|
|
|
|
Aug 1 2009, 11:22
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(sigmaN @ Aug 1 2009, 15:06)  Как я понял, это какраз far echo. Т.е. фильтрацией должен заниматься Абонент 2. И делать он должен это по принципу: я не воспринимаю на входе микрофона ту аудиоинформацию, которую сам-же воспроизвожу через свой динамик. Ну да, это far эхо для абонента 1 для абонента 2 (да и по происхождению) это near эхо и именно он должен его подавлять Теоретически всегда эхо должно подавляться ближним концом, но можно при звонке в село попасть... В Сев. Америке подавляют и континентальное "среднее эхо" 40-60мс по принципу мало ли через какие шлюзы Вы подключились. Т.е. при звонке в село в Южной Америке эхо подавят, если оно даже в селе или по дороге не подавлено. Но при звонке из Канады в Подмосковье на старую станцию... неподавленое местное эхо прёт по полной. Вообще источников эхо много - каждый шлюз, где происходит переход с 4-х проводной линии (или цифровой, что то же самое) на 2-х проводную комутируемую линию абонента или аналоговый 2-х проводный транк между станциями. Как то так. На каждом переходе возникают отражения. Far эхо, на 800 мс и более обычно не подавляют - это сложно и дороо
|
|
|
|
|
Aug 1 2009, 11:41
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(fontp @ Aug 1 2009, 11:05)  Можно догадаться, что канал - всё таки цифровой (раз там где-то кодер SPEEX), тогда "трубка" эмулирует станцию ( не телефон!), следовательно автору нужен линейный эхоподавитель (раз не спикерфон) Трубка есть терминал и ничего она не эмулирует. Что такое Вы назвали "линейным" не совсем понятно, ибо в терминологии по отношению к терминалу эхо "Acoustic" и "Network". Что имел ввиду Автор - еще более непонятно - пока не начнет на наводящие воросы отвечать - сполшное гадание. Цитата Совсем простых методов компенсации не получится (акустический эхоподавитель в любом случае сложнее линейного. но и линейный вычислительно тоже не прост) Если под линейным подразумевается "Network Echo Canceler", то в самом общем случае со стороны сети может быть все, что угодно в том числе и дополнительно Акустическое Эхо удаленной стороны  . В частном случае, действительнго проще. Цитата Нужен ближний эхоподавитель..... А вот "Ближний" уж точно не нужен - у Автора без вариантов цифра, значит "четырехпроводка" и на ближнем конце нет эха по определению. Наиболее вероятно речь идет об эхе дальнего конца с уровнем порядка -20-30dB, возникающим при переходе на аналоговую двухпроводку ТфОП, незаметным при задержках до, примерно, 4ms, но в данном конкретном случае бьющем по ушам из-за очень большой задержки вносимой SPEEX кодеком в "Трубке". Компенсация этого безобразия целиком и полносттью лежит на породившией эту выходящюю за рамки допустимой зажержку "Трубке" и никак не на стороне Сети. Хотя стороны Автор чего-то вещал про невозможность удовлетворительно развязать "трубку", посему вероятны и проблемы из-за акустической связи+большой задержки на удаленном конце, даже при полной "четырехпроводке". Цитата(sigmaN @ Aug 1 2009, 14:06)  Как я понял, это какраз far echo. Т.е. фильтрацией должен заниматься Абонент 2. Нет, это чистой воды акустическое эхо со всеми его прелестями. И давить его должен тот, кто порождает - трубка, которая не обеспечивает физическое подавление. Это правильно, ибо свалив эту проблему с больной головы на здоровую (удаленный конец), Вы только добавите проблем ввиде необходимости еще и ДОПОЛНИЕЛЬНО компенсироваить многосот мииллисекундные, причем нестабильные, задержки канала.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 1 2009, 11:41
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(zltigo @ Aug 1 2009, 15:34)  Трубка есть терминал и ничего она не эмулирует. Что такое Вы назвали "линейным" не совсем понятно, ибо в терминологии по отношению к терминалу эхо "Acoustic" и "Network". Что имел ввиду Автор - еще более непонятно - пока не начнет на наводящие воросы отвечать - сполшное гадание. Если под линейным подразумевается "Network Echo Canceler", то в самом общем случае со стороны сети может быть все, что угодно в том числе и дополнительно Акустическое Эхо удаленной стороны  . В частном случае, действительнго проще. А вот "Ближний" уж точно не нужен - у Автора без вариантов цифра, значит "четырехпроводка" и на ближнем конце нет эха по определению. Наиболее вероятно речь идет об эхе дальнего конца с уровнем порядка -20-30dB, возникающим при переходе на аналоговую двухпроводку ТфОП, незаметным при задержках до, примерно, 4ms, но в данном конкретном случае бьющем по ушам из-за очень большой задержки вносимой SPEEX кодеком в "Трубке". Компенсация этого безобразия целиком и полносттью лежит на породившией эту выходящюю за рамки допустимой зажержку "Трубке" и никак не на стороне Сети. Хотя стороны Автор чего-то вещал про невозможность удовлетворительно развязать "трубку", посему вероятны и проблемы из-за акустической связи+большой задержки на удаленном конце, даже при полной "четырехпроводке". Автор объяснил уже, что он проигрывает сигнал от удалённого абонента 1 через свой динамик, из-за чего и имеет аккустическое "ближнее" эхо на своём микрофоне. Для абонента 1 - это дальнее эхо, что его раздражает )) Короче, он должен давить его как ближнее эхо на своём конце, очевидно. Ближнее в смысле задержки, а не терминала. В смысле 'короткий" Линейный эхоподавитель - это линейный эхоподавитель. Такой как я дал по ссылке )) У телефонистов может и network, особенно если поставят на станции готовый многоканальный )) В IP-телефонии, те кто его делал, говорят, обычно, линейный. Я делал, потому говорю - линейный. Потому до сих пор дальнее эхо прёт, когда звонишь из Канады в Подмосковье ;-)) Шютка Типа того http://blog.astfin.org/
|
|
|
|
|
Aug 1 2009, 11:57
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(fontp @ Aug 1 2009, 14:41)  У телефонистов может и network, особенно если поставят на станции готовый многоканальный )) Ну и каша у Вас в голове, опосля чтения "интернету"  Причем тут "станции"? Network в обсуждаемом случае не могут поставить на станции просто по той простой причине, что он давит эхо которое пришло из СЕТИ. И стоять он в описываемой системе, может только в терминале aka "Трубка" со стооны СЕТИ. Ну то, что он в данном конкретном случае, после объяснений Автора, не нужен, как класс, я уже писал - для данного случая достаточно одного эхозаградителя в "Трубке" - только с противоположной Сети стороны - Акустического. Поскольку шлюзования в аналоговые двухпроводные сети нет, то и Network заградитель нигде не нужен.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 1 2009, 12:05
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(zltigo @ Aug 1 2009, 15:57)  Ну и каша у Вас в голове, опосля чтения "интернету"  Причем тут "станции"? Network в обсуждаемом случае не могут поставить на станции просто по той простой причине, что он давит эхо которое пришло из СЕТИ. И стоять он в описываемой системе, может только в терминале aka "Трубка" со стооны СЕТИ. Ну то, что он в данном конкретном случае, после объяснений Автора, не нужен, как класс, я уже писал - нужет эхозаградитель в "Трубке" с противопорложной Сети стороны - Акустический. Где он должен стоять и какой, я давно догадался и объяснил своими словами 5 постов назад :-) Это у Вас каша в голове при чтении меня :-)
|
|
|
|
|
Aug 1 2009, 12:08
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(sigmaN @ Aug 1 2009, 16:07)  Хорошо. Вопрос сводится к минимуму: На каких принципах, какимим методами ЦОС мы можем вычесть сигнал динамика из сигнала микрофона. Чтобы воспроизводимый сигнал не лез в микрофон и не передавался обратно в линию? как минимум адаптивный линейный эхоподавитель/ Так он называется в литературе по ЦОС Вариант "акустический эхоподавитель" более сложный, Вам же не понравился в SPEEX/ Принцип там тот же - адаптивная фильтрация- но ещё навешено всяких прибабахов. У Вас акустическое, но слабенькое эхо. Акустический эхоподавитель Вам подходит по всякому, но не понравился. Значительный шанс, что у Вас заработает, более простой линейный, просто за счёт того что у Вас эхо слабенькое (не спикерфон же) и очень линейное (в математическом смысле)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|