giới hạn đỉnh / công thức nén âm thanh cần thiết


9

Tôi đang tìm kiếm một công thức để nén một cách hiệu quả một dạng sóng âm thanh để hạn chế các đỉnh. Đây không phải là một ứng dụng "điều khiển âm lượng tự động" trong đó người ta sẽ điều khiển mức khuếch đại để duy trì mức âm lượng, nhưng tôi muốn giới hạn các đỉnh riêng lẻ ("mềm"). (Tôi biết điều này giới thiệu sóng hài, nhưng tôi đang cố gắng phân tích dữ liệu, không nghe nó.)

Công thức (rất thô sơ) của tôi cho đến nay là:

factor = (10 * average / level) + exp(-sqrt(0.1 * level / average))

Trong trường hợp mức là mức âm thanh tức thời, trung bình là mức âm thanh trung bình lịch sử, và yếu tố là một số nhân sử dụng để tạo ra "điều chỉnh" mức ( yếu tố lần mức ).

Hơn nữa, hệ số nhân này chỉ được áp dụng nếu nó tính toán với giá trị nhỏ hơn 1. Mức khác được điều chỉnh.

Mục đích là để giới hạn mức điều chỉnh ở một số bội số (khoảng 15 lần với công thức này) của mức trung bình lịch sử. Công thức này là những gì tôi cần, nhưng thể hiện sự "nhúng" khi số lượng ngày càng lớn. Đó là, mức độ điều chỉnh (tức là, yếu tố lần mức ) tăng lên đến một điểm với sự gia tăng mức độ không điều chỉnh nhưng sau đó, thay vì đi tiệm cận, bắt đầu để thực sự trở nên nhỏ hơn. (Trên thực tế, yếu tố đầu tiên được thêm vào chủ yếu để ngăn công thức về 0 với giá trị cực cao.)

(Lý do muốn giới hạn các giá trị theo cách này chủ yếu là vì tiếng ồn thoáng qua không làm ảnh hưởng nghiêm trọng đến mức trung bình đang chạy của mức âm thanh. .)

Vì vậy, bất cứ ai có thể đề nghị một cái gì đó tốt hơn? (Có vẻ như hành vi tiệm cận rất dễ tạo ra khi bạn không muốn, nhưng khó khi bạn làm.)


Câu trả lời:


9

Hai vấn đề ở đây: làm thế nào để có được ước tính đáng tin cậy về mức độ và cách nén dữ liệu.

  • Sử dụng số liệu thống kê mạnh mẽ về dữ liệu gốc (không giới hạn tối đa) như trung bình hoặc lượng tử thay vì trung bình đang chạy để làm cho phát hiện "mức độ điển hình" của bạn trở nên mạnh mẽ hơn so với các ngoại lệ.
  • k×tanh(xk)C

thí dụ

  • Màu xanh: tín hiệu gốc
  • Màu xanh lá cây: 2 x trung vị của giá trị tuyệt đối trên cửa sổ trượt dưới dạng phát hiện "mức thông thường"
  • Màu đỏ: nén tanh (công thức đã cho ở trên với k bằng với mức được vẽ trong màu xanh lá cây)

Cảm ơn, điều đó có vẻ đầy hứa hẹn. Tôi sẽ cắm nó vào và xem nó hoạt động như thế nào.
Daniel R Hicks

1
Tôi đã thử nó và nó dường như đang hoạt động tốt (sau khi tôi xóa một vài kiểm tra ngón tay). Vấn đề duy nhất của tôi với nó là dường như không có cách nào để điều chỉnh độ sắc nét của "đầu gối" mà không làm hỏng cấp độ clip hoặc bất cứ điều gì.
Daniel R Hicks

Tại sao "di chuyển trung bình" tốt hơn "di chuyển trung bình"? Tôi đọc ở nhiều nơi rằng nó ít nhạy cảm hơn với các ngoại lệ. Nhưng tôi không thể thấy điều này với dữ liệu thực . Bất cứ ý tưởng về câu hỏi này?
Basj
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.