Diarization / services /geminiService.ts
stephane09's picture
Upload 17 files
1e2f309 verified
import { DiarizationEntry } from '../types';
/**
* Cette fonction envoie le fichier audio et la clé API de l'utilisateur au backend.
* @param file Le fichier MP3 à analyser.
* @param apiKey La clé API Gemini fournie par l'utilisateur.
* @returns Une promesse qui se résout avec le résultat de la diarisation.
*/
export async function processAudioFile(file: File, apiKey: string): Promise<DiarizationEntry[]> {
const formData = new FormData();
formData.append('file', file);
try {
const response = await fetch('/api/diarize', {
method: 'POST',
headers: {
// Transmet la clé API de manière sécurisée dans un en-tête
'X-API-KEY': apiKey,
},
body: formData,
});
if (!response.ok) {
const errorData = await response.json();
throw new Error(`Erreur du serveur (${response.status}): ${errorData.detail || 'Erreur inconnue'}`);
}
const result = await response.json();
return result as DiarizationEntry[];
} catch (error) {
console.error("Erreur lors de l'appel au backend pour la diarisation:", error);
if (error instanceof Error) {
throw new Error(`Échec du traitement du fichier : ${error.message}`);
}
throw new Error("Une erreur inconnue est survenue lors du traitement du fichier.");
}
}