
Transcribir Audio con n8n + OpenRouter
El flujo tiene 3 nodos: descarga el audio → lo convierte a base64 → lo manda a un LLM multimodal vía OpenRouter para transcribirlo.
¿Por qué no Whisper directo? El endpoint
/audio/transcriptionsde OpenRouter conogg/opus(formato de WhatsApp/Chatwoot) da error 500. La solución es usar un modelo multimodal como Gemini 2.5 Pro viachat/completionsque sí acepta audio en base64.
Nodo 1 — Descargar Audio
- Tipo: HTTP Request
- Method: GET
- URL:
={{ $('Webhook').item.json.body.messages[0].attachments[0].data_url }}
Ajusta esta expresión según de dónde venga tu URL de audio. El resultado debe ser un binario (
data).
- Response Format: deja el default (n8n lo detecta automáticamente como binario)
Nodo 2 — Convertir Audio a Base64
- Tipo: Code
- Mode: Run Once for All Items
const buffer = await this.helpers.getBinaryDataBuffer(0, 'data');
const base64Audio = buffer.toString('base64');
return [{
json: {
audio_base64: base64Audio,
format: 'mp3'
}
}];
⚠️ El argumento
0es el índice del item (no el objeto item). Esto es requerido en n8n v2.x conbinaryDataMode: database. Elformatpuedes dejarlo enmp3aunque el archivo sea.ogg— Gemini lo interpreta igual.
Nodo 3 — Transcribir con OpenRouter
- Tipo: HTTP Request
- Method: POST
- URL:
https://openrouter.ai/api/v1/chat/completions
Headers:
| Name | Value |
|---|---|
Authorization | Bearer TU_API_KEY_OPENROUTER |
Body Content Type: JSON
Body:
{
"model": "google/gemini-2.5-pro",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Transcribe este audio sin agregar nada más."
},
{
"type": "input_audio",
"input_audio": {
"data": "={{ $json.audio_base64 }}",
"format": "={{ $json.format }}"
}
}
]
}
]
}
Puedes cambiar
google/gemini-2.5-propor cualquier modelo multimodal de OpenRouter que soporte audio, comogoogle/gemini-2.0-flash.
Resultado
El texto transcrito llega en:
{{ $json.choices[0].message.content }}
Conexiones
Descargar audio → Audio en base64 → Open Router: Transcribir audio
Puedes hacer clic aquí para descargar la plantilla.

Respuestas