fix: corregir FUNCTION_INVOCATION_FAILED y audio m4a de Instagram

- vercel.json: revertir maxDuration a 60s (300 rompe planes Hobby)
- transcriptor: detectar extensión real del audio (TikTok→mp3,
  Instagram→m4a) para enviar el MIME type correcto a Whisper;
  enviarlo como mp3 cuando es m4a causaba fallo de decodificación

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-01 10:23:01 -05:00
parent 21cf1c16a5
commit 4aecbef343
2 changed files with 6 additions and 3 deletions

View File

@ -38,7 +38,11 @@ export async function transcribir(audioUrl, idioma = 'es') {
// En Vercel Serverless (Node < 20), Web API `File` no está disponible por defecto,
// y `arrayBuffer` consume mucha RAM. `toFile` soluciona ambos.
const audioFile = toFile(audioResponse, 'audio.mp3', { type: 'audio/mpeg' })
// Detectar extensión real del audio (TikTok→mp3, Instagram→m4a, etc.)
const ext = audioUrl.split('?')[0].split('.').pop()?.toLowerCase() || 'mp3'
const mimeMap = { mp3: 'audio/mpeg', m4a: 'audio/mp4', mp4: 'audio/mp4', webm: 'audio/webm', ogg: 'audio/ogg', wav: 'audio/wav' }
const mimeType = mimeMap[ext] || 'audio/mpeg'
const audioFile = toFile(audioResponse, `audio.${ext}`, { type: mimeType })
const transcripcion = await openai.audio.transcriptions.create({
file: audioFile,

View File

@ -2,8 +2,7 @@
"buildCommand": "cd frontend && npm install && npm run build",
"outputDirectory": "frontend/dist",
"functions": {
"api/analizar.js": { "maxDuration": 300 },
"api/generar.js": { "maxDuration": 120 }
"api/**/*.js": { "maxDuration": 60 }
},
"rewrites": [
{ "source": "/api/(.*)", "destination": "/api/$1" },