mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
TTS: Add Google Translate TTS
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import { Buffer } from 'node:buffer';
|
||||
import fetch from 'node-fetch';
|
||||
import express from 'express';
|
||||
import { speak, languages } from 'google-translate-api-x';
|
||||
|
||||
import { readSecret, SECRET_KEYS } from './secrets.js';
|
||||
import { jsonParser } from '../express-common.js';
|
||||
import { jsonParser } from '../express-common.js';
|
||||
import { GEMINI_SAFETY } from '../constants.js';
|
||||
|
||||
const API_MAKERSUITE = 'https://generativelanguage.googleapis.com';
|
||||
@@ -68,3 +70,25 @@ router.post('/caption-image', jsonParser, async (request, response) => {
|
||||
response.status(500).send('Internal server error');
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/list-voices', (_, response) => {
|
||||
return response.json(languages);
|
||||
});
|
||||
|
||||
router.post('/generate-voice', jsonParser, async (request, response) => {
|
||||
try {
|
||||
const text = request.body.text;
|
||||
const voice = request.body.voice ?? 'en';
|
||||
|
||||
const result = await speak(text, { to: voice, forceBatch: false });
|
||||
const buffer = Array.isArray(result)
|
||||
? Buffer.concat(result.map(x => new Uint8Array(Buffer.from(x.toString(), 'base64'))))
|
||||
: Buffer.from(result.toString(), 'base64');
|
||||
|
||||
response.setHeader('Content-Type', 'audio/mpeg');
|
||||
return response.send(buffer);
|
||||
} catch (error) {
|
||||
console.error('Google Translate TTS generation failed', error);
|
||||
response.status(500).send('Internal server error');
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user