|
import axios from "axios"; |
|
import fs from "fs"; |
|
import "dotenv/config"; |
|
|
|
async function textToSpeech(voiceId: string, text: string) { |
|
try { |
|
console.log("Début de la conversion texte vers voix..."); |
|
|
|
const url = `https://api.elevenlabs.io/v1/text-to-speech/${voiceId}`; |
|
const response = await axios.post( |
|
url, |
|
{ |
|
text: text, |
|
model_id: "eleven_multilingual_v2", |
|
voice_settings: { |
|
stability: 0.3, |
|
similarity_boost: 0.85, |
|
}, |
|
}, |
|
{ |
|
headers: { |
|
Accept: "audio/mpeg", |
|
"xi-api-key": process.env.ELEVENLABS_API_KEY, |
|
"Content-Type": "application/json", |
|
}, |
|
responseType: "arraybuffer", |
|
} |
|
); |
|
|
|
console.log("Audio généré avec succès"); |
|
|
|
|
|
fs.writeFileSync("output.mp3", response.data); |
|
console.log("Audio sauvegardé dans output.mp3"); |
|
} catch (error) { |
|
console.error("Erreur:", error.response?.data || error); |
|
} |
|
} |
|
|
|
|
|
const voiceId = "nGfHJWtJzDfxi8048hg3"; |
|
const textToConvert = ` |
|
<speak> |
|
<prosody rate="90%">Salut, je parle un peu plus lentement...</prosody> |
|
<prosody rate="110%">Et là je parle un peu plus vite!</prosody> |
|
<prosody rate="95%">Et maintenant je reviens à une vitesse presque normale.</prosody> |
|
</speak>`; |
|
|
|
textToSpeech(voiceId, textToConvert); |
|
|