Độ ồn của luồng PCM


7

Tôi đang nhận các mẫu PCM qua luồng là một kênh, 8000 mẫu mỗi giây. Tôi đã tìm ra cách tìm ra tiếng ồn bằng cách tính 'lực' tín hiệu bằng cách thêm giá trị abs của mỗi 1000 mẫu tiếp theo và sau đó chia cho số lượng mẫu là 1000. Nó hoạt động có phần tốt nhưng đôi khi tính toán của tôi trở nên điên rồ, tổng số tuyệt đối của tôi giá trị của các mẫu dường như liên tục tăng lên và đạt đến các giá trị lố bịch ... vì vậy tôi nghĩ rằng tôi đang làm gì đó sai ở đó. Điều thú vị là khi các tính toán trở nên điên rồ, mọi thứ sẽ trở lại bình thường khi tôi dùng 'thiết bị đầu vào âm thanh' bằng tay;)

Dù sao. Câu hỏi của tôi là: làm thế nào để tính toán độ ồn của bộ mẫu PCM đúng cách?


Định dạng số nào bạn đang sử dụng khi tính tổng? Âm thanh như bạn có thể đang trải qua tràn.
Jason R

1
Tôi đang sử dụng 2 byte, số đã ký. Tôi không có tràn. Tôi đã in mọi mẫu của mình để nộp ở dạng txt và những mẫu đó bất chấp sự im lặng ngày càng cao hơn theo thời gian. Giá trị lạ thậm chí còn thấp hơn 0 khi nó bắt đầu "xây dựng".
solgar

Câu trả lời:


9

Để đo năng lượng (có liên quan chặt chẽ với, nhưng không giống như "độ ồn"), hãy tính RMS (Root-Mean-Square).

E=n=0N1s[n]2N

N là số lượng mẫu và s[n] là mẫu tại thời điểm n.

Bạn có thể làm điều này trong bất kỳ kích thước khối của mẫu. Bạn có thể làm điều đó trên tất cả các mẫu cùng một lúc để có được năng lượng trung bình hoặc bạn có thể chia tập hợp mẫu của mình thành các khối để xem năng lượng thay đổi theo thời gian như thế nào.

Ngoài ra còn có các phương pháp tinh vi hơn có tính đến các yêu cầu của cơ thể và não bộ. Bạn có thể tìm thêm thông tin về điều đó ở đây .


1
Đây là mã trong nhiều ngôn ngữ để tìm bình phương gốc .
Xeoncross

1

Tôi không phải là chuyên gia và không chắc chắn những gì bạn đang cố gắng đạt được, nhưng có vẻ như bạn đã mắc lỗi lập trình ở đâu đó, bạn có thể cho chúng tôi xem mã không?

Khi bạn nói to có nghĩa là nó được định nghĩa ở đây ? Trong trường hợp đó bạn cần tính đến người nghe.

Nếu bạn chỉ quan tâm đến năng lượng, có thể RMS là lựa chọn tốt hơn hoặc bình phương trung bình.

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.