diff --git a/api/server/services/Files/Audio/STTService.js b/api/server/services/Files/Audio/STTService.js index e2af0217c3..bf2b00c9d0 100644 --- a/api/server/services/Files/Audio/STTService.js +++ b/api/server/services/Files/Audio/STTService.js @@ -1,5 +1,6 @@ -const { Readable } = require('stream'); const axios = require('axios'); +const FormData = require('form-data'); +const { Readable } = require('stream'); const { extractEnvVariable, STTProviders } = require('librechat-data-provider'); const getCustomConfig = require('~/server/services/Config/getCustomConfig'); const { genAzureEndpoint } = require('~/utils'); @@ -136,8 +137,10 @@ class STTService { } const formData = new FormData(); - const audioBlob = new Blob([audioBuffer], { type: audioFile.mimetype }); - formData.append('file', audioBlob, audioFile.originalname); + formData.append('file', audioBuffer, { + filename: audioFile.originalname, + contentType: audioFile.mimetype, + }); const headers = { 'Content-Type': 'multipart/form-data', @@ -146,7 +149,7 @@ class STTService { [headers].forEach(this.removeUndefined); - return [url, formData, headers]; + return [url, formData, { ...headers, ...formData.getHeaders() }]; } /** @@ -171,11 +174,6 @@ class STTService { const [url, data, headers] = strategy.call(this, sttSchema, audioReadStream, audioFile); - if (!Readable.from && data instanceof FormData) { - const audioBlob = new Blob([audioBuffer], { type: audioFile.mimetype }); - data.set('file', audioBlob, audioFile.originalname); - } - try { const response = await axios.post(url, data, { headers });