Các phương pháp lọc dựa trên FFT có thêm độ trễ nội tại cho thuật toán thời gian thực không?


7

Trong một ứng dụng xử lý âm thanh hiện tại, tôi đang làm việc hoàn toàn trong miền thời gian bằng các bộ lọc IIR. Điều này là để tôi có thể sử dụng bộ đệm âm thanh chỉ 3 hoặc 4 mẫu và có thể đảm bảo rằng sẽ có một số dạng đầu ra âm thanh trong khung đó.

Nếu tôi chuyển sang các bộ lọc dựa trên FIR (để giảm thời gian đổ chuông của bộ lọc như được nêu trong câu hỏi này ), có lẽ tôi sẽ cần sử dụng kỹ thuật thêm chồng lấp dựa trên FFT để duy trì hiệu quả xử lý. Như tôi thấy, tôi sẽ phải điền vào bộ đệm khung FFT với các mẫu trước khi tôi có thể thực hiện các phép biến đổi. Điều này sẽ thêm độ trễ nội tại cho thuật toán tỷ lệ thuận với số lượng mẫu được sử dụng để tính toán FFT. Tôi có thiếu một mánh khóe không?

Câu trả lời:


10

Bạn nói đúng. Xử lý dựa trên FFT thêm độ trễ vốn có cho hệ thống của bạn. Tuy nhiên có nhiều cách để điều chỉnh điều này.

Giả sử bạn có bộ lọc FIR có độ dài "N". Điều này có thể được thực hiện dựa trên FFT bằng cách sử dụng phương thức lưu hoặc thêm chồng lấp tiêu chuẩn, trong đó độ dài FFT sẽ là 2 * N. Độ trễ hệ thống tổng thể cũng sẽ vào khoảng 2 * N: bạn cần tích lũy một khung gồm N mẫu và sau đó trong khi bạn đang tích lũy khung đầu vào tiếp theo, hãy làm toán trên khung hiện tại. Vào thời điểm khung thứ hai được tích lũy (thời gian bù 2 * N), khung đầu tiên đã sẵn sàng để ra ngoài. Nếu bạn có CPU nhanh, bạn có thể tăng tốc phần nào bằng cách sử dụng các căn chỉnh khác nhau cho các khung đầu vào và đầu ra nhưng điều đó thường gây phiền toái hơn giá trị của nó.

Bạn cũng có thể chia bộ lọc thành K khối nhỏ hơn có chiều dài M, tức là N = K * M. FFT chỉ cần được thực hiện trên các mẫu đầu vào M và độ trễ và tích lũy trên nhiều phần bộ lọc được thực hiện trong miền tần số. Bill Gardner đã mô tả một vài hương vị của nó ở đây: http://www.cs.ust.hk/mjg_lib/bibs/DPSu/DPSu.Files/Ga95.PDF Nó thường được gọi là "Khối chuyển đổi khối".

Điều này về cơ bản cho phép đánh đổi độ trễ so với hiệu quả và nó cung cấp tính liên tục giữa FIR trực tiếp và phương thức thêm chồng chéo kích thước đầy đủ. Một hiệu ứng phụ tuyệt vời của Trình chuyển đổi khối là tổng chiều dài bộ lọc không phải là công suất 2. Ví dụ: bạn có thể triển khai bộ lọc gồm 768 tab thành 6 khối 128 mà không làm giảm hiệu quả đáng kể.


Mẹo hay về người chia khối! Cảm ơn
tìm hiểu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.