Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Generación de audio y voz, Unidad 2 — Representación del audio, 2.1 — Audio como dato numérico ·

PCM y formatos

PCM y formatos

Introducción

La representación del audio como datos numéricos es una de las bases fundamentales para su procesamiento, transmisión y generación. Entre estos datos numéricos, la representación en formato PCM (Pulse Code Modulation) es uno de los más comunes y utilizados. En este artículo, exploraremos cómo funciona el formato PCM, sus diferentes formatos comunes y algunos errores típicos a evitar para asegurar una transmisión y generación audio precisa.

Explicación principal

¿Qué es PCM?

PCM es un método de codificación que convierte señales analógicas continuas en secuencias discretas de números. Este proceso implica muestreo, cuantización y codificación. En términos simples, se toman muestras del audio original a intervalos regulares, se cuantizan (es decir, se aproximan a valores discretos) y luego se codifican en un formato numérico.

Muestreo

El muestreo es el proceso de tomar muestras continuas de una señal analógica a intervalos regulares. La frecuencia de muestreo determina cuántas muestras se toman por segundo, y debe ser al menos igual a dos veces la frecuencia máxima del audio (según la Regla de Nyquist).

Cuantización

La cuantización es el proceso de aproximación de los valores de muestra continuos a valores discretos. Esto resulta en una pérdida de información que se traduce en ruido y distorsión.

Codificación

Una vez muestreado y cuantizado, la señal se codifica para su almacenamiento o transmisión. En PCM, esta codificación es simple: cada muestra se convierte a un valor numérico.

Ejemplo de representación PCM:

import numpy as np

# Generar una señal senoidal simple
t = np.linspace(0, 1, 44100)  # 44.1 kHz de muestreo
signal = np.sin(2 * np.pi * 440 * t)

# Convertir a PCM (suponiendo 8 bits)
pcm_signal = (signal * (2**7 - 1)).astype(np.int8)

print(pcm_signal[:10])  # Mostrar las primeras 10 muestras

Formatos de PCM

Existen varios formatos PCM comunes, pero los más utilizados son:

  • Mono/Stereo: Mono es una sola canal de audio, mientras que stereo tiene dos canales.
  • Bits por muestra (bps): Indica la precisión del muestreo. Por ejemplo, 8 bits, 16 bits, 24 bits.
  • Frecuencia de muestreo: Como mencionamos anteriormente, se refiere a cuántas muestras se toman por segundo.

Ejemplo de formato PCM:

# Suponiendo un canal mono (mono), 16 bits, y una frecuencia de muestreo de 44.1 kHz

formato_pcm = "mono_16bit_44100"

Errores típicos / trampas

  1. Frecuencia de muestreo inadecuada: Si la frecuencia de muestreo es demasiado baja, se perderá información acústica importante.
  2. Bits insuficientes para cuantización: Cuanto más alta sea la calidad del audio, necesitarás más bits para mantener una buena precisión.
  3. Conversiones innecesarias entre formatos PCM: Convertir un formato PCM a otro puede resultar en pérdida de calidad o distorsión.

Checklist accionable

  1. Verifica que tu frecuencia de muestreo cumpla con la Regla de Nyquist para evitar aliasing.
  2. Asegúrate de tener suficientes bits por muestra para representar adecuadamente los valores de la señal.
  3. Utiliza el formato PCM correcto según tus necesidades (mono, stereo, etc.).
  4. Evita realizar conversaciones innecesarias entre formatos PCM para preservar la calidad del audio.
  5. Revisa y ajusta regularmente tu configuración de PCM en tus sistemas de procesamiento de audio.

Siguientes pasos

  • Explorar otros formatos de audio, como WAV o MP3, que construyen sobre los fundamentos PCM.
  • Probar diferentes configuraciones de muestreo y cuantización para encontrar el equilibrio entre calidad y rendimiento.
  • Familiarizarte con las bibliotecas y herramientas disponibles para manipulación de audio en Python, como PyDub o soundfile.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).