Bạn nói đúng. Nhiều phương pháp loại bỏ tiếng vang tồn tại, nhưng không có phương pháp nào là chính xác. Phương pháp phổ biến và phổ biến nhất là loại bỏ tiếng vang thông qua bộ lọc thích ứng. Trong một câu, công việc của bộ lọc thích ứng là thay đổi tín hiệu phát lại bằng cách giảm thiểu lượng thông tin đến từ đầu vào.
Bộ lọc thích ứng
Bộ lọc thích ứng (kỹ thuật số) là bộ lọc thay đổi hệ số của nó và cuối cùng hội tụ thành một số cấu hình tối ưu. Cơ chế thích ứng này hoạt động bằng cách so sánh đầu ra của bộ lọc với một số đầu ra mong muốn. Dưới đây là sơ đồ của bộ lọc thích ứng chung:
Như bạn có thể nhìn thấy từ biểu đồ, các tín hiệu được lọc bởi (convolved với) → w n để sản tín hiệu đầu ra d [ n ] . Chúng tôi sau đó trừ d [ n ] từ mong muốn tín hiệu d [ n ] để tạo ra các lỗi tín hiệu e [ n ] . Lưu ý rằng → w n là một vectơ của các hệ số, không phải là một số (do đó chúng ta không viết w [ n ]x[n]w⃗ nd^[n]d^[n]d[n]e[n]w⃗ nw[n]). Bởi vì nó thay đổi mỗi lần lặp (mỗi mẫu), chúng tôi đăng ký bộ sưu tập hiện tại của các hệ số này với . Sau khi thu được e [ n ], chúng tôi sử dụng nó để cập nhật → w n bằng thuật toán cập nhật lựa chọn (nhiều hơn về sau). Nếu đầu vào và đầu ra đáp ứng một mối quan hệ tuyến tính mà không thay đổi theo thời gian và đưa ra một thuật toán cập nhật được thiết kế tốt, → w n cuối cùng sẽ hội tụ về bộ lọc tối ưu và d [ n ] sẽ chặt chẽ sau d [ n ] .ne[n]w⃗ nw⃗ nd^[n]d[n]
Echo hủy
Vấn đề khử tiếng vang có thể được trình bày dưới dạng vấn đề của bộ lọc thích ứng trong đó chúng tôi đang cố gắng tạo ra một số đầu ra lý tưởng đã biết với một đầu vào bằng cách tìm bộ lọc tối ưu thỏa mãn mối quan hệ đầu vào-đầu ra. Cụ thể, khi bạn lấy tai nghe và nói "xin chào", nó đã nhận được ở đầu bên kia của mạng, được thay đổi bởi phản hồi âm thanh của một căn phòng (nếu nó được phát lại thành tiếng) và đưa trở lại mạng để quay lại với bạn như một tiếng vang. Tuy nhiên, vì hệ thống biết tiếng "xin chào" ban đầu nghe như thế nào và bây giờ nó biết tiếng "xin chào" vang vọng và bị trì hoãn như thế nào, chúng tôi có thể thử và đoán xem phản ứng của phòng đó đang sử dụng bộ lọc thích ứng. Sau đó, chúng ta có thể sử dụng ước tính đó, kết hợp tất cả các tín hiệu đến với đáp ứng xung đó (sẽ cho chúng ta ước tính tín hiệu dội lại) và trừ nó khỏi tín hiệu đi vào micrô của người bạn gọi. Biểu đồ dưới đây cho thấy một bộ khử tiếng vang thích ứng.
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
Ứng dụng và thách thức trong cuộc sống thực
Một số điều có thể gặp khó khăn với phương pháp khử tiếng vang này. Trước hết, như đã đề cập trước đây, không phải lúc nào người kia cũng im lặng trong khi họ nhận được tín hiệu hello hello của bạn. Nó có thể được hiển thị (nhưng nằm ngoài phạm vi của câu trả lời này) rằng trong một số trường hợp, vẫn có thể hữu ích để ước tính đáp ứng xung trong khi có một lượng đáng kể đầu vào ở đầu dây bên kia vì tín hiệu đầu vào và tiếng vang là được giả định là độc lập thống kê; do đó, giảm thiểu lỗi vẫn sẽ là một thủ tục hợp lệ. Nói chung, cần có một hệ thống tinh vi hơn để phát hiện các khoảng thời gian tốt để ước tính tiếng vang.
Mặt khác, hãy nghĩ về những gì xảy ra khi bạn đang cố ước tính tiếng vang khi tín hiệu nhận được gần như im lặng (thực tế là nhiễu). Khi không có tín hiệu đầu vào có ý nghĩa, thuật toán thích ứng sẽ phân kỳ và nhanh chóng bắt đầu tạo ra kết quả vô nghĩa, cuối cùng đạt đến đỉnh điểm trong một tiếng vang ngẫu nhiên. Điều này có nghĩa là chúng ta cũng cần xem xét phát hiện lời nói . Bộ khử tiếng vang hiện đại trông giống như hình dưới đây, nhưng mô tả ở trên là ý chính của nó.
Có rất nhiều tài liệu về cả bộ lọc thích ứng và loại bỏ tiếng vang ngoài kia, cũng như một số thư viện nguồn mở mà bạn có thể khai thác.