[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Все зависит от того, что разрабатывается.
Да, когда говоришь в трубку, всегда себя слышишь. Это потому, что длинная линия имеет нелинейные характеристики и "вычитание" помогает лишь частично, часть сигнала всегда возвращается. Это называется местным эффектом или "near end echo". Если эхо еще и усиливается - его уровень запросто может быть больше уровня входного сигнала. Компенсировать нелинейность простой подстройкой контура практически не удается, т.к. не только разные линии имеют разные характеристики, но и параметры фиксированной линии "плывут" со временем (с изменением температуры, например). Отмечу, что если задержка эха меньше 4-6 миллисекунд, эхо практически не мешает (специфика человеческого слуха, когда говоришь - ничего не слышишь). Проблемы начинаются с увеличением задержки - буферизация, пакетирование и пр.
Стандарты: ITU-T G.165,G.168 (также полезно-G.164)
Решения (IMHO):
1. DSP и активный эхоподавитель (см. книжки на TI, если не найдешь - могу кинуть). Еще ключевое слово - LMS (least-mean-squared) алгоритм
Заморочек много, гемороя немеряно (Я это дерьмо давно хлебаю :-()
2. CODEC со встроенным эхоподавителем - в последнее время появилось много недорогих устройств.
Если разработка "всерьез и надолго" - надо погружаться в вариант 1 (если есть кому), если это "эпизодически" - проще поставить "продвинутый" кодек и забыть.
Есть еще решение 3 - оно некорректно с точки зрения постановки задачи, но иногда оказывается полезно на практике (особенно при отсутствии вычислительных ресурсов) - сделать незаметный для пользователя "half duplex" - 98% времени в телефон говорят по очереди. Если это приемлемо, посмотри алгоритм Гейгеля (A.A.Geigel)
Удачи!
E-mail: info@telesys.ru