|
import { NextResponse } from "next/server"; |
|
import prisma from "@/lib/prisma"; |
|
import { ElevenLabsClient } from "@/utils/elevenlabs"; |
|
|
|
export async function POST(request: Request) { |
|
try { |
|
const data = await request.formData(); |
|
const audioFile = data.get("audio") as File; |
|
const name = data.get("name") as string; |
|
|
|
if (!audioFile || !name) { |
|
return NextResponse.json( |
|
{ error: "Le fichier audio et le nom sont requis" }, |
|
{ status: 400 } |
|
); |
|
} |
|
|
|
|
|
if (!process.env.ELEVENLABS_API_KEY) { |
|
console.error("Clé API ElevenLabs manquante"); |
|
|
|
const user = await prisma.user.create({ |
|
data: { |
|
name, |
|
}, |
|
}); |
|
|
|
return NextResponse.json({ |
|
id: user.id, |
|
name: user.name, |
|
}); |
|
} |
|
|
|
|
|
const user = await prisma.user.create({ |
|
data: { |
|
name, |
|
}, |
|
}); |
|
|
|
try { |
|
|
|
const elevenlabs = new ElevenLabsClient(process.env.ELEVENLABS_API_KEY); |
|
|
|
|
|
const voiceId = await elevenlabs.addVoice(name, audioFile); |
|
console.log("Voice ID reçu:", voiceId); |
|
|
|
|
|
const updatedUser = await prisma.user.update({ |
|
where: { id: user.id }, |
|
data: { |
|
voiceId, |
|
}, |
|
}); |
|
|
|
return NextResponse.json({ |
|
id: updatedUser.id, |
|
name: updatedUser.name, |
|
voiceId: updatedUser.voiceId, |
|
}); |
|
} catch (error) { |
|
console.error("Erreur ElevenLabs:", error); |
|
|
|
return NextResponse.json({ |
|
id: user.id, |
|
name: user.name, |
|
}); |
|
} |
|
} catch (error) { |
|
console.error("Erreur lors du traitement de la voix:", error); |
|
return NextResponse.json( |
|
{ error: "Impossible de traiter la voix" }, |
|
{ status: 500 } |
|
); |
|
} |
|
} |
|
|