diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8ce12dd --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{js,json,yml}] +indent_style = space +indent_size = 2 +max_line_length = 79 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ae7945 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/generators +/node_modules +*.tgz diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..0b64e25 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Rauli Laine + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..54cfffb --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# oddcast-tts-demo + +Helper functions for generating MP3 URLs from text using oddcast.com's +text-to-speech demo. + +## Usage + +```JavaScript +const { buildUrl, voices } = require('oddcast-tts-demo'); + +buildUrl('Hello, World.', voices.daniel); + +// Produces: +// https://cache-a.oddcast.com/c_fs/3053a357f5d3a85a17182971a84007c9.mp3?engine=4&language=1&voice=5&text=Hello%2C%20World.&useUTF8=1 +``` diff --git a/lib/build-hash.js b/lib/build-hash.js new file mode 100644 index 0000000..0402702 --- /dev/null +++ b/lib/build-hash.js @@ -0,0 +1,14 @@ +const md5 = require('md5'); + +module.exports = (text, voice) => { + const { id, language, engine } = voice; + const fragments = [ + `${engine}`, + `${id}`, + `${language.id}`, + 'mp3', + text + ]; + + return md5(fragments.join('')); +}; diff --git a/lib/build-url.js b/lib/build-url.js new file mode 100644 index 0000000..40dec8f --- /dev/null +++ b/lib/build-url.js @@ -0,0 +1,17 @@ +const buildUrl = require('build-url'); + +const buildHash = require('./build-hash'); + +module.exports = (text, voice, hash = null) => buildUrl( + 'https://cache-a.oddcast.com', + { + path: `c_fs/${hash || buildHash(text, voice)}.mp3`, + queryParams: { + engine: voice.engine, + language: voice.language.id, + voice: voice.id, + text, + useUTF8: 1 + } + } +); diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..729bcfd --- /dev/null +++ b/lib/index.js @@ -0,0 +1,4 @@ +module.exports.languages = require('./languages'); +module.exports.voices = require('./voices'); +module.exports.buildHash = require('./build-hash'); +module.exports.buildUrl = require('./build-url'); diff --git a/lib/languages.js b/lib/languages.js new file mode 100644 index 0000000..76c324f --- /dev/null +++ b/lib/languages.js @@ -0,0 +1,147 @@ +module.exports = { + ar: { + name: 'Arabic', + id: 27, + code: 'ar' + }, + eu: { + name: 'Basque', + id: 22, + code: 'eu' + }, + ca: { + name: 'Catalan', + id: 5, + code: 'ca' + }, + zh: { + name: 'Chinese', + id: 10, + code: 'zh' + }, + cs: { + name: 'Czech', + id: 18, + code: 'cs' + }, + da: { + name: 'Danish', + id: 19, + code: 'da' + }, + nl: { + name: 'Dutch', + id: 11, + code: 'nl' + }, + en: { + name: 'English', + id: 1, + code: 'en' + }, + eo: { + name: 'Esperanto', + id: 31, + code: 'eo' + }, + fi: { + name: 'Finnish', + id: 23, + code: 'fi' + }, + fr: { + name: 'French', + id: 4, + code: 'fr' + }, + gl: { + name: 'Galician', + id: 15, + code: 'gl' + }, + de: { + name: 'German', + id: 3, + code: 'de' + }, + el: { + name: 'Greek', + id: 8, + code: 'el' + }, + hi: { + name: 'Hindi', + id: 24, + code: 'hi' + }, + hu: { + name: 'Hungarian', + id: 29, + code: 'hu' + }, + id: { + name: 'Indonesian', + id: 28, + code: 'id' + }, + it: { + name: 'Italian', + id: 7, + code: 'it' + }, + ja: { + name: 'Japanese', + id: 12, + code: 'ja' + }, + ko: { + name: 'Korean', + id: 13, + code: 'ko' + }, + no: { + name: 'Norwegian', + id: 20, + code: 'no' + }, + pl: { + name: 'Polish', + id: 14, + code: 'pl' + }, + pt: { + name: 'Portuguese', + id: 6, + code: 'pt' + }, + ro: { + name: 'Romanian', + id: 30, + code: 'ro' + }, + ru: { + name: 'Russian', + id: 21, + code: 'ru' + }, + es: { + name: 'Spanish', + id: 2, + code: 'es' + }, + sv: { + name: 'Swedish', + id: 9, + code: 'sv' + }, + th: { + name: 'Thai', + id: 26, + code: 'th' + }, + tr: { + name: 'Turkish', + id: 16, + code: 'tr' + } +}; diff --git a/lib/voices.js b/lib/voices.js new file mode 100644 index 0000000..958e257 --- /dev/null +++ b/lib/voices.js @@ -0,0 +1,1418 @@ +const languages = require('./languages'); + +module.exports.alan = { + name: 'Alan', + dialect: 'Australian', + id: 9, + engine: 2, + language: languages.en, + gender: 'M' +}; + +module.exports.allison = { + name: 'Allison', + dialect: 'US', + id: 7, + engine: 2, + language: languages.en, + gender: 'F' +}; + +module.exports.ashley = { + name: 'Ashley', + dialect: 'US', + id: 6, + engine: 3, + language: languages.en, + gender: 'F' +}; + +module.exports.beth = { + name: 'Beth', + dialect: 'US', + id: 8, + engine: 3, + language: languages.en, + gender: 'F' +}; + +module.exports.bridget = { + name: 'Bridget', + dialect: 'UK', + id: 4, + engine: 3, + language: languages.en, + gender: 'F' +}; + +module.exports.catherine = { + name: 'Catherine', + dialect: 'UK', + id: 6, + engine: 2, + language: languages.en, + gender: 'F' +}; + +module.exports.daniel = { + name: 'Daniel', + dialect: 'UK', + id: 5, + engine: 4, + language: languages.en, + gender: 'M' +}; + +module.exports.dave = { + name: 'Dave', + dialect: 'US', + id: 2, + engine: 2, + language: languages.en, + gender: 'M' +}; + +module.exports.elizabeth = { + name: 'Elizabeth', + dialect: 'UK', + id: 4, + engine: 2, + language: languages.en, + gender: 'F' +}; + +module.exports.fiona = { + name: 'Fiona', + dialect: 'Scottish', + id: 12, + engine: 4, + language: languages.en, + gender: 'F' +}; + +module.exports.grace = { + name: 'Grace', + dialect: 'Australian', + id: 10, + engine: 2, + language: languages.en, + gender: 'F' +}; + +module.exports.hugh = { + name: 'Hugh', + dialect: 'UK', + id: 5, + engine: 3, + language: languages.en, + gender: 'M' +}; + +module.exports.james = { + name: 'James', + dialect: 'US', + id: 7, + engine: 3, + language: languages.en, + gender: 'M' +}; + +module.exports.jill = { + name: 'Jill', + dialect: 'US', + id: 2, + engine: 4, + language: languages.en, + gender: 'F' +}; + +module.exports.julie = { + name: 'Julie', + dialect: 'US', + id: 3, + engine: 3, + language: languages.en, + gender: 'F' +}; + +module.exports.karen = { + name: 'Karen', + dialect: 'Australian', + id: 4, + engine: 4, + language: languages.en, + gender: 'F' +}; + +module.exports.kate = { + name: 'Kate', + dialect: 'US', + id: 1, + engine: 3, + language: languages.en, + gender: 'F' +}; + +module.exports.lee = { + name: 'Lee', + dialect: 'Australian', + id: 10, + engine: 4, + language: languages.en, + gender: 'M' +}; + +module.exports.moira = { + name: 'Moira', + dialect: 'Irish', + id: 8, + engine: 4, + language: languages.en, + gender: 'F' +}; + +module.exports.paul = { + name: 'Paul', + dialect: 'US', + id: 2, + engine: 3, + language: languages.en, + gender: 'M' +}; + +module.exports.samantha = { + name: 'Samantha', + dialect: 'US', + id: 11, + engine: 4, + language: languages.en, + gender: 'F' +}; + +module.exports.sangeeta = { + name: 'Sangeeta', + dialect: 'Indian', + id: 9, + engine: 4, + language: languages.en, + gender: 'F' +}; + +module.exports.serena = { + name: 'Serena', + dialect: 'UK', + id: 7, + engine: 4, + language: languages.en, + gender: 'F' +}; + +module.exports.simon = { + name: 'Simon', + dialect: 'UK', + id: 5, + engine: 2, + language: languages.en, + gender: 'M' +}; + +module.exports.steven = { + name: 'Steven', + dialect: 'US', + id: 8, + engine: 2, + language: languages.en, + gender: 'M' +}; + +module.exports.susan = { + name: 'Susan', + dialect: 'US', + id: 1, + engine: 2, + language: languages.en, + gender: 'F' +}; + +module.exports.tessa = { + name: 'Tessa', + dialect: 'South African', + id: 13, + engine: 4, + language: languages.en, + gender: 'F' +}; + +module.exports.tom = { + name: 'Tom', + dialect: 'US', + id: 3, + engine: 4, + language: languages.en, + gender: 'M' +}; + +module.exports.veena = { + name: 'Veena', + dialect: 'Indian', + id: 11, + engine: 2, + language: languages.en, + gender: 'F' +}; + +module.exports.carlos = { + name: 'Carlos', + dialect: 'American', + id: 7, + engine: 2, + language: languages.es, + gender: 'M' +}; + +module.exports.carmen = { + name: 'Carmen', + dialect: 'Castilian', + id: 1, + engine: 2, + language: languages.es, + gender: 'F' +}; + +module.exports.diego = { + name: 'Diego', + dialect: 'Argentine', + id: 4, + engine: 2, + language: languages.es, + gender: 'M' +}; + +module.exports.duardo = { + name: 'Duardo', + id: 1, + engine: 4, + language: languages.es, + gender: 'M' +}; + +module.exports.esperanza = { + name: 'Esperanza', + dialect: 'Mexican', + id: 5, + engine: 2, + language: languages.es, + gender: 'F' +}; + +module.exports.francisca = { + name: 'Francisca', + dialect: 'Chilean', + id: 3, + engine: 2, + language: languages.es, + gender: 'F' +}; + +module.exports.francisco = { + name: 'Francisco', + dialect: 'Mexican', + id: 2, + engine: 3, + language: languages.es, + gender: 'M' +}; + +module.exports.gloria = { + name: 'Gloria', + dialect: 'Mexican', + id: 3, + engine: 3, + language: languages.es, + gender: 'F' +}; + +module.exports.javier = { + name: 'Javier', + dialect: 'Mexican', + id: 5, + engine: 4, + language: languages.es, + gender: 'M' +}; + +module.exports.jorge = { + name: 'Jorge', + dialect: 'Castilian', + id: 6, + engine: 2, + language: languages.es, + gender: 'M' +}; + +module.exports.juan = { + name: 'Juan', + dialect: 'Castilian', + id: 2, + engine: 2, + language: languages.es, + gender: 'M' +}; + +module.exports.leonor = { + name: 'Leonor', + dialect: 'Castilian', + id: 9, + engine: 2, + language: languages.es, + gender: 'F' +}; + +module.exports.lola = { + name: 'Lola', + dialect: 'Castilian', + id: 4, + engine: 3, + language: languages.es, + gender: 'F' +}; + +module.exports.manuel = { + name: 'Manuel', + dialect: 'Castilian', + id: 5, + engine: 3, + language: languages.es, + gender: 'M' +}; + +module.exports.monica = { + name: 'Monica', + id: 3, + engine: 4, + language: languages.es, + gender: 'F' +}; + +module.exports.paulina = { + name: 'Paulina', + dialect: 'Mexican', + id: 4, + engine: 4, + language: languages.es, + gender: 'F' +}; + +module.exports.soledad = { + name: 'Soledad', + dialect: 'American', + id: 8, + engine: 2, + language: languages.es, + gender: 'F' +}; + +module.exports.violeta = { + name: 'Violeta', + id: 1, + engine: 3, + language: languages.es, + gender: 'F' +}; + +module.exports.ximena = { + name: 'Ximena', + id: 10, + engine: 2, + language: languages.es, + gender: 'F' +}; + +module.exports.anna = { + name: 'Anna', + id: 3, + engine: 4, + language: languages.de, + gender: 'F' +}; + +module.exports.katrin = { + name: 'Katrin', + id: 3, + engine: 2, + language: languages.de, + gender: 'F' +}; + +module.exports.lena = { + name: 'Lena', + id: 1, + engine: 3, + language: languages.de, + gender: 'F' +}; + +module.exports.stefan = { + name: 'Stefan', + id: 2, + engine: 2, + language: languages.de, + gender: 'M' +}; + +module.exports.steffi = { + name: 'Steffi', + id: 1, + engine: 4, + language: languages.de, + gender: 'F' +}; + +module.exports.tim = { + name: 'Tim', + id: 2, + engine: 3, + language: languages.de, + gender: 'M' +}; + +module.exports.yannick = { + name: 'Yannick', + id: 2, + engine: 4, + language: languages.de, + gender: 'M' +}; + +module.exports.bernard = { + name: 'Bernard', + id: 2, + engine: 2, + language: languages.fr, + gender: 'M' +}; + +module.exports.charlotte = { + name: 'Charlotte', + id: 5, + engine: 2, + language: languages.fr, + gender: 'F' +}; + +module.exports.chloe = { + name: 'Chloe', + dialect: 'Canadian', + id: 1, + engine: 3, + language: languages.fr, + gender: 'F' +}; + +module.exports.felix = { + name: 'Felix', + dialect: 'Canadian', + id: 1, + engine: 4, + language: languages.fr, + gender: 'M' +}; + +module.exports.florence = { + name: 'Florence', + id: 4, + engine: 2, + language: languages.fr, + gender: 'F' +}; + +module.exports.jolie = { + name: 'Jolie', + id: 3, + engine: 2, + language: languages.fr, + gender: 'F' +}; + +module.exports.julie = { + name: 'Julie', + dialect: 'Canadian', + id: 2, + engine: 4, + language: languages.fr, + gender: 'F' +}; + +module.exports.leo = { + name: 'Leo', + dialect: 'Canadian', + id: 2, + engine: 3, + language: languages.fr, + gender: 'M' +}; + +module.exports.louis = { + name: 'Louis', + dialect: 'European', + id: 4, + engine: 3, + language: languages.fr, + gender: 'M' +}; + +module.exports.olivier = { + name: 'Olivier', + id: 6, + engine: 2, + language: languages.fr, + gender: 'M' +}; + +module.exports.roxane = { + name: 'Roxane', + dialect: 'European', + id: 3, + engine: 3, + language: languages.fr, + gender: 'F' +}; + +module.exports.sebastien = { + name: 'Sebastien', + id: 3, + engine: 4, + language: languages.fr, + gender: 'M' +}; + +module.exports.thomas = { + name: 'Thomas', + id: 5, + engine: 4, + language: languages.fr, + gender: 'M' +}; + +module.exports.virginie = { + name: 'Virginie', + id: 4, + engine: 4, + language: languages.fr, + gender: 'F' +}; + +module.exports.empar = { + name: 'Empar', + dialect: 'Valencian', + id: 3, + engine: 2, + language: languages.ca, + gender: 'F' +}; + +module.exports.jordi = { + name: 'Jordi', + id: 2, + engine: 2, + language: languages.ca, + gender: 'M' +}; + +module.exports.montserrat = { + name: 'Montserrat', + id: 1, + engine: 2, + language: languages.ca, + gender: 'F' +}; + +module.exports.nuria = { + name: 'Nuria', + id: 1, + engine: 4, + language: languages.ca, + gender: 'F' +}; + +module.exports.amalia = { + name: 'Amalia', + dialect: 'European', + id: 2, + engine: 2, + language: languages.pt, + gender: 'F' +}; + +module.exports.eusebio = { + name: 'Eusebio', + dialect: 'European', + id: 3, + engine: 2, + language: languages.pt, + gender: 'M' +}; + +module.exports.helena = { + name: 'Helena', + dialect: 'Brazilian', + id: 1, + engine: 3, + language: languages.pt, + gender: 'F' +}; + +module.exports.joana = { + name: 'Joana', + dialect: 'European', + id: 3, + engine: 4, + language: languages.pt, + gender: 'F' +}; + +module.exports.rafael = { + name: 'Rafael', + dialect: 'Brazilian', + id: 2, + engine: 3, + language: languages.pt, + gender: 'M' +}; + +module.exports.raquel = { + name: 'Raquel', + dialect: 'Brazilian', + id: 2, + engine: 4, + language: languages.pt, + gender: 'F' +}; + +module.exports.elisa = { + name: 'Elisa', + id: 1, + engine: 3, + language: languages.it, + gender: 'F' +}; + +module.exports.federica = { + name: 'Federica', + id: 10, + engine: 2, + language: languages.it, + gender: 'F' +}; + +module.exports.giulia = { + name: 'Giulia', + id: 9, + engine: 2, + language: languages.it, + gender: 'F' +}; + +module.exports.luca = { + name: 'Luca', + id: 5, + engine: 2, + language: languages.it, + gender: 'M' +}; + +module.exports.marcello = { + name: 'Marcello', + id: 6, + engine: 2, + language: languages.it, + gender: 'M' +}; + +module.exports.matteo = { + name: 'Matteo', + id: 8, + engine: 2, + language: languages.it, + gender: 'M' +}; + +module.exports.paola = { + name: 'Paola', + id: 1, + engine: 2, + language: languages.it, + gender: 'F' +}; + +module.exports.paolo = { + name: 'Paolo', + id: 1, + engine: 4, + language: languages.it, + gender: 'M' +}; + +module.exports.roberto = { + name: 'Roberto', + id: 2, + engine: 3, + language: languages.it, + gender: 'M' +}; + +module.exports.roberto = { + name: 'Roberto', + id: 7, + engine: 2, + language: languages.it, + gender: 'M' +}; + +module.exports.silvana = { + name: 'Silvana', + id: 2, + engine: 2, + language: languages.it, + gender: 'F' +}; + +module.exports.silvia = { + name: 'Silvia', + id: 2, + engine: 4, + language: languages.it, + gender: 'F' +}; + +module.exports.valentina = { + name: 'Valentina', + id: 3, + engine: 2, + language: languages.it, + gender: 'F' +}; + +module.exports.afroditi = { + name: 'Afroditi', + id: 1, + engine: 2, + language: languages.el, + gender: 'F' +}; + +module.exports.alexandros = { + name: 'Alexandros', + id: 1, + engine: 4, + language: languages.el, + gender: 'M' +}; + +module.exports.nikos = { + name: 'Nikos', + id: 3, + engine: 2, + language: languages.el, + gender: 'M' +}; + +module.exports.alva = { + name: 'Alva', + id: 1, + engine: 4, + language: languages.sv, + gender: 'F' +}; + +module.exports.annika = { + name: 'Annika', + id: 1, + engine: 2, + language: languages.sv, + gender: 'F' +}; + +module.exports.oskar = { + name: 'Oskar', + id: 3, + engine: 4, + language: languages.sv, + gender: 'M' +}; + +module.exports.sven = { + name: 'Sven', + id: 2, + engine: 2, + language: languages.sv, + gender: 'M' +}; + +module.exports.hui = { + name: 'Hui', + dialect: 'Mandarin', + id: 3, + engine: 3, + language: languages.zh, + gender: 'F' +}; + +module.exports.kaho = { + name: 'Kaho', + dialect: 'Cantonese', + id: 6, + engine: 3, + language: languages.zh, + gender: 'M' +}; + +module.exports.kayan = { + name: 'Kayan', + dialect: 'Cantonese', + id: 7, + engine: 3, + language: languages.zh, + gender: 'F' +}; + +module.exports.kiang = { + name: 'Kiang', + dialect: 'Mandarin', + id: 5, + engine: 3, + language: languages.zh, + gender: 'M' +}; + +module.exports.liang = { + name: 'Liang', + dialect: 'Mandarin', + id: 4, + engine: 3, + language: languages.zh, + gender: 'M' +}; + +module.exports.linlin = { + name: 'Linlin', + dialect: 'Mandarin', + id: 1, + engine: 2, + language: languages.zh, + gender: 'F' +}; + +module.exports.lisheng = { + name: 'Lisheng', + dialect: 'Mandarin', + id: 2, + engine: 2, + language: languages.zh, + gender: 'F' +}; + +module.exports.sinji = { + name: 'Sin-Ji', + dialect: 'Cantonese', + id: 1, + engine: 4, + language: languages.zh, + gender: 'F' +}; + +module.exports.tingting = { + name: 'Ting-Ting', + dialect: 'Mandrine', + id: 4, + engine: 4, + language: languages.zh, + gender: 'F' +}; + +module.exports.yaling = { + name: 'Ya-Ling', + dialect: 'Taiwanese', + id: 2, + engine: 4, + language: languages.zh, + gender: 'F' +}; + +module.exports.yafang = { + name: 'Yafang', + dialect: 'Taiwanese', + id: 8, + engine: 3, + language: languages.zh, + gender: 'F' +}; + +module.exports.claire = { + name: 'Claire', + dialect: 'Netherland', + id: 2, + engine: 4, + language: languages.nl, + gender: 'F' +}; + +module.exports.ellen = { + name: 'Ellen', + dialect: 'Belgian', + id: 1, + engine: 4, + language: languages.nl, + gender: 'F' +}; + +module.exports.laura = { + name: 'Laura', + dialect: 'Netherland', + id: 3, + engine: 4, + language: languages.nl, + gender: 'F' +}; + +module.exports.saskia = { + name: 'Saskia', + id: 2, + engine: 2, + language: languages.nl, + gender: 'F' +}; + +module.exports.willem = { + name: 'Willem', + id: 1, + engine: 2, + language: languages.nl, + gender: 'M' +}; + +module.exports.xander = { + name: 'Xander', + dialect: 'Netherland', + id: 4, + engine: 4, + language: languages.nl, + gender: 'M' +}; + +module.exports.haruka = { + name: 'Haruka', + id: 6, + engine: 3, + language: languages.ja, + gender: 'F' +}; + +module.exports.hikari = { + name: 'Hikari', + id: 5, + engine: 3, + language: languages.ja, + gender: 'M' +}; + +module.exports.kyoko = { + name: 'Kyoko', + id: 1, + engine: 4, + language: languages.ja, + gender: 'F' +}; + +module.exports.misaki = { + name: 'Misaki', + id: 3, + engine: 3, + language: languages.ja, + gender: 'F' +}; + +module.exports.ryo = { + name: 'Ryo', + id: 7, + engine: 3, + language: languages.ja, + gender: 'F' +}; + +module.exports.sayaka = { + name: 'Sayaka', + id: 4, + engine: 3, + language: languages.ja, + gender: 'F' +}; + +module.exports.show = { + name: 'Show', + id: 2, + engine: 3, + language: languages.ja, + gender: 'M' +}; + +module.exports.takeru = { + name: 'Takeru', + id: 8, + engine: 3, + language: languages.ja, + gender: 'M' +}; + +module.exports.dayoung = { + name: 'Dayoung', + id: 7, + engine: 3, + language: languages.ko, + gender: 'M' +}; + +module.exports.hyeryun = { + name: 'Hyeryun', + id: 4, + engine: 3, + language: languages.ko, + gender: 'M' +}; + +module.exports.hyuna = { + name: 'Hyuna', + id: 8, + engine: 3, + language: languages.ko, + gender: 'M' +}; + +module.exports.jihun = { + name: 'Jihun', + id: 10, + engine: 3, + language: languages.ko, + gender: 'M' +}; + +module.exports.jimin = { + name: 'Jimin', + id: 5, + engine: 3, + language: languages.ko, + gender: 'M' +}; + +module.exports.junwoo = { + name: 'Junwoo', + id: 2, + engine: 3, + language: languages.ko, + gender: 'M' +}; + +module.exports.narae = { + name: 'Narae', + id: 1, + engine: 4, + language: languages.ko, + gender: 'F' +}; + +module.exports.sena = { + name: 'Sena', + id: 6, + engine: 3, + language: languages.ko, + gender: 'M' +}; + +module.exports.yumi = { + name: 'Yumi', + id: 1, + engine: 3, + language: languages.ko, + gender: 'F' +}; + +module.exports.yura = { + name: 'Yura', + id: 9, + engine: 3, + language: languages.ko, + gender: 'M' +}; + +module.exports.agata = { + name: 'Agata', + id: 1, + engine: 4, + language: languages.pl, + gender: 'F' +}; + +module.exports.krzysztof = { + name: 'Krzysztof', + id: 2, + engine: 2, + language: languages.pl, + gender: 'M' +}; + +module.exports.zosia = { + name: 'Zosia', + id: 1, + engine: 2, + language: languages.pl, + gender: 'F' +}; + +module.exports.carmela = { + name: 'Carmela', + id: 1, + engine: 2, + language: languages.gl, + gender: 'F' +}; + +module.exports.aylin = { + name: 'Aylin', + id: 1, + engine: 4, + language: languages.tr, + gender: 'F' +}; + +module.exports.kerem = { + name: 'Kerem', + id: 1, + engine: 2, + language: languages.tr, + gender: 'M' +}; + +module.exports.selin = { + name: 'Selin', + id: 3, + engine: 2, + language: languages.tr, + gender: 'F' +}; + +module.exports.zeynep = { + name: 'Zeynep', + id: 2, + engine: 2, + language: languages.tr, + gender: 'F' +}; + +module.exports.zuzana = { + name: 'Zuzana', + id: 1, + engine: 4, + language: languages.cs, + gender: 'F' +}; + +module.exports.frida = { + name: 'Frida', + id: 1, + engine: 2, + language: languages.da, + gender: 'F' +}; + +module.exports.ida = { + name: 'Ida', + id: 1, + engine: 4, + language: languages.da, + gender: 'F' +}; + +module.exports.magnus = { + name: 'Magnus', + id: 2, + engine: 2, + language: languages.da, + gender: 'M' +}; + +module.exports.henrik = { + name: 'Henrik', + id: 2, + engine: 2, + language: languages.no, + gender: 'M' +}; + +module.exports.stine = { + name: 'Stine', + id: 2, + engine: 4, + language: languages.no, + gender: 'F' +}; + +module.exports.vilde = { + name: 'Vilde', + id: 1, + engine: 2, + language: languages.no, + gender: 'F' +}; + +module.exports.dmitri = { + name: 'Dmitri', + id: 2, + engine: 2, + language: languages.ru, + gender: 'M' +}; + +module.exports.milena = { + name: 'Milena', + id: 2, + engine: 4, + language: languages.ru, + gender: 'F' +}; + +module.exports.olga = { + name: 'Olga', + id: 1, + engine: 2, + language: languages.ru, + gender: 'F' +}; + +module.exports.arantxa = { + name: 'Arantxa', + id: 1, + engine: 4, + language: languages.eu, + gender: 'F' +}; + +module.exports.marko = { + name: 'Marko', + id: 2, + engine: 2, + language: languages.fi, + gender: 'M' +}; + +module.exports.mikko = { + name: 'Mikko', + id: 1, + engine: 4, + language: languages.fi, + gender: 'M' +}; + +module.exports.milla = { + name: 'Milla', + id: 1, + engine: 2, + language: languages.fi, + gender: 'F' +}; + +module.exports.lekha = { + name: 'Lekha', + id: 1, + engine: 4, + language: languages.hi, + gender: 'F' +}; + +module.exports.narisa = { + name: 'Narisa', + id: 1, + engine: 4, + language: languages.th, + gender: 'F' +}; + +module.exports.sarawut = { + name: 'Sarawut', + id: 1, + engine: 3, + language: languages.th, + gender: 'M' +}; + +module.exports.somsi = { + name: 'Somsi', + id: 2, + engine: 3, + language: languages.th, + gender: 'F' +}; + +module.exports.laila = { + name: 'Laila', + id: 2, + engine: 2, + language: languages.ar, + gender: 'F' +}; + +module.exports.maged = { + name: 'Maged', + id: 1, + engine: 4, + language: languages.ar, + gender: 'M' +}; + +module.exports.tarik = { + name: 'Tarik', + id: 1, + engine: 2, + language: languages.ar, + gender: 'M' +}; + +module.exports.damayanti = { + name: 'Damayanti', + id: 1, + engine: 4, + language: languages.id, + gender: 'F' +}; + +module.exports.eszter = { + name: 'Eszter', + id: 1, + engine: 4, + language: languages.hu, + gender: 'F' +}; + +module.exports.ioana = { + name: 'Ioana', + id: 1, + engine: 2, + language: languages.ro, + gender: 'F' +}; + +module.exports.simona = { + name: 'Simona', + id: 1, + engine: 4, + language: languages.ro, + gender: 'F' +}; + +module.exports.ludoviko = { + name: 'Ludoviko', + id: 1, + engine: 2, + language: languages.eo, + gender: 'M' +}; + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ad6aab6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,38 @@ +{ + "name": "oddcast-tts-demo", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "build-url": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/build-url/-/build-url-1.1.2.tgz", + "integrity": "sha512-H8G4apX+CdlgZU8db4S1MniU6POELvnoznAX4Qi9h2OW2JV1hJdlhTN5X3POfDqzUuXX+xVG7lgYS0yNVz5PGg==" + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7b0b2f2 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "oddcast-tts-demo", + "version": "1.0.0", + "description": "Text-to-speech using oddcast.com's TTS demo.", + "main": "./lib/index.js", + "author": "Rauli Laine ", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + }, + "dependencies": { + "build-url": "^1.1.2", + "md5": "^2.2.1" + } +}