Lọc thông thấp trên các mẫu intM (16 bit PCM) ngắn


9

Tôi đang viết phần mềm để xử lý âm thanh được cung cấp dưới dạng mẫu PCM 16 bit. Giai đoạn đầu tiên của quá trình xử lý bao gồm việc tính toán năng lượng (hoặc tổng biến thiên) trong một dải tần số nhất định (trên một tần số giới hạn nhất định).

Những gì tôi hiện đang làm là trừ năng lượng của tín hiệu được lọc thông thấp khỏi năng lượng của tín hiệu gốc. Tôi phát hiện ra rằng rất nhiều quá trình xử lý được dành riêng để chuyển đổi các số nguyên sampels thành biểu diễn dấu phẩy động.

Vì vậy, câu hỏi của tôi là, có một kỹ thuật để lọc các mẫu số nguyên mà không chuyển đổi chúng thành dấu phẩy động?

Câu trả lời:


6

Tất nhiên, bạn có thể áp dụng bộ lọc trực tiếp cho các mẫu số nguyên, sử dụng số học điểm cố định .

Ví dụ: nếu bạn sử dụng bộ lọc FIR với các hệ số [1/3, 1, 1/2] và độ phân giải 8 bit cho các hệ số, đầu ra của bạn sẽ là:

out[n] = (85 * sample[n] + 256 * sample[n - 1] + 128 * sample[n - 2]) >> 8

Hai điều cần cẩn thận:

  • Lượng tử hóa hệ số có thể gây ra những thay đổi nhỏ nhất của phản ứng bộ lọc, ở mức kém nhất gây ra sự mất ổn định của bộ lọc. Loại bộ lọc của bạn và giá trị của các hệ số của nó là gì?

  • Tràn / Kiểu dữ liệu / Sự cố cắt ngắn. Trong ví dụ trên, out có thể vượt quá phạm vi của số nguyên 16 bit, do đó bạn sẽ phải thực hiện một số thao tác cắt.


2
12561

bạn đã đúng, đã chỉnh sửa!
pichenettes

3
@pichenettes Có thể tốt để giải thích cách bạn đến các giá trị được lượng tử hóa, được ký so với không dấu, v.v ... Tùy thuộc vào bạn.
Jim Clay

3

Một số bộ xử lý, chuyển đổi một số nguyên lớn (nhưng trong bộ đệm) thành số nguyên trước khi xử lý chúng có thể nhanh hơn, do loại bỏ các mối nguy đường ống. Bạn có thể muốn điểm chuẩn này.

Nếu bạn sử dụng số nguyên tỷ lệ hoặc số học điểm cố định, lượng chính xác của số nguyên được thêm vào bạn sẽ cần trong các hệ số và giá trị trung gian tỷ lệ thuận với tỷ lệ giữa tốc độ mẫu và tần số cắt mong muốn của bạn. Bạn có thể cần sử dụng số học số nguyên chính xác 24,32,48 bit trở lên trên các mẫu 16 bit của mình để giảm xuống mức sàn tạp âm số mong muốn. Một số bộ hướng dẫn bộ xử lý (ARM, MIPS, v.v.) có thể bao gồm số học tích lũy 64 bit cho mục đích này.

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.