Ви праві. Існує багато методів скасування відлуння, але жоден з них не є абсолютно тривіальним. Найбільш загальний і популярний метод - скасування відлуння за допомогою адаптивного фільтра. В одному реченні завдання адаптивного фільтра полягає в тому, щоб змінити сигнал, який він відтворює, мінімізувавши кількість інформації, що надходить із вхідних даних.
Адаптивні фільтри
Адаптивний (цифровий) фільтр - це фільтр, який змінює свої коефіцієнти і з часом переходить до деякої оптимальної конфігурації. Механізм цієї адаптації працює, порівнюючи вихід фільтра з деяким бажаним виходом. Нижче наведена схема загального адаптивного фільтра:
Як видно з діаграми, сигнал фільтрується (згорнутий с) → ш п для отримання вихідного сигналу д [ п ] . Потім ми віднімаємо д [ п ] від необхідного сигналу д [ п ] для отримання помилки сигналу е [ п ] . Зауважимо, що → w n - вектор коефіцієнтів, а не число (отже, ми не пишемо w [ n ]x[n]w⃗ nd^[n]d^[n]d[n]e[n]w⃗ nw[n] ). Оскільки це змінює кожну ітерацію (кожну вибірку), ми підписуємо поточну колекцію цих коефіцієнтів на . Після отримання e [ n ] ми використовуємо його для оновлення → wne[n] за вибором алгоритму оновлення (докладніше про це пізніше). Якщо вхід і вихід задовольнити лінійну залежністьяка не змінюєтьсяплином часуі цей алгоритм поновлення добре розроблений, → ш п будекінцевому підсумку сходяться до оптимального фільтра і д [ п ] буде уважно стежити за д [ п ] .w⃗ nw⃗ nd^[n]d[n]
Відміна відлуння
Проблема скасування ехо може бути представлена в контексті проблеми адаптивного фільтра, де ми намагаємося створити якийсь відомий ідеальний вихід із заданим входом шляхом пошуку оптимального фільтра, що задовольняє співвідношення вхід-вихід. Зокрема, коли ви схопите гарнітуру і привітаєтеся "привіт", вона отримана на іншому кінці мережі, змінена акустичною реакцією кімнати (якщо вона відтворюється вголос) і подається назад у мережу, щоб повернутися назад до вас як відлуння. Однак, оскільки система знає, як звучало початкове "привіт", і тепер вона знає, як звучить зворотний і затримковий "привіт", ми можемо спробувати вгадати, що за відповідь кімнати використовує адаптивний фільтр. Тоді ми можемо використовувати цю оцінку, з'єднайте всі вхідні сигнали з такою імпульсною відповіддю (яка б дала нам оцінку ехо-сигналу) і відніміть його від того, що йде в мікрофон людини, яку ви подзвонили. На діаграмі нижче показаний адаптивний ехолот.
x[n]d[n]w⃗ nx[n]y[n]d[n]e[n]=d[n]−y[n]
w⃗ n
x⃗ n=(x[n],x[n−1],…,x[n−N+1])T
Nw⃗ nx
w⃗ n=(w[0],w[1],…,x[N−1])T
y[n]=x⃗ n=w⃗ n
y[n]=x⃗ Tnw⃗ n=x⃗ n⋅w⃗ n
w⃗
w⃗ n+1=w⃗ n+μx⃗ ne[n]x⃗ Tnx⃗ n=w⃗ n+μx⃗ nx⃗ Tnw⃗ n−d[n]x⃗ Tnx⃗ n
μ0≤μ≤2
Справжні життєві програми та проблеми
Кілька речей можуть скласти труднощі з цим методом скасування ехо. Перш за все, як згадувалося раніше, не завжди правда, що інша людина мовчить, отримуючи ваш сигнал "привіт". Можна показати (але виходить за рамки цієї відповіді), що в деяких випадках все ще може бути корисно оцінити імпульсну характеристику, хоча на іншому кінці рядка є значна кількість вводу, оскільки вхідний сигнал і ехо є вважається статистично незалежним; отже, мінімізація помилки все одно буде дійсною процедурою. Загалом, для виявлення хороших часових інтервалів для оцінки відлуння потрібна більш складна система.
З іншого боку, подумайте, що відбувається, коли ви намагаєтесь оцінити ехо, коли отриманий сигнал приблизно тиша (насправді шум). За відсутності осмисленого вхідного сигналу адаптивний алгоритм буде розходитись і швидко почне давати безглузді результати, що в кінцевому підсумку завершиться випадковим відлунком. Це означає, що нам також потрібно враховувати виявлення мовлення . Сучасні ехолоки більше схожі на малюнок нижче, але вище опис - суть його.
Існує велика кількість літератури як про адаптивних фільтрах, так і для скасування відлуння, а також деякі бібліотеки з відкритим кодом, до яких можна скористатися.