तुम सही हो। इको रद्दीकरण के कई तरीके मौजूद हैं, लेकिन उनमें से कोई भी बिल्कुल तुच्छ नहीं है। सबसे सामान्य और लोकप्रिय विधि एक अनुकूली फिल्टर के माध्यम से गूंज रद्द करना है। एक वाक्य में, अनुकूली फिल्टर का काम सिग्नल को बदलना है जो इनपुट से आने वाली जानकारी की मात्रा को कम करके वापस खेल रहा है।
अनुकूली फिल्टर
एक अनुकूली (डिजिटल) फिल्टर एक फिल्टर है जो अपने गुणांक को बदलता है और अंततः कुछ इष्टतम कॉन्फ़िगरेशन में परिवर्तित होता है। इस अनुकूलन के लिए तंत्र फिल्टर के आउटपुट को कुछ वांछित आउटपुट से तुलना करके काम करता है। नीचे एक सामान्य अनुकूली फिल्टर का आरेख है:
आप चित्र से देख सकते हैं, संकेत द्वारा फ़िल्टर किया जाता है (के साथ convolved) → डब्ल्यू एन उत्पादन आउटपुट संकेत करने के लिए घ [ एन ] । हम तो घटाना घ [ एन ] से वांछित संकेत घ [ एन ] के उत्पादन के लिए त्रुटि संकेत ई [ एन ] । ध्यान दें कि → w n गुणांक का एक वेक्टर है, न कि एक संख्या (इसलिए हम w नहीं लिखते हैं [ n ]x[n]w⃗ nd^[n]d^[n]d[n]e[n]w⃗ nw[n] )। क्योंकि यह हर पुनरावृत्ति (हर नमूना) को बदलता है, हम इन गुणांक के वर्तमान संग्रह को सबस्क्रिप्ट करते हैं । एक बार e [ n ] प्राप्त होने के बाद हम इसे अपडेट करने के लिए उपयोग करते हैं →ne[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
Then we calculate y[n] via (by convolution) finding the inner product (dot product if both signals are real) of =x⃗ n and =w⃗ n:
y[n]=x⃗ Tnw⃗ n=x⃗ n⋅w⃗ n
Now that we can calculate the error, we’re using a normalized gradient descent method for minimizing it. We get the following update rule for w⃗ :
w⃗ n+1=w⃗ n+μx⃗ ne[n]x⃗ Tnx⃗ n=w⃗ n+μx⃗ nx⃗ Tnw⃗ n−d[n]x⃗ Tnx⃗ n
where μ is the adaptation step size such that 0≤μ≤2.
Real life applications and challenges
Several things can present difficulty with this method of echo cancellation. First of all, like mentioned before, it is not always true that the other person is silent whilst they receive your “hello” signal. It can be shown (but is beyond the scope of this reply) that in some cases it can still be useful to estimate the impulse response while there is a significant amount of input present on the other end of the line because input signal and echo are assumed to be statistically independent; therefore, minimizing the error will still be a valid procedure. In general, a more sophisticated system is needed to detect good time intervals for echo estimation.
On the other hand, think of what happens when you’re trying to estimate echo when the received signal is approximately silence (noise, actually). In absence of a meaningful input signal, the adaptive algorithm will diverge and quickly start producing meaningless results, culminating eventually in a random echo patter. This means that we also need to take into consideration speech detection. Modern echo cancellers look more like the figure below, but above description is the jist of it.
There are plenty of literature on both adaptive filters and echo cancellation out there, as well as some open source libraries you can tap into.