🎧 ACUSTIC DOCS
Esta API permite generar y comparar huellas acústicas (fingerprints) de archivos o streams de audio en tiempo real, y ahora también transcribir audio a texto. Pensada para aplicaciones de monitoreo radial, detección de jingles, análisis acústico y transcripción en tiempo real.
📌 Base URL
Producción: https://acustic.com.uy
🔐 Autenticación
Todos los endpoints requieren un token válido que debe enviarse en el header HTTP Authorization así:
Authorization: Bearer <tu_token>
Puedes gestionar tus tokens en el panel de control: https://acustic.uy
📥 Endpoints disponibles
| Método | Ruta | Descripción | Ejemplo |
|---|---|---|---|
| POST | /fingerprint |
Genera la huella digital (fingerprint) de un archivo de audio. | curl -H "Authorization: Bearer <token>" -F "file=@jingle.mp3" https://acustic.com.uy/fingerprint |
| POST | /compare |
Compara un audio nuevo contra uno o varios ya fingerprintados. | curl -X POST -H "Authorization: Bearer <token>" https://acustic.com.uy/compare |
| GET | /status |
Devuelve el estado actual del servicio. | curl https://acustic.com.uy/status |
| POST | /transcribir |
Genera la transcripción de un archivo de audio. | curl -H "Authorization: Bearer <token>" -F "audio=@audio.mp3" https://acustic.com.uy/transcribir |
🎶 Fingerprints
Un "fingerprint" o huella acústica es una representación única de un fragmento de audio. Nuestra API permite generar y comparar estas huellas para identificar rápidamente segmentos de audio, incluso si el audio ha sido modificado con ruido, compresión o cambios de velocidad.
POST /fingerprint
Descripción: Crea un fingerprint a partir de un archivo de audio. Este endpoint es útil para construir una base de datos de audio de referencia (por ejemplo, jingles o canciones).
Headers
Authorization: Bearer <tu_token>(obligatorio)Content-Type: multipart/form-data
Body
file: El archivo de audio (mp3, wav, etc.) a fingerprintar.
Respuesta
Respuesta exitosa:
{
"status": "success",
"message": "Fingerprint generado exitosamente",
"fingerprint_id": "8a7c1b5e-9f0a-4d2c-8f1d-7a6b0c5e9f8a"
}
Respuesta de error (token inválido):
{
"error": "Token inválido o expirado"
}
POST /compare
Descripción: Compara un nuevo archivo de audio con un conjunto de fingerprints previamente guardados en tu base de datos.
Headers
Authorization: Bearer <tu_token>(obligatorio)Content-Type: multipart/form-data
Body
file: El archivo de audio a comparar.fingerprint_ids(opcional): Una lista de IDs de fingerprints separados por comas para comparar. Si no se especifica, se comparará con todos los fingerprints asociados a tu cuenta.
Respuesta
Respuesta exitosa (coincidencia encontrada):
{
"status": "match",
"message": "Coincidencia encontrada",
"match_id": "8a7c1b5e-9f0a-4d2c-8f1d-7a6b0c5e9f8a",
"confidence": 0.98,
"match_time": 12.5
}
Respuesta exitosa (sin coincidencia):
{
"status": "no_match",
"message": "No se encontraron coincidencias"
}
🎙️ Endpoint Transcripciones
Permite subir un archivo de audio y obtener la transcripción de su contenido en texto. Basado en modelos locales de IA, devuelve texto segmentado ordenado y legible.
POST /transcribir
Descripción: Recibe un archivo de audio y devuelve la transcripción en JSON.
Headers
Authorization: Bearer <tu_token>(obligatorio)- Content-Type: multipart/form-data
Body
audio: archivo de audio (mp3, wav, ogg, etc.)
Respuesta
{
"idioma": "es",
"transcripcion": "🔊 Transcripción detectada\n\n• Primera línea de texto...\n• Segunda línea de texto...\n• ..."
}
Si el token no es válido, la respuesta será:
{
"error": "Token inválido o expirado"
}
Ejemplo con curl
curl -H "Authorization: Bearer <tu_token>" -F "audio=@audio.mp3" https://acustic.com.uy/transcribir
🛠️ Casos de uso
- Detección de jingles en streams de radio en vivo.
- Monitoreo 24/7 de emisoras para contenido específico.
- Comparación automática contra una base de datos de jingles conocidos.
- Transcripción automática de audio para análisis o subtítulos.
▶️ Ejemplos de uso
# Ejemplo para transcribir un audio
import requests
headers = {
"Authorization": "Bearer <tu_token>"
}
# Ejemplo para generar un fingerprint
with open("jingle.mp3", "rb") as f:
response = requests.post("https://acustic.com.uy/fingerprint", headers=headers, files={"file": f})
print(response.json())
# Ejemplo para comparar un audio
# Asegúrate de tener al menos un fingerprint en tu cuenta
with open("audio_a_comparar.mp3", "rb") as f:
response = requests.post("https://acustic.com.uy/compare", headers=headers, files={"file": f})
print(response.json())
📞 Contacto
LinkToIT - Montevideo, Uruguay
hola@linktoit.uy