From eb738a1552aa4b00990c262783335ad1a4809304 Mon Sep 17 00:00:00 2001 From: Rafael Reis Date: Thu, 30 May 2024 08:54:55 -0300 Subject: [PATCH] Fix for Whisper Error: 'File is not defined' when using Speech to Text (#2526) * tested ok * update localai stt file * update toFile method for OpenAI Assistant uploads --------- Co-authored-by: Henry Heng Co-authored-by: Henry --- packages/components/src/speechToText.ts | 8 +++++--- .../src/services/openai-assistants-vector-store/index.ts | 3 ++- packages/server/src/services/openai-assistants/index.ts | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/components/src/speechToText.ts b/packages/components/src/speechToText.ts index 1b952913088..821f0221630 100644 --- a/packages/components/src/speechToText.ts +++ b/packages/components/src/speechToText.ts @@ -1,6 +1,6 @@ import { ICommonObject, IFileUpload } from './Interface' import { getCredentialData } from './utils' -import { type ClientOptions, OpenAIClient } from '@langchain/openai' +import { type ClientOptions, OpenAIClient, toFile } from '@langchain/openai' import { AssemblyAI } from 'assemblyai' import { getFileFromStorage } from './storageUtils' @@ -22,8 +22,9 @@ export const convertSpeechToText = async (upload: IFileUpload, speechToTextConfi apiKey: credentialData.openAIApiKey } const openAIClient = new OpenAIClient(openAIClientOptions) + const file = await toFile(audio_file, upload.name) const openAITranscription = await openAIClient.audio.transcriptions.create({ - file: new File([new Blob([audio_file])], upload.name), + file: file, model: 'whisper-1', language: speechToTextConfig?.language, temperature: speechToTextConfig?.temperature ? parseFloat(speechToTextConfig.temperature) : undefined, @@ -56,8 +57,9 @@ export const convertSpeechToText = async (upload: IFileUpload, speechToTextConfi baseURL: speechToTextConfig?.baseUrl } const localAIClient = new OpenAIClient(LocalAIClientOptions) + const file = await toFile(audio_file, upload.name) const localAITranscription = await localAIClient.audio.transcriptions.create({ - file: new File([new Blob([audio_file])], upload.name), + file: file, model: speechToTextConfig?.model || 'whisper-1', language: speechToTextConfig?.language, temperature: speechToTextConfig?.temperature ? parseFloat(speechToTextConfig.temperature) : undefined, diff --git a/packages/server/src/services/openai-assistants-vector-store/index.ts b/packages/server/src/services/openai-assistants-vector-store/index.ts index 9b268320280..46f9c183f8e 100644 --- a/packages/server/src/services/openai-assistants-vector-store/index.ts +++ b/packages/server/src/services/openai-assistants-vector-store/index.ts @@ -178,8 +178,9 @@ const uploadFilesToAssistantVectorStore = async ( const openai = new OpenAI({ apiKey: openAIApiKey }) const uploadedFiles = [] for (const file of files) { + const toFile = await OpenAI.toFile(fs.readFileSync(file.filePath), file.fileName) const createdFile = await openai.files.create({ - file: new File([new Blob([fs.readFileSync(file.filePath)])], file.fileName), + file: toFile, purpose: 'assistants' }) uploadedFiles.push(createdFile) diff --git a/packages/server/src/services/openai-assistants/index.ts b/packages/server/src/services/openai-assistants/index.ts index 736e65f899b..c908a546755 100644 --- a/packages/server/src/services/openai-assistants/index.ts +++ b/packages/server/src/services/openai-assistants/index.ts @@ -101,8 +101,9 @@ const uploadFilesToAssistant = async (credentialId: string, files: { filePath: s const uploadedFiles = [] for (const file of files) { + const toFile = await OpenAI.toFile(fs.readFileSync(file.filePath), file.fileName) const createdFile = await openai.files.create({ - file: new File([new Blob([fs.readFileSync(file.filePath)])], file.fileName), + file: toFile, purpose: 'assistants' }) uploadedFiles.push(createdFile)