feat: add Google TTS module

This commit is contained in:
2026-01-13 17:48:42 -03:00
parent 40487d9634
commit 0e171894d5
2 changed files with 126 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
import { TTSModule, TTSResponse } from '../tts';
import * as https from 'https';
import GOOGLE_TTS_VOICES from './google_voices.json';
const GOOGLE_TTS_ENDPOINT = 'translate.google.com';
const USER_AGENT =
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3';
const ttsGoogle: TTSModule = {
name: 'Google',
getVoices: async (): Promise<string[]> => GOOGLE_TTS_VOICES.voices,
generate: async (voice: string, text: string): Promise<TTSResponse> => {
const query = new URLSearchParams({
ie: 'UTF-8',
q: text,
tl: voice,
client: 'tw-ob'
});
const options: https.RequestOptions = {
hostname: GOOGLE_TTS_ENDPOINT,
path: `/translate_tts?${query.toString()}`,
method: 'GET',
headers: {
'User-Agent': USER_AGENT
}
};
return new Promise((resolve) => {
const req = https.get(options, (res) => {
const chunks: Buffer[] = [];
res.on('data', (chunk) => chunks.push(chunk));
res.on('end', () => resolve({ data: Buffer.concat(chunks) }));
});
req.on('error', (err) => resolve({ error: err.message }));
req.on('timeout', () => {
req.destroy();
resolve({ error: 'timed out' });
});
});
}
};
export default ttsGoogle;