UNPKG

@sefinek/google-tts-api

Version:

Fast Google TTS (Text-To-Speech) for Node.js. For free without any API keys!

43 lines (42 loc) 1.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAllAudioUrls = exports.getAudioUrl = void 0; const node_url_1 = __importDefault(require("node:url")); const assertInputTypes_1 = __importDefault(require("./assertInputTypes")); const splitLongText_1 = __importDefault(require("./splitLongText")); const getAudioUrl = (text, { lang = 'en', slow = false, host = 'https://translate.google.com' } = {}) => { (0, assertInputTypes_1.default)(text, lang, slow, host); if (text.length > 200) { throw new RangeError(`text length (${text.length}) should be less than 200 characters. Try "getAllAudioUrls(text, [option])" for long text.`); } return (host + '/translate_tts' + node_url_1.default.format({ query: { ie: 'UTF-8', q: text, tl: lang, total: 1, idx: 0, textlen: text.length, client: 'tw-ob', prev: 'input', ttsspeed: slow ? 0.24 : 1, }, })); }; exports.getAudioUrl = getAudioUrl; const getAllAudioUrls = (text, { lang = 'en', slow = false, host = 'https://translate.google.com', splitPunct = '', } = {}) => { (0, assertInputTypes_1.default)(text, lang, slow, host); if (typeof splitPunct !== 'string') { throw new TypeError('splitPunct should be a string'); } return (0, splitLongText_1.default)(text, { splitPunct }).map((shortText) => ({ shortText, url: (0, exports.getAudioUrl)(shortText, { lang, slow, host }), })); }; exports.getAllAudioUrls = getAllAudioUrls;