El formato de archivo de audio de forma de onda ( WAVE , o WAV debido a su extensión de nombre de archivo ; [3] [6] [7] pronunciado / w æ v / o / w eɪ v / [8] ) es un estándar de formato de archivo de audio para almacenar un flujo de bits de audio en computadoras personales . El formato fue desarrollado y publicado por primera vez en 1991 por IBM y Microsoft . Es el formato principal utilizado en los sistemas Microsoft Windows para audio sin comprimir . La codificación de flujo de bits habitual es el formato de modulación de código de pulso lineal (LPCM).
WAV es una aplicación del método de formato de flujo de bits Resource Interchange File Format (RIFF) para almacenar datos en fragmentos y, por lo tanto, es similar al formato 8SVX y al formato Audio Interchange File Format (AIFF) utilizados en las computadoras Amiga y Macintosh , respectivamente.
El archivo WAV es una instancia de un formato de archivo de intercambio de recursos (RIFF) definido por IBM y Microsoft . [3] El formato RIFF actúa como un contenedor para varios formatos de codificación de audio .
Aunque un archivo WAV puede contener audio comprimido , el formato de audio WAV más común es el audio sin comprimir en el formato de modulación de código de pulso lineal (LPCM). LPCM también es el formato de codificación de audio estándar para CD de audio , que almacenan audio LPCM de dos canales muestreado a 44,1 kHz con 16 bits por muestra . Dado que LPCM no está comprimido y conserva todas las muestras de una pista de audio, los usuarios profesionales o expertos en audio pueden usar el formato WAV con audio LPCM para obtener la máxima calidad de audio. [9] Los archivos WAV también se pueden editar y manipular con relativa facilidad mediante software.
En Microsoft Windows, el formato WAV admite audio comprimido mediante el Administrador de compresión de audio (ACM). Se puede utilizar cualquier códec ACM para comprimir un archivo WAV. Se puede acceder a la interfaz de usuario (IU) de ACM a través de varios programas que lo utilizan, incluido el Grabador de sonidos en algunas versiones de Windows.
A partir de Windows 2000WAVE_FORMAT_EXTENSIBLE
, se definió un encabezado que especifica múltiples datos de canales de audio junto con las posiciones de los altavoces, elimina la ambigüedad con respecto a los tipos de muestra y tamaños de contenedor en el formato WAV estándar y admite la definición de extensiones personalizadas para el formato. [4] [5] [10]
Un archivo RIFF es un formato de archivo etiquetado. Tiene un formato de contenedor específico (un fragmento ) con un encabezado que incluye una etiqueta de cuatro caracteres ( FourCC ) y el tamaño (número de bytes) del fragmento. La etiqueta especifica cómo se deben interpretar los datos dentro del fragmento, y existen varias etiquetas FourCC estándar. Las etiquetas que consisten en letras mayúsculas son etiquetas reservadas. El fragmento más externo de un archivo RIFF tiene una RIFF
etiqueta; los primeros cuatro bytes de datos del fragmento son una etiqueta FourCC adicional que especifica el tipo de formato y van seguidos de una secuencia de subfragmentos. En el caso de un archivo WAV, la etiqueta adicional es WAVE
. El resto de los datos RIFF es una secuencia de fragmentos que describen la información de audio.
La ventaja de un formato de archivo etiquetado es que el formato se puede ampliar más tarde manteniendo la compatibilidad con versiones anteriores . [11] La regla para un lector RIFF (o WAV) es que debe ignorar cualquier fragmento etiquetado que no reconozca. [12] El lector no podrá usar la nueva información, pero no debe confundirse.
La especificación de los archivos RIFF incluye la definición de un INFO
fragmento. El fragmento puede incluir información como el título de la obra, el autor, la fecha de creación e información de copyright. Aunque el INFO
fragmento se definió para RIFF en la versión 1.0, no se hizo referencia al fragmento en la especificación formal de un archivo WAV. Muchos lectores tuvieron problemas para procesar esto. En consecuencia, lo más seguro desde el punto de vista del intercambio era omitir el INFO
fragmento y otras extensiones y enviar un archivo con el mínimo común denominador. Existen otros problemas de ubicación de fragmentos INFO .
Se esperaba que los archivos RIFF se usaran en entornos internacionales, por lo que existe CSET
un fragmento para especificar el código de país, el idioma, el dialecto y la página de códigos para las cadenas en un archivo RIFF. [13] Por ejemplo, especificar un fragmento apropiado CSET
debería permitir que las cadenas en un INFO
fragmento (y otros fragmentos en todo el archivo RIFF) se interpreten como caracteres cirílicos o japoneses.
RIFF también define un JUNK
fragmento cuyo contenido no es interesante. [14] El fragmento permite eliminar un fragmento simplemente cambiando su FourCC. El fragmento también se puede utilizar para reservar algo de espacio para futuras ediciones, de modo que el archivo pueda modificarse sin cambiar su tamaño. Una definición posterior de RIFF introdujo un PAD
fragmento similar. [15]
La definición de nivel superior de un archivo WAV es: [16]
<forma-WAVE> → RIFF('WAVE' <fmt-ck> // Formato del archivo [<fact-ck>] // Fragmento de hechos [<cue-ck>] // Puntos de referencia [<playlist-ck>] // Lista de reproducción [<assoc-data-list>] // Lista de datos asociados <wave-data> ) // Datos de onda
El formato RIFF de nivel superior utiliza una WAVE
etiqueta. A continuación, se incluye un <fmt-ck>
fragmento obligatorio que describe el formato de los datos de muestra que siguen. Este fragmento incluye información como la codificación de la muestra, la cantidad de bits por canal, la cantidad de canales y la frecuencia de muestreo.
La especificación WAV incluye algunas características opcionales. El <fact-ck>
fragmento opcional informa la cantidad de muestras para algunos esquemas de codificación comprimidos. El <cue-ck>
fragmento identifica algunos números de muestra significativos en el archivo de onda. El <playlist-ck>
fragmento permite que las muestras se reproduzcan fuera de orden o se repitan en lugar de solo desde el principio hasta el final. La lista de datos asociada ( <assoc-data-list>
) permite adjuntar etiquetas y notas a los puntos de referencia; se pueden proporcionar anotaciones de texto para un grupo de muestras (por ejemplo, información de subtítulos).
Finalmente, el <wave-data>
fragmento obligatorio contiene las muestras reales en el formato previamente especificado.
Tenga en cuenta que la definición del archivo WAV no muestra dónde INFO
se debe colocar un fragmento. Tampoco dice nada sobre la ubicación de un CSET
fragmento (que especifica el conjunto de caracteres utilizado).
La especificación RIFF intenta ser una especificación formal, pero su formalismo carece de la precisión que se ve en otros formatos etiquetados. Por ejemplo, la especificación RIFF no distingue claramente entre un conjunto de subfragmentos y una secuencia ordenada de subfragmentos. El fragmento en forma RIFF sugiere que debería ser un contenedor de secuencia. La información de secuenciación se especifica en la forma RIFF de un archivo WAV de acuerdo con el formalismo: "Sin embargo, <fmt-ck>
siempre debe aparecer antes de <wave-data>
, y ambos fragmentos son obligatorios en un archivo WAVE". [17] La especificación sugiere que un LIST
fragmento también es una secuencia: "Un fragmento LIST contiene una lista, o secuencia ordenada, de subfragmentos". [18] Sin embargo, la especificación no proporciona una especificación formal del INFO
fragmento; un INFO
LIST
fragmento de ejemplo ignora la secuencia de fragmentos implícita en la INFO
descripción. [19] La LIST
definición de fragmento para <wave-data>
sí utiliza el LIST
fragmento como un contenedor de secuencia con una buena semántica formal.
La especificación WAV admite, y la mayoría de los archivos WAV utilizan, una única matriz contigua de muestras de audio. La especificación también admite bloques discretos de muestras y silencios que se reproducen en orden. La especificación de los datos de muestra contiene errores evidentes: [20]
Los datos de forma de onda contienen los datos de la forma de onda. Se definen de la siguiente manera: <datos de onda> → { <datos-ck> | <lista de datos> } <datos-ck> → datos( <datos-onda> ) <wave-list> → LIST( 'wavl' { <data-ck> | // Muestras de ondas <silencio-ck> }... ) // Silencio <silence-ck> → slnt( <dwSamples:DWORD> ) // Recuento de muestras silenciosas
Aparentemente <data-list>
(undefined) y <wave-list>
(defined but not referenced) deberían ser idénticos. Incluso con esto resuelto, las producciones permiten que a <data-ck>
contenga un recursivo <wave-data>
(lo que implica problemas de interpretación de datos). Para evitar la recursión, la especificación puede interpretarse como:
<datos de onda> → { <datos-ck> | <lista de ondas> } <datos-ck> → datos( <bSampleData:BYTE> ... ) <wave-list> → LIST( 'wavl' { <data-ck> | // Muestras de ondas <silencio-ck> }... ) // Silencio <silence-ck> → slnt( <dwSamples:DWORD> ) // Recuento de muestras silenciosas
Los archivos WAV pueden contener listas IFF incrustadas , que pueden contener varios subfragmentos . [21] [22] [23]
Este es un ejemplo de encabezado de archivo WAV (44 bytes). Los datos se almacenan en orden de bytes little-endian.
[Trozo de RIFF maestro] FileTypeBlocID (4 bytes): Identificador «RIFF» (0x52, 0x49, 0x46, 0x46) Tamaño del archivo (4 bytes): tamaño total del archivo menos 8 bytes FileFormatID (4 bytes): Formato = « WAVE » (0x57, 0x41, 0x56, 0x45)[Fragmento que describe el formato de los datos] FormatBlocID (4 bytes): Identificador « fmt␣ » (0x66, 0x6D, 0x74, 0x20) BlocSize (4 bytes): tamaño del fragmento menos 8 bytes, que aquí son 16 bytes (0x10) AudioFormat (2 bytes): formato de audio (1: entero PCM, 3: punto flotante IEEE 754) NbrChannels (2 bytes): Número de canales Frecuencia (4 bytes): frecuencia de muestreo (en hercios) BytePerSec (4 bytes): Número de bytes a leer por segundo (Frecuencia * BytePerBloc). BytePerBloc (2 bytes): Número de bytes por bloque (NbrChannels * BitsPerSample / 8). BitsPerSample (2 bytes): Número de bits por muestra[Fragmento que contiene los datos muestreados] DataBlocID (4 bytes): Identificador «datos» (0x64, 0x61, 0x74, 0x61) DataSize (4 bytes): tamaño de SampledData Datos muestreados
Como un derivado de RIFF, los archivos WAV pueden etiquetarse con metadatos en el fragmento INFO. Además, los archivos WAV pueden incorporar cualquier tipo de metadatos, incluidos, entre otros, datos de la Plataforma de metadatos extensible (XMP) [24] o etiquetas ID3 [25] en fragmentos adicionales. La especificación RIFF requiere que las aplicaciones ignoren los fragmentos que no reconocen y es posible que las aplicaciones no utilicen necesariamente esta información adicional.
Los archivos WAV sin comprimir son grandes, por lo que compartir archivos WAV a través de Internet es poco común, excepto entre profesionales del video, la música y el audio. La alta resolución del formato lo hace adecuado para conservar archivos de primera generación de alta calidad, para su uso en un sistema donde el espacio en disco y el ancho de banda de la red no son limitaciones.
A pesar de su gran tamaño, la mayoría de las emisoras de radio utilizan archivos WAV sin comprimir, especialmente aquellas que han adoptado un sistema sin cinta.
El formato WAV está limitado a archivos de menos de4 GiB , debido a su uso de un entero sin signo de 32 bits para registrar el tamaño del archivo en el encabezado. Aunque esto equivale a unas 6,8 horas de audio con calidad de CD a 44,1 kHz, estéreo de 16 bits , a veces es necesario superar este límite, especialmente cuando se requieren mayores frecuencias de muestreo , resoluciones de bits o recuento de canales . Por lo tanto, el formato W64 se creó para su uso en Sound Forge . Su campo de tamaño de archivo de 64 bits en el encabezado permite tiempos de grabación mucho más largos. El formato RF64 especificado por la Unión Europea de Radiodifusión también se ha creado para resolver este problema.
Dado que la frecuencia de muestreo de un archivo WAV puede variar de1 Hz a4,3 GHz y el número de canales puede ser tan alto como 65535, los archivos WAV también se han utilizado para datos que no son de audio. LTspice , por ejemplo, puede almacenar múltiples formas de onda de trazas de circuitos en canales separados, a cualquier frecuencia de muestreo apropiada, con el rango de escala completa representando ±1 V o A en lugar de una presión de sonido. [27]
Los discos compactos de audio (CD) no utilizan el formato de archivo WAV, sino el formato de audio Red Book . La característica común es que los CD de audio están codificados como LPCM estéreo de 16 bits a 44,1 kHz sin comprimir , que es uno de los formatos compatibles con WAV.
El audio de los archivos WAV se puede codificar en una variedad de formatos de codificación de audio, como GSM o MP3 , para reducir el tamaño del archivo. Todos los archivos WAV, incluso aquellos que usan compresión MP3,.wav
usan la extensión.
Esta es una referencia para comparar la calidad de audio monofónico (no estereofónico ) y las tasas de bits de compresión de los formatos de codificación de audio disponibles para archivos WAV, incluidos LPCM, ADPCM , Microsoft GSM 06.10 , CELP , SBC , Truespeech y MPEG Layer-3. Estos son los códecs ACM predeterminados que vienen con Windows.
{{cite web}}
: CS1 maint: numeric names: authors list (link)INAM
aparece antesICOP