Volumen de la transmisión PCM

7

Estoy recibiendo muestras de PCM a través de la transmisión, que es un canal, 8000 muestras por segundo. Descubrí la forma de descubrir el volumen calculando la 'fuerza' de la señal agregando el valor de abs de cada 1000 muestras siguientes y luego dividiendo por el recuento de muestras que es 1000. Funciona bastante bien, pero a veces mis cálculos se vuelven locos, mi suma absoluta Los valores de las muestras parecen acumularse constantemente y alcanzar valores ridículos ... así que creo que estoy haciendo algo mal allí. Lo curioso es que cuando los cálculos se vuelven locos, todo volverá a la normalidad cuando golpee 'dispositivo de entrada de sonido' con mi mano;)

De todas formas. Mi pregunta es: ¿cómo calcular correctamente el volumen del conjunto de muestras PCM?

solgar
fuente
¿Qué formato numérico estás usando al calcular la suma? Parece que podrías estar experimentando un desbordamiento.
Jason R
1
Estoy usando 2 bytes, número firmado. No tengo desbordamiento. Imprimí todas mis muestras para archivarlas en formato txt y esas muestras a pesar del silencio fueron cada vez más altas con el tiempo. Lo que son valores aún más extraños no fue inferior a cero cuando comenzó a "acumularse".
solgar

Respuestas:

9

Para medir la energía (que está estrechamente relacionada, pero no es lo mismo que "volumen"), calcule el RMS (Root-Mean-Square).

E=n=0N1s[n]2N

N es el número de muestras y es la muestra en el tiempo .s[n]n

Puede hacer esto en cualquier tamaño de bloque de muestras. Puede hacerlo en todas las muestras a la vez para obtener una energía promedio, o puede dividir su conjunto de muestras en trozos para ver cómo cambia la energía con el tiempo.

También hay métodos más sofisticados que tienen en cuenta las peculiaridades del cuerpo y el cerebro. Puede encontrar más información sobre eso aquí .

Jim Clay
fuente
1
Aquí hay un código en varios idiomas para encontrar el cuadrado medio raíz .
Xeoncross
1

No soy un experto y no estoy seguro de lo que está tratando de lograr, pero parece que ha cometido un error de programación en algún lugar, ¿podría mostrarnos el código?

Cuando dices volumen, ¿lo dices en serio como se define aquí ? En ese caso, debe dar cuenta del oyente.

Si solo le interesa la energía, quizás RMS sea una mejor opción, o cuadrados promediados.

Thor
fuente