¿Cómo obtener el número de fotogramas (o muestras) por segundo o ms en un archivo de audio (.wav o .mp3)? (Sonido, Audio, Frecuencia De Muestreo, Velocidad De Fotogramas)

P.hunter preguntó.
preguntó.

algunos de los términos son pero técnico, pero por favor, tenga cuidado conmigo

He estado observando un archivo de audio bajo un Python language module

el audio tiene un framerate/samplerate de 44100 per sec or hz y el total de fotogramas es 9745238 y la duración del audio es 220 secs por las propiedades del archivo mientras que debería ser 220.9804535147392 secs y tiene 2 canales.

después de leer un archivo me devolvió una 9745238 X 2 matriz de 16bit signed int como se esperaba

donde la columna 1 son los datos del canal 1 y la columna 2 son los datos del canal 2 para los respectivos 9745238 cuadros

así que mi pregunta es allí cualquier método robusto encontrar estos valores (con 1, 2 canal consecutivamente es decir, cada fila o la matriz) por segundo o milisegundo, porque cuando me multiplicó el frame rate (44100) con el duration(220 secs) de mi archivo de audio debe devolverme el número total de fotogramas/muestras pero No, me devolvió 9702000 mientras que hay 9745238 en total. Entonces, ¿cómo puedo obtener los valores exactos (filas) por segundo?

¿alguna suposición?

Editar 1

Me he referido a una buena discusión aquí

y supongo que todo lo que necesito es bitrate que es bitrate = sampleRate * bitDepthpero cómo puedo conseguir profundidad de bits es sample size / sample width o algo más.

1 respuestas
Igid

El profundidad de bits en tu caso es de 16. Se refiere a lo grande que es cada muestra, así que si tienes un valor de 16 bits para cada muestra, eso es su profundidad de bits.

La tasa de bits es una medida de los datos por segundo (como creo que sabes) y, por tanto, para el audio PCM sin comprimir es frecuencia de muestreo (44100) * profundidad de bits (16) * canales (2)

Espero que esta sea toda la información que buscas. Ya sabes la duración exacta del archivo en muestras. (Cada medida en términos de segundos/milisegundos suele tener un error de redondeo, por lo que cuando se hacen cálculos sobre el audio es definitivamente útil conocer la duración en muestras). Parece que conoces todas las estadísticas pertinentes.

P.D. Que conste que marco y muestra no son equivalentes. En la programación de audio, es posible que te encuentres con el término marco para designar un número de muestras contiguas que se procesan de una sola vez: también se conoce como bloque o vector. Procesar un grupo de muestras juntas reduce ciertos gastos generales. Lo verás en los ajustes de algunos programas de audio, donde puedes cambiar el tamaño del bloque.

Comentarios

  • Gracias por la respuesta, así que cuando imprimí 1st los datos de la trama utilizando un python module para comprobar los bits, me devolvió x00x00x00x00 como dijiste 16 bits (8 bits por cada canal), que al convertir en valor de 16 enteros me dio un vector [0 0] como era de esperar, pero entonces en qué términos a samples y a frame no son iguales, ¿una muestra equivale a la fila de la matriz (vector o un bloque como usted dijo por ejemplo. [0 0] para la primera muestra) ¿pero no es un marco también es lo mismo? y ¿qué son los gastos generales? –  > Por P.hunter.
  • Gracias, lo he resuelto, y he mencionado tu respuesta en stack overflow para que sirva de referencia a otras personas. –  > Por P.hunter.
  • No estoy seguro de lo que significan esos valores hexadecimales, pero me alegra saber que lo has resuelto. Ten en cuenta que es poco probable que las muestras sean de 8 bits, ya que esa es una calidad extremadamente baja (piensa en juegos de consola antiguos, música de 8 bits, etc.) En cuanto a los fotogramas, quizás la terminología difiera. Reflexionando, podría ser que en este contexto se puede utilizar frame para referirse a una fila de la matriz, es decir, a las muestras de todos los canales en un momento dado. Pero por ejemplo al escribir un plugin en C++… –  > Por Igid.
  • …sacas un frame de audio del host (el entorno en el que se ejecuta el plugin), que será una matriz de N muestras para cada canal, donde N es el tamaño del bloque. Procesarás ese trozo de audio, y empujarás tu cuadro de audio modificado de vuelta al host. No sé en profundidad qué gastos generales están involucrados, aparte de que otros hilos de menor prioridad sólo se ejecutarán entre dos marcos que se procesan. –  > Por Igid.
  • ¿podría ser porque el archivo era inicialmente .mp3 y luego lo convertí en .wav Sin embargo, si reproduzco el archivo .wav me suena igual que el mp3, tal vez esta última sea la causa, y por bloque te refieres al número de fotogramas, ¿verdad? –  > Por P.hunter.