Forma de onda
Un simple botón de reproducir no le dice a quien escucha dónde está el momento fuerte ni cuánto dura la pista; la forma de onda es lo que convierte un archivo de audio plano en algo que se puede ver y recorrer con el dedo. Esta API para generar forma de onda toma un archivo de audio y devuelve una imagen renderizada o el JSON de picos que la sostiene, según lo que su reproductor necesite.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Por qué los reproductores se apoyan en un dibujo del sonido
El sonido no tiene forma hasta que alguien lo dibuja: la línea irregular de un reproductor de podcast o un editor de audio es un resumen visual de miles de muestras de amplitud comprimidas en algo que una pantalla muestra de un vistazo. Diseñadores que construyen un reproductor a medida, plataformas de podcast que quieren una vista previa recorrible y apps de notas de voz que muestran una grabación en curso dependen de alguna versión de esta imagen, y calcularla en cada carga de página es un desperdicio cuando se puede generar una vez y guardar en caché.
Dos salidas para dos necesidades distintas
Envía el archivo de audio a POST /audio/waveform y elige si quiere una imagen ya renderizada, lista para insertar en una interfaz, o el JSON de picos subyacente, los valores de amplitud que una librería de frontend basada en canvas puede dibujar con control total sobre color y estilo. La tarea se pone en cola de forma asíncrona y devuelve un task_id; el resultado se entrega luego por webhook firmado o por un enlace firmado válido por 24 horas.
Del osciloscopio al reproductor recorrible en pantalla
La visualización de forma de onda se remonta al osciloscopio, un instrumento construido para hacer visible una señal eléctrica como una línea en movimiento; el software de audio adaptó la misma idea para darle a un archivo estático una forma visible y clicable. El JSON de picos es el descendiente moderno de esa idea, un arreglo compacto de valores de amplitud en vez de una imagen, y por eso tantos reproductores web piden datos de picos cuando quieren una forma de onda que puedan restilizar a su gusto.
Dónde aparece la forma de onda en un flujo de trabajo
Las plataformas de podcast generan la forma de onda una sola vez al subir el archivo en vez de hacerlo en el navegador de quien escucha, las herramientas de edición usan datos de picos para hacer clic con precisión sobre una sección fuerte, y las funciones de mensajes de voz en apps de chat muestran una forma de onda que parece en vivo pero fue prerrenderizada. El precio es de $0.077 por solicitud más $0.0045 por minuto de audio origen, así que una nota de voz corta cuesta una fracción de un episodio de una hora, y una tarea que falla tras los reintentos automáticos nunca se cobra.
Acceso y estado actual
El endpoint requiere saldo prepago, igual que el resto de la API; sin saldo, las solicitudes devuelven HTTP 402. Este endpoint está actualmente en despliegue y comenzará a aceptar tareas pronto. El audio origen y los datos de forma de onda generados se conservan solo durante la ventana de entrega y nunca se usan para entrenar modelos.
Qué puede hacer con ella
Vista previa para reproductor de podcast
Genere una imagen de forma de onda una sola vez al subir el archivo para que el reproductor muestre un visual recorrible en vez de una barra de progreso vacía.
Estilo personalizado de reproductor web
Obtenga el JSON de picos para que un reproductor de canvas en el frontend dibuje la forma de onda con la paleta de colores propia de la aplicación en vez de una imagen fija.
Vista previa de mensajes de voz
Renderice una forma de onda para un mensaje de voz grabado para que la interfaz de chat lo muestre antes de que comience la reproducción.
Puntos de clic para herramientas de edición
Use los datos de picos para que quien edita haga clic directamente sobre una sección fuerte o silenciosa de una pista para navegar con precisión.
Preguntas frecuentes
¿Cómo genero una imagen de forma de onda a partir de audio?
Envía el archivo a POST /audio/waveform y solicita la salida de imagen; la tarea devuelve la forma de onda renderizada por webhook o por un enlace firmado.
¿Puedo obtener datos de picos crudos en vez de una imagen?
Sí, el mismo endpoint puede devolver JSON de picos, los valores numéricos de amplitud, para que un reproductor de frontend dibuje su propia forma de onda con estilo personalizado.
¿Hay un plan gratuito para la api de forma de onda?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuánto cuesta generar una forma de onda?
Cuesta $0.077 por solicitud más $0.0045 por minuto de audio origen, así que el costo escala con la duración del archivo.
¿Ya está disponible la api para generar forma de onda?
Actualmente está en despliegue y comenzará a aceptar tareas pronto; la salida de imagen y de JSON de picos descrita aquí es la que se lanzará.
¿En qué formato de imagen viene la forma de onda?
El endpoint renderiza un formato de imagen estándar adecuado para incrustar directamente en una interfaz web o de aplicación.
¿Puedo usar esto para un lote grande de archivos de audio?
Sí, envíe una solicitud por archivo; cada una se procesa y se cobra de forma independiente, así puede procesar un catálogo de episodios o clips en paralelo.
¿La imagen de forma de onda refleja el contenido real del audio?
Sí, tanto la imagen como el JSON de picos se calculan directamente a partir de la amplitud del audio que envía, no de un marcador genérico ni una aproximación.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/audio/waveform \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"audio":"https://ejemplo.com/audio.mp3"}'const res = await fetch("https://api.kit.forhosting.com/audio/waveform", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"audio": "https://ejemplo.com/audio.mp3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/waveform",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"audio": "https://ejemplo.com/audio.mp3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/waveform", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"audio":"https://ejemplo.com/audio.mp3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"audio":"https://ejemplo.com/audio.mp3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/waveform", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"audio": "https://ejemplo.com/audio.mp3"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.waveform",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 200 |
max_minutes | 180 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |