Próbuję obliczyć głośność ścieżki dźwiękowej, którą zapisałem w buforze. Bufor zawiera dane PCM sygnału i chcę dowiedzieć się, jak „głośno” jest za pomocą Root Mean Squared. Zakładam, że mogę to zrobić w dziedzinie czasu zamiast przełączać się na dziedzinę częstotliwości. Jaki byłby na to pseudo-kod?
Czy po prostu próbowałem przez jedną sekundę (audio [0] - audio [44099], audio [44099] - audio [88199] itd.) I obliczyłem RMS tych wartości? Na przykład, czy zrobiłbym to:
za każdą sekundę?
<!-- html comment -->
aby obejść ograniczenie znaków w rzadkich przypadkach, gdy w innym przypadku idealny post zawiera mały, ale bardzo ważny błąd. Ta potrzeba zdarza się bardzo rzadko: zwykle do zrobienia jest więcej niż 6 znaków. Na przykład, gdy brakuje nawiasów, zwykle lepiej jest użyć\sqrt{}
\frac{}{}
konstruktów i w TeX.Odpowiedzi:
Inną rzeczą jest to, że wartość RMS nie jest zbyt dobrze skorelowana z postrzeganą głośnością. Zamiast tego możesz rozważyć nazwanie go poziomem lub głośnością. Istnieje coś, co nazywa się konturami równej głośności, które określają, jak wrażliwe jest ucho na jedną konkretną częstotliwość w porównaniu z inną częstotliwością, patrz artykuł w Wikipedii . Krzywe te zależą od poziomu. Na przykład ucho jest bardzo wrażliwe na ton 1kHz w porównaniu do tonu 100Hz, jak pokazano na tym obrazie (oś pozioma to częstotliwość w Hz):
Jedną z względnie prostych rzeczy, które możesz zrobić, jest filtrowanie danych PCM za pomocą odwróconej krzywej równej głośności. Możesz też zastosować standardową wagę A, zobacz artykuł na temat filtra wagowego Wikipedii . Następnie możesz obliczyć wartość skuteczną wyjściową filtra ważonego o jednakowej głośności.
źródło