| | import fs from 'fs'; |
| | import { logger } from '@librechat/data-schemas'; |
| | import type { |
| | AudioProcessingResult, |
| | ServerRequest, |
| | AudioFileInfo, |
| | STTService, |
| | FileObject, |
| | } from '~/types'; |
| |
|
| | |
| | |
| | |
| | |
| | export async function processAudioFile({ |
| | req, |
| | file, |
| | sttService, |
| | }: { |
| | req: ServerRequest; |
| | file: FileObject; |
| | sttService: STTService; |
| | }): Promise<AudioProcessingResult> { |
| | try { |
| | const audioBuffer = await fs.promises.readFile(file.path); |
| | const audioFile: AudioFileInfo = { |
| | originalname: file.originalname, |
| | mimetype: file.mimetype, |
| | size: file.size, |
| | }; |
| |
|
| | const [provider, sttSchema] = await sttService.getProviderSchema(req); |
| | const text = await sttService.sttRequest(provider, sttSchema, { audioBuffer, audioFile }); |
| |
|
| | return { |
| | text, |
| | bytes: Buffer.byteLength(text, 'utf8'), |
| | }; |
| | } catch (error) { |
| | logger.error('Error processing audio file with STT:', error); |
| | throw new Error(`Failed to process audio file: ${(error as Error).message}`); |
| | } |
| | } |
| |
|