ComEleE5Small / textToSpeech /textToSpeechAPI.js
plvictor's picture
Upload 5 files
af48578 verified
const express = require("express");
const router = express.Router();
const { synthesizeAudio, streamAudio } = require("../textToSpeech/textToSpeech");
// POST /api/tts
router.post("/tts", async (req, res) => {
const { text, speed = 1.0, lengthScale } = req.body;
if (!text || typeof text !== "string") {
return res.status(400).json({ error: "Texto inválido." });
}
try {
// Usar lengthScale se fornecido, senão usar speed para calcular
const finalLengthScale = lengthScale || (2.0 / speed);
console.log(`API TTS: texto="${text.substring(0, 30)}...", speed=${speed}, lengthScale=${finalLengthScale}`);
const audioBuffer = await synthesizeAudio(text, finalLengthScale);
res.set({
"Content-Type": "audio/wav",
"Content-Disposition": 'inline; filename="output.wav"',
});
res.send(audioBuffer);
} catch (err) {
console.error("Erro ao gerar áudio:", err);
res.status(500).json({ error: "Erro interno ao gerar áudio." });
}
});
router.post("/tts-stream", (req, res) => {
const { text, speed = 1.0, lengthScale } = req.body;
if (!text || typeof text !== "string") {
return res.status(400).json({ error: "Texto inválido." });
}
const finalLengthScale = lengthScale || (2.0 / speed);
streamAudio(text, finalLengthScale, res);
});
module.exports = (app) => {
app.use("/api", router);
};