| 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 } |
| ); |
| } |
| } |
|
|