profundidad - que son los bits en audio
¿Qué representan los bytes en un archivo.wav? (5)
Como han señalado otros, hay metadatos en el archivo wav, pero creo que su pregunta puede ser, específicamente, ¿qué significan los bytes (de datos, no de metadatos)? Si eso es cierto, los bytes representan el valor de la señal que se grabó.
Qué significa eso? Bueno, si extraes los dos bytes (por ejemplo) que representan cada muestra (suponiendo una grabación mono, lo que significa que solo se registró un canal de sonido), entonces tienes un valor de 16 bits. En WAV, 16-bit es (¿siempre?) Firmado y little-endian (AIFF, la respuesta de Mac OS a WAV, es big-endian, por cierto). Entonces, si toma el valor de esa muestra de 16 bits y la divide por 2 ^ 16 (o 2 ^ 15, supongo, si se trata de datos firmados), terminará con una muestra que está normalizada para estar dentro del rango -1 a 1. Haga esto para todas las muestras y grábelas en función del tiempo (y el tiempo está determinado por la cantidad de muestras / segundo en la grabación; por ejemplo, 44.1KHz significa 44.1 muestras / milisegundo, por lo que el primer valor de muestra se trazará en t = 0, el 44 en at = 1 ms, etc.) y tiene una señal que representa aproximadamente lo que se grabó originalmente.
Cuando almaceno los datos en un archivo .wav en una matriz de bytes, ¿qué significan estos valores? He leído que están en representaciones de dos bytes, pero ¿qué es exactamente lo que contienen estos valores de dos bytes?
El archivo WAVE (.wav) contiene un encabezado, que indica la información de formato de los datos del archivo de audio. Después del encabezado están los datos brutos de audio reales. Puede verificar su significado exacto a continuación.
Positions Typical Value Description
1 - 4 "RIFF" Marks the file as a RIFF multimedia file.
Characters are each 1 byte long.
5 - 8 (integer) The overall file size in bytes (32-bit integer)
minus 8 bytes. Typically, you''d fill this in after
file creation is complete.
9 - 12 "WAVE" RIFF file format header. For our purposes, it
always equals "WAVE".
13-16 "fmt " Format sub-chunk marker. Includes trailing null.
17-20 16 Length of the rest of the format sub-chunk below.
21-22 1 Audio format code, a 2 byte (16 bit) integer.
1 = PCM (pulse code modulation).
23-24 2 Number of channels as a 2 byte (16 bit) integer.
1 = mono, 2 = stereo, etc.
25-28 44100 Sample rate as a 4 byte (32 bit) integer. Common
values are 44100 (CD), 48000 (DAT). Sample rate =
number of samples per second, or Hertz.
29-32 176400 (SampleRate * BitsPerSample * Channels) / 8
This is the Byte rate.
33-34 4 (BitsPerSample * Channels) / 8
1 = 8 bit mono, 2 = 8 bit stereo or 16 bit mono, 4
= 16 bit stereo.
35-36 16 Bits per sample.
37-40 "data" Data sub-chunk header. Marks the beginning of the
raw data section.
41-44 (integer) The number of bytes of the data section below this
point. Also equal to (#ofSamples * #ofChannels *
BitsPerSample) / 8
45+ The raw audio data.
Copié todo esto de http://www.topherlee.com/software/pcm-tut-wavformat.html aquí
El audio de dos bits no sonaría muy bien :) Más comúnmente, representan valores de muestra como números firmados de 16 bits que representan la forma de onda de audio muestreada a una frecuencia como 44.1kHz.
Los primeros 44 bytes son comúnmente un encabezado RIFF estándar, como se describe aquí: http://tiny.systems/software/soundProgrammer/WavFormatDocs.pdf y aquí: http://www.topherlee.com/software/pcm-tut-wavformat.html
Los archivos .wav creados con Apple / OSX / macOS / iOS pueden agregar un fragmento de relleno ''FLLR'' al encabezado y así aumentar el tamaño del RIFF del encabezado inicial de 44 bytes a 4k bytes (quizás para una mejor alineación del bloque o bloque de almacenamiento de la Data de muestra).
El resto es muy a menudo PCM lineal de 16 bits en formato little-endian con complemento a signo 2, que representa muestras a escala arbitraria a una velocidad de 44100 Hz.
Usted habrá escuchado que las señales de audio están representadas por algún tipo de onda. Si alguna vez has visto estos diagramas de ondas con una línea subiendo y bajando, eso es básicamente lo que hay dentro de esos archivos. Eche un vistazo a esta imagen de archivo de http://en.wikipedia.org/wiki/Sampling_rate
Ves tu onda de audio (la línea gris). El valor actual de esa onda se mide repetidamente y se da como un número. Ese es el número en esos bytes. Hay dos cosas diferentes que pueden ajustarse con esto: la cantidad de mediciones que realiza por segundo (esa es la frecuencia de muestreo, expresada en Hz; es decir, la cantidad de mediciones que toma por segundo). El otro ajuste es qué tan exacto mides. En el caso de 2 bytes, toma dos bytes para una medición (es decir, valores de -32768 a 32767 normalmente). Entonces, con esos números allí, puede recrear la onda original (hasta una calidad limitada, por supuesto, pero eso siempre ocurre cuando almacena cosas digitalmente). Y la recreación de la onda original es lo que su orador está tratando de hacer en la reproducción.
Hay algunas cosas más que debes saber. Primero, dado que son dos bytes, necesita conocer el orden de bytes (big endian, little endian) para recrear correctamente los números. En segundo lugar, necesita saber cuántos canales tiene y cómo se almacenan. Normalmente, tendría mono (un canal) o estéreo (dos), pero es posible más. Si tiene más de un canal, necesita saber cómo se almacenan. A menudo los tendrías intercalados, eso significa que obtienes un valor para cada canal por cada punto en el tiempo, y luego todos los valores para el siguiente punto en el tiempo.
Para ilustrar: si tiene datos de 8 bytes para dos canales y un número de 16 bits:
abcdefgh
Aquí a
y b
constituirían el primer número de 16 bits que es el primer valor para el canal 1, c
y d
serían el primer número para el canal 2. e
y f
son el segundo valor del canal 1, g
el segundo valor para el canal 2. No escucharía mucho allí porque eso no se acercaría a un segundo de datos ...
Si junta toda la información que tiene, puede calcular la velocidad de bits que tiene, es decir, cuántos bits de información genera la grabadora por segundo. En nuestro ejemplo, genera 2 bytes por canal en cada muestra. Con dos canales, eso sería 4 bytes. Necesita aproximadamente 44000 muestras por segundo para representar los sonidos que un ser humano puede escuchar normalmente. Por lo tanto, terminará con 176000 bytes por segundo, que es 1408000 bits por segundo.
Y, por supuesto, no son valores de 2 bits, sino dos valores de 2 bytes, o tendría una calidad realmente mala.