# Optimizar para voz | Ejemplos de AudioDN

> Captura cualquier grabación de voz, genera una variante Opus diminuta y elimina el original para que las bibliotecas a escala de buzón de voz sigan siendo baratas de almacenar y transmitir.

Source: https://audiodeliverynetwork.com/es/examples/optimize-for-voice/

---

# Optimizar para voz

Convierte mensajes de contestador, grabaciones de llamadas y notas de voz en algo que realmente puedas escalar. Sube lo que produzca el grabador, deja que AudioDN genere un archivo **Opus** afinado para voz a 32 o 64 kbps, y luego elimina el original para conservar — y transmitir — solo el archivo diminuto que necesitan los oyentes.

Opus está pensado para voz y streaming a bajo bitrate. A 32 kbps mono a menudo suena más claro que encodes MP3/AAC mucho más grandes del mismo mensaje de buzón de voz — y tu curva de almacenamiento se derrumba cuando eliminas el WAV original.

## Qué puedes publicar

Usa este patrón siempre que la voz sea el producto: buzón de voz, archivos de llamadas de soporte, prompts de IVR, narración y memos de voz. Esas fuentes suelen ser mono con dinámica estrecha — conservar un WAV de varios megabytes (o un AAC HQ orientado a música) para siempre quema almacenamiento y ancho de banda casi sin ganancia perceptiva. Una variante dedicada `voice` da a cada carga un archivo predecible y afinado para voz que puedes pasar a players, endpoints de descarga o almacenamiento frío.

| Etapa | Huella típica (~45 s mono) | Notas |
| --- | --- | --- |
| WAV de origen (48 kHz / 16-bit) | ~4 MB | Captura sin pérdida / muestra usada abajo |
| Opus `voice` @ 32 kbps mono | ~180 KB | Voz clara; ideal para bibliotecas a escala de buzón de voz e IVR |
| Opus `voice` @ 64 kbps mono | ~360 KB | Más margen para líneas ruidosas o acentos más densos |

Eso es aproximadamente una reducción de **20×–40×** frente al WAV de origen antes de eliminar el original. A escala de biblioteca — miles de mensajes — pasas de “guardar todo para siempre” a “guardar lo que los oyentes realmente reproducen.”

## 1\. Sube cualquier grabación de voz, sea cual sea su calidad

Omite la compresión agresiva en el cliente. Apps de teléfono, exportaciones de Zoom, grabadoras baratas y WAVs de estudio pueden aterrizar en la misma colección — AudioDN analiza el archivo y construye variantes a partir de la mejor fuente disponible. Prefiere la mayor calidad que tengas en el momento de la carga (WAV / FLAC / AIFF cuando sea posible) para que el encode Opus parta de una señal limpia.

Este recorrido usa una muestra generada de contestador — un beep clásico seguido de una madre imponente preguntando, con máximo timing cómico, cuándo llegan los nietos. Descarga el WAV de origen si quieres ejecutar la carga tú mismo: [answering-machine-message.wav](/examples/answering-machine-message.wav).

Crear una sesión de carga

#### Ejemplo de solicitud

  

```
# COLLECTION_ID: uuid de la colección a la que subir
curl -X POST "https://api.audiodelivery.net/v1/upload_session" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "collection_id": "COLLECTION_ID",
  "expires_in": 7200
}'
```

```
// COLLECTION_ID: uuid de la colección a la que subir

const payload = {
  "collection_id": "COLLECTION_ID",
  "expires_in": 7200
};

const response = await fetch('https://api.audiodelivery.net/v1/upload_session', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
```

```
# COLLECTION_ID: uuid de la colección a la que subir

import requests

headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}

payload = {
    "collection_id": "COLLECTION_ID",
    "expires_in": 7200
}

response = requests.post(
    "https://api.audiodelivery.net/v1/upload_session",
    headers=headers,
    json=payload,
)
data = response.json()
```

Crear una pista en la sesión

#### Ejemplo de solicitud

  

```
# SESSION_ID: upload_session_id de la llamada anterior
curl -X POST "https://api.audiodelivery.net/v1/upload/SESSION_ID/track" \
  -H "Content-Type: application/json" \
  -d '{
  "file_name": "answering-machine-message.wav"
}'
```

```
// SESSION_ID: upload_session_id de la llamada anterior

const payload = {
  "file_name": "answering-machine-message.wav"
};

const response = await fetch('https://api.audiodelivery.net/v1/upload/SESSION_ID/track', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
```

```
# SESSION_ID: upload_session_id de la llamada anterior

import requests

headers = {
    "Content-Type": "application/json",
}

payload = {
    "file_name": "answering-machine-message.wav"
}

response = requests.post(
    "https://api.audiodelivery.net/v1/upload/SESSION_ID/track",
    headers=headers,
    json=payload,
)
data = response.json()
```

Subir los bytes del archivo

PUT track\_upload.upload\_url

```
# Haz PUT de los bytes de la grabación a track_upload.upload_url.
# Cualquier audio compatible funciona — empieza con la mayor calidad que tengas (aquí se muestra WAV).
curl -X PUT "$UPLOAD_URL" \
  --data-binary @answering-machine-message.wav \
  -H "Content-Type: audio/wav"
```

Haz polling de `GET /v1/track/:track_id` hasta que `track_status_id` sea `ready`. Las variantes a nivel de organización terminan en este paso — incluido un archivo Original Upload si esa receta está habilitada. Detalles de la sesión de carga: [API de sesiones de carga](/docs/api/upload-sessions).

## 2\. Transcodifica a una variante Opus de voz

Crea una variante `transcode` llamada `voice` con `codec: “opus”`. Para voz, empieza en **32 kbps mono** — drásticamente más pequeña que los presets de música, y sigue siendo inteligible en auriculares y teléfonos. Sube a **64 kbps** cuando necesites más fidelidad para fuentes ruidosas. Elimina tags y cover art; solo desperdician bytes en buzones de voz.

Configura la receta una vez en el dashboard para que cada carga obtenga un archivo `voice` automáticamente, o añádela a una pista ready con la API de variantes (abajo). En este endpoint solo se permiten codecs con pérdida — Opus es exactamente lo que quieres aquí.

Recomendado: Opus mono a 32 kbps

#### Ejemplo de solicitud

  

```
# TRACK_ID: uuid de la pista ready
curl -X POST "https://api.audiodelivery.net/v1/track/TRACK_ID/variant" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "variant_type_id": "transcode",
  "index": "voice",
  "codec": "opus",
  "bitrate": 32,
  "is_stereo": false,
  "is_strip_tags": true,
  "is_strip_cover": true
}'
```

```
// TRACK_ID: uuid de la pista ready

const payload = {
  "variant_type_id": "transcode",
  "index": "voice",
  "codec": "opus",
  "bitrate": 32,
  "is_stereo": false,
  "is_strip_tags": true,
  "is_strip_cover": true
};

const response = await fetch('https://api.audiodelivery.net/v1/track/TRACK_ID/variant', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
```

```
# TRACK_ID: uuid de la pista ready

import requests

headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}

payload = {
    "variant_type_id": "transcode",
    "index": "voice",
    "codec": "opus",
    "bitrate": 32,
    "is_stereo": False,
    "is_strip_tags": True,
    "is_strip_cover": True
}

response = requests.post(
    "https://api.audiodelivery.net/v1/track/TRACK_ID/variant",
    headers=headers,
    json=payload,
)
data = response.json()
```

Opcional: 64 kbps si necesitas más margen

#### Alternate Request

  

```
# TRACK_ID: uuid de la pista ready
curl -X POST "https://api.audiodelivery.net/v1/track/TRACK_ID/variant" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "variant_type_id": "transcode",
  "index": "voice",
  "codec": "opus",
  "bitrate": 64,
  "is_stereo": false,
  "is_strip_tags": true,
  "is_strip_cover": true
}'
```

```
// TRACK_ID: uuid de la pista ready

const payload = {
  "variant_type_id": "transcode",
  "index": "voice",
  "codec": "opus",
  "bitrate": 64,
  "is_stereo": false,
  "is_strip_tags": true,
  "is_strip_cover": true
};

const response = await fetch('https://api.audiodelivery.net/v1/track/TRACK_ID/variant', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload)
});

const data = await response.json();
```

```
# TRACK_ID: uuid de la pista ready

import requests

headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}

payload = {
    "variant_type_id": "transcode",
    "index": "voice",
    "codec": "opus",
    "bitrate": 64,
    "is_stereo": False,
    "is_strip_tags": True,
    "is_strip_cover": True
}

response = requests.post(
    "https://api.audiodelivery.net/v1/track/TRACK_ID/variant",
    headers=headers,
    json=payload,
)
data = response.json()
```

#### El index debe ser único

El valor de `index` (`voice`) no debe colisionar con una variante existente de organización o de pista. Elige una receta de bitrate por index — no hagas POST de 32 y 64 contra el mismo nombre `voice`.

La pista vuelve a `processing` mientras se construye Opus y luego regresa a `ready`. Referencia de parámetros: [API de variantes](/docs/api/variants).

## 3\. Elimina el original cuando estés satisfecho

Mientras sigues afinando recetas, conserva el Original Upload para poder regenerar variantes. Una vez que `voice` suene bien y ya no necesites reprocesar, elimina el original para recuperar el WAV grande (u otro origen) del almacenamiento. Después de eso, AudioDN no puede generar nuevas variantes para esa pista — solo los archivos restantes (como `voice`) siguen disponibles para reproducción y descarga.

En el dashboard, abre la pista → files / variants, confirma que `voice` está ready y luego elimina el Original Upload. Consulta [Original Upload](/docs/variant-types#original-upload) para el compromiso: los originales son un seguro; cuando estés contento con el resultado Opus, son sobre todo nostalgia cara.

Patrón para productos de buzón de voz / archivo: carga de alta calidad → espera a `voice` → elimina el original → entrega solo `variants=“voice”` para siempre.

## 4\. Reproduce solo la variante de voz

Apunta el player a la pista y solicita `variants=“voice”` con una clave Client-Side Player. Los oyentes nunca descargan el origen de varios megabytes — solo el archivo Opus que decidiste conservar.

#### Dependencia

 

```
npm install @audiodn/components
```

```
<script type="module" src="https://unpkg.com/@audiodn/components@latest/dist/player.js"></script>
```

#### Uso

```
<script type="module">
  import '@audiodn/components/player';
</script>

<audiodn-player
  api-key="YOUR_PLAYER_API_KEY"
  scope="track"
  id="9b46405d-edc0-497c-9c36-4c97ceb15337"
  variants="voice"
  size="regular"
></audiodn-player>
```

### Demo en vivo

La reproducción es la variante Opus `voice` de la muestra del contestador — escucha la huella que puedes publicar.

Demo de buzón de voz: muestra generada para este ejemplo (tono de contestador + mensaje).

Más opciones del player: [Documentación del componente Player](/docs/components/player).

## Lista de comprobación

-   Sube la fuente de voz de mayor calidad que tengas (se muestra WAV; cualquier formato compatible funciona).
-   Existe un transcode `voice` con `codec: “opus”`, mono y 32 (o 64) kbps.
    
-   Escucha `variants=“voice”` y confirma que la calidad de voz es suficiente para tu producto.
-   Elimina el Original Upload cuando ya no necesites regenerar variantes — conserva solo el archivo Opus barato.

Publicado 14 de julio de 2026
