From d3764107b0c10675836c161dcd69688217ebc647 Mon Sep 17 00:00:00 2001 From: Emir Karabeg Date: Sun, 29 Jun 2025 20:56:46 -0700 Subject: [PATCH 1/2] fix: eleven labs deployment returning uploaded blob --- apps/sim/app/api/proxy/tts/route.ts | 21 +++++++++++++++------ apps/sim/tools/elevenlabs/tts.ts | 6 ++---- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/apps/sim/app/api/proxy/tts/route.ts b/apps/sim/app/api/proxy/tts/route.ts index cd199f79f16..f61b136c788 100644 --- a/apps/sim/app/api/proxy/tts/route.ts +++ b/apps/sim/app/api/proxy/tts/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from 'next/server' import { createLogger } from '@/lib/logs/console-logger' +import { uploadFile } from '@/lib/uploads/storage-client' const logger = createLogger('ProxyTTSAPI') @@ -44,12 +45,20 @@ export async function POST(request: Request) { return new NextResponse('Empty audio received', { status: 422 }) } - return new NextResponse(audioBlob, { - headers: { - 'Content-Type': 'audio/mpeg', - 'Cache-Control': 'public, max-age=86400', // Cache for a day - 'Access-Control-Allow-Origin': '*', // CORS support - }, + // Upload the audio file to storage and return multiple URL options + const audioBuffer = Buffer.from(await audioBlob.arrayBuffer()) + const timestamp = Date.now() + const fileName = `elevenlabs-tts-${timestamp}.mp3` + const fileInfo = await uploadFile(audioBuffer, fileName, 'audio/mpeg') + + // Generate the full URL for external use + const host = request.headers.get('host') || 'localhost:3000' + const protocol = request.headers.get('x-forwarded-proto') || 'http' + const audioUrl = `${protocol}://${host}${fileInfo.path}` + + return NextResponse.json({ + audioUrl, + size: fileInfo.size, }) } catch (error) { logger.error('Error proxying TTS:', error) diff --git a/apps/sim/tools/elevenlabs/tts.ts b/apps/sim/tools/elevenlabs/tts.ts index 99b8d3961fa..e4723a27534 100644 --- a/apps/sim/tools/elevenlabs/tts.ts +++ b/apps/sim/tools/elevenlabs/tts.ts @@ -55,14 +55,12 @@ export const elevenLabsTtsTool: ToolConfig Date: Sun, 29 Jun 2025 21:16:22 -0700 Subject: [PATCH 2/2] fix: added better URL pattern --- apps/sim/app/api/proxy/tts/route.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/sim/app/api/proxy/tts/route.ts b/apps/sim/app/api/proxy/tts/route.ts index f61b136c788..894caafdfc4 100644 --- a/apps/sim/app/api/proxy/tts/route.ts +++ b/apps/sim/app/api/proxy/tts/route.ts @@ -1,6 +1,7 @@ import { NextResponse } from 'next/server' import { createLogger } from '@/lib/logs/console-logger' import { uploadFile } from '@/lib/uploads/storage-client' +import { getBaseUrl } from '@/lib/urls/utils' const logger = createLogger('ProxyTTSAPI') @@ -51,10 +52,8 @@ export async function POST(request: Request) { const fileName = `elevenlabs-tts-${timestamp}.mp3` const fileInfo = await uploadFile(audioBuffer, fileName, 'audio/mpeg') - // Generate the full URL for external use - const host = request.headers.get('host') || 'localhost:3000' - const protocol = request.headers.get('x-forwarded-proto') || 'http' - const audioUrl = `${protocol}://${host}${fileInfo.path}` + // Generate the full URL for external use using the configured base URL + const audioUrl = `${getBaseUrl()}${fileInfo.path}` return NextResponse.json({ audioUrl,