diff --git a/api/server/services/Files/Audio/STTService.js b/api/server/services/Files/Audio/STTService.js index 4ba62a7eeb..3a7a51bd8d 100644 --- a/api/server/services/Files/Audio/STTService.js +++ b/api/server/services/Files/Audio/STTService.js @@ -206,6 +206,10 @@ class STTService { data.language = validLanguage; } + if (sttSchema?.extraParams) { + Object.assign(data, sttSchema.extraParams); + } + const headers = { 'Content-Type': 'multipart/form-data', ...(apiKey && { Authorization: `Bearer ${apiKey}` }), @@ -338,7 +342,7 @@ class STTService { try { const [provider, sttSchema] = await this.getProviderSchema(req); - const language = req.body?.language || ''; + const language = req.body?.language || sttSchema?.language || ''; const text = await this.sttRequest(provider, sttSchema, { audioBuffer, audioFile, language }); res.json({ text }); } catch (error) { diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index 9bc3822c4b..fb89c7c486 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -478,6 +478,8 @@ const sttOpenaiSchema = z.object({ url: z.string().optional(), apiKey: z.string(), model: z.string(), + language: z.string().optional(), + extraParams: z.record(z.unknown()).optional(), }); const sttAzureOpenAISchema = z.object({