├── .gitignore ├── LICENSE ├── README.md ├── index.html ├── index.js ├── style.css ├── text2meljs ├── group1-shard10of30.bin ├── group1-shard11of30.bin ├── group1-shard12of30.bin ├── group1-shard13of30.bin ├── group1-shard14of30.bin ├── group1-shard15of30.bin ├── group1-shard16of30.bin ├── group1-shard17of30.bin ├── group1-shard18of30.bin ├── group1-shard19of30.bin ├── group1-shard1of30.bin ├── group1-shard20of30.bin ├── group1-shard21of30.bin ├── group1-shard22of30.bin ├── group1-shard23of30.bin ├── group1-shard24of30.bin ├── group1-shard25of30.bin ├── group1-shard26of30.bin ├── group1-shard27of30.bin ├── group1-shard28of30.bin ├── group1-shard29of30.bin ├── group1-shard2of30.bin ├── group1-shard30of30.bin ├── group1-shard3of30.bin ├── group1-shard4of30.bin ├── group1-shard5of30.bin ├── group1-shard6of30.bin ├── group1-shard7of30.bin ├── group1-shard8of30.bin ├── group1-shard9of30.bin └── model.json ├── text2meljstiny ├── group1-shard1of8.bin ├── group1-shard2of8.bin ├── group1-shard3of8.bin ├── group1-shard4of8.bin ├── group1-shard5of8.bin ├── group1-shard6of8.bin ├── group1-shard7of8.bin ├── group1-shard8of8.bin └── model.json ├── vocoderjs ├── group1-shard1of3.bin ├── group1-shard2of3.bin ├── group1-shard3of3.bin └── model.json └── vocoderjstiny ├── group1-shard1of1.bin └── model.json /.gitignore: -------------------------------------------------------------------------------- 1 | .python-version 2 | venv/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Taylor 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | TensorflowTTS in Tensorflow.js 2 | ============================== 3 | A simple port of [TensorflowTTS][TensorflowTTS]'s FastSpeech2 and MB-MelGAN LJSpeech models. 4 | 5 | `-tiny` models are used by default. They use the maximum compression strength in `tensorflowjs-wizard`. 6 | 7 | Licensing 8 | --------- 9 | All code is MIT licensed. **Models are not MIT licensed. See the [TensorflowTTS][TensorflowTTS] page for model licensing information.** 10 | 11 | [TensorflowTTS]: https://github.com/TensorSpeech/TensorflowTTS -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TensorflowTTS in Tensorflow.js 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

TensorflowTTS in Tensorflow.js

15 | 16 |
17 |

18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | tf.enableProdMode() 2 | 3 | const text2mel = tf.loadGraphModel('text2meljstiny/model.json'); 4 | const vocoder = tf.loadGraphModel('vocoderjstiny/model.json'); 5 | 6 | const audioContext = new AudioContext(); 7 | async function playAudio(wav) { 8 | const buf = audioContext.createBuffer(1, wav.shape[1], 22050); 9 | buf.copyToChannel(await wav.data(), 0); 10 | var source = audioContext.createBufferSource(); 11 | source.buffer = buf; 12 | source.connect(audioContext.destination); 13 | source.start(); 14 | } 15 | 16 | const symbols = ['pad', 17 | '-', 18 | '!', 19 | "'", 20 | '(', 21 | ')', 22 | ',', 23 | '.', 24 | ':', 25 | ';', 26 | '?', 27 | ' ', 28 | 'A', 29 | 'B', 30 | 'C', 31 | 'D', 32 | 'E', 33 | 'F', 34 | 'G', 35 | 'H', 36 | 'I', 37 | 'J', 38 | 'K', 39 | 'L', 40 | 'M', 41 | 'N', 42 | 'O', 43 | 'P', 44 | 'Q', 45 | 'R', 46 | 'S', 47 | 'T', 48 | 'U', 49 | 'V', 50 | 'W', 51 | 'X', 52 | 'Y', 53 | 'Z', 54 | 'a', 55 | 'b', 56 | 'c', 57 | 'd', 58 | 'e', 59 | 'f', 60 | 'g', 61 | 'h', 62 | 'i', 63 | 'j', 64 | 'k', 65 | 'l', 66 | 'm', 67 | 'n', 68 | 'o', 69 | 'p', 70 | 'q', 71 | 'r', 72 | 's', 73 | 't', 74 | 'u', 75 | 'v', 76 | 'w', 77 | 'x', 78 | 'y', 79 | 'z', 80 | '@AA', 81 | '@AA0', 82 | '@AA1', 83 | '@AA2', 84 | '@AE', 85 | '@AE0', 86 | '@AE1', 87 | '@AE2', 88 | '@AH', 89 | '@AH0', 90 | '@AH1', 91 | '@AH2', 92 | '@AO', 93 | '@AO0', 94 | '@AO1', 95 | '@AO2', 96 | '@AW', 97 | '@AW0', 98 | '@AW1', 99 | '@AW2', 100 | '@AY', 101 | '@AY0', 102 | '@AY1', 103 | '@AY2', 104 | '@B', 105 | '@CH', 106 | '@D', 107 | '@DH', 108 | '@EH', 109 | '@EH0', 110 | '@EH1', 111 | '@EH2', 112 | '@ER', 113 | '@ER0', 114 | '@ER1', 115 | '@ER2', 116 | '@EY', 117 | '@EY0', 118 | '@EY1', 119 | '@EY2', 120 | '@F', 121 | '@G', 122 | '@HH', 123 | '@IH', 124 | '@IH0', 125 | '@IH1', 126 | '@IH2', 127 | '@IY', 128 | '@IY0', 129 | '@IY1', 130 | '@IY2', 131 | '@JH', 132 | '@K', 133 | '@L', 134 | '@M', 135 | '@N', 136 | '@NG', 137 | '@OW', 138 | '@OW0', 139 | '@OW1', 140 | '@OW2', 141 | '@OY', 142 | '@OY0', 143 | '@OY1', 144 | '@OY2', 145 | '@P', 146 | '@R', 147 | '@S', 148 | '@SH', 149 | '@T', 150 | '@TH', 151 | '@UH', 152 | '@UH0', 153 | '@UH1', 154 | '@UH2', 155 | '@UW', 156 | '@UW0', 157 | '@UW1', 158 | '@UW2', 159 | '@V', 160 | '@W', 161 | '@Y', 162 | '@Z', 163 | '@ZH', 164 | 'eos']; 165 | 166 | function symbolId(symbol) { 167 | return symbols.indexOf(symbol); 168 | } 169 | 170 | const curly_re = /(.*?)\{(.+?)\}(.*)/; 171 | 172 | function convertText(text) { 173 | let sequence = []; 174 | while (text.length != 0) { 175 | let m = text.match(curly_re); 176 | if (m == null) { 177 | sequence = sequence.concat(convertSymbols(cleanText(text))); 178 | break; 179 | } 180 | sequence = sequence.concat(convertSymbols(cleanText(m[1]))); 181 | sequence = sequence.concat(convertArpabet(m[2])); 182 | text = m[3]; 183 | } 184 | 185 | sequence = sequence.concat(symbolId("eos")); 186 | return sequence; 187 | } 188 | 189 | function convertSymbols(text) { 190 | if (typeof text == 'string') { 191 | text = text.split(''); 192 | } 193 | return text.filter(keepSymbol).map(symbolId); 194 | } 195 | 196 | function convertArpabet(text) { 197 | return convertSymbols(text.split(/\s+/).map(char => "@" + char)); 198 | } 199 | 200 | function keepSymbol(symbol) { 201 | return symbols.indexOf(symbol) != -1 && symbol != "_" && symbol != "~"; 202 | } 203 | 204 | function cleanText(text) { 205 | text = transliterate(text); 206 | text = text.toLowerCase(); 207 | text = expandNumbers(text); 208 | text = expandAbbreviations(text); 209 | text = collapseWhitespace(text); 210 | return text; 211 | } 212 | 213 | function collapseWhitespace(text) { 214 | text.replace(/\s+/, " "); 215 | return text; 216 | } 217 | 218 | const abbreviations = { 219 | "mrs": "misess", 220 | "mr": "mister", 221 | "dr": "doctor", 222 | "st": "saint", 223 | "co": "company", 224 | "jr": "junior", 225 | "maj": "major", 226 | "gen": "general", 227 | "drs": "doctors", 228 | "rev": "reverend", 229 | "lt": "lieutenant", 230 | "hon": "honorable", 231 | "sgt": "sergeant", 232 | "capt": "captain", 233 | "esq": "esquire", 234 | "ltd": "limited", 235 | "col": "colonel", 236 | "ft": "fort", 237 | }; 238 | 239 | function expandAbbreviations(text) { 240 | for (const key of Object.keys(abbreviations)) { 241 | const val = abbreviations[key]; 242 | text = text.replace(key, val); 243 | } 244 | return text; 245 | } 246 | 247 | const comma_number_re = /([0-9][0-9\,]+[0-9])/; 248 | const decimal_number_re = /([0-9]+\.[0-9]+)/; 249 | const dollars_re = /\$([0-9\.\,]*[0-9]+)/; 250 | const ordinal_re = /[0-9]+(st|nd|rd|th)/; 251 | const number_re = /[0-9]+/; 252 | 253 | function expandNumbers(text) { 254 | text = text.replace(comma_number_re, remove_commas); 255 | text = text.replace(dollars_re, expand_dollars); 256 | text = text.replace(decimal_number_re, expand_decimal_point); 257 | text = text.replace(ordinal_re, expand_ordinal); 258 | text = text.replace(number_re, expand_number); 259 | return text; 260 | } 261 | 262 | function remove_commas(match, group) { 263 | return group.replace(",", ""); 264 | } 265 | 266 | 267 | function expand_decimal_point(match, group) { 268 | return group.replace(".", " point "); 269 | } 270 | 271 | 272 | function expand_dollars(_, match) { 273 | const parts = match.split("."); 274 | if (parts.length > 2) 275 | return match + " dollars" // Unexpected format 276 | const dollars = parts[0] ? parseInt(parts[0]) : 0; 277 | const cents = parts[1] ? parseInt(parts[1]) : 0; 278 | const dollar_unit = dollars == 1 ? "dollar" : "dollars"; 279 | const cent_unit = cents == 1 ? "cent" : "cents"; 280 | if (dollars && cents) { 281 | return `${dollars} ${dollar_unit}, ${cents} ${cent_unit}`; 282 | } else if (dollars) { 283 | return `${dollars} ${dollar_unit}`; 284 | } else if (cents) { 285 | return `${cents} ${cent_unit}`; 286 | } else { 287 | return "zero dollars"; 288 | } 289 | } 290 | 291 | function expand_ordinal(match) { 292 | return numberToWords.toWordsOrdinal(match); 293 | } 294 | 295 | 296 | function expand_number(match) { 297 | const num = parseInt(match); 298 | return numberToWords.toWords(num); 299 | } 300 | 301 | async function tts(text, ttsStatus) { 302 | ttsStatus.innerText = "Converting input"; 303 | const input_ids = tf.tensor([convertText(text)], null, 'int32'); 304 | inputs = { 305 | "input_ids": input_ids, 306 | "speaker_ids": tf.tensor([0], null, 'int32'), 307 | "speed_ratios:0": tf.tensor([1.0], null, 'float32'), 308 | "f0_ratios": tf.tensor([1.0], null, 'float32'), 309 | "energy_ratios": tf.tensor([1.0], null, 'float32'), 310 | }; 311 | ttsStatus.innerText = "Generating mel spectrogram (be patient)"; 312 | console.time("inference"); 313 | console.time("mel generation"); 314 | const mel = await (await text2mel).executeAsync(inputs); 315 | console.timeEnd("mel generation"); 316 | console.time("vocoding"); 317 | ttsStatus.innerText = "Generating waveform (be patient)"; 318 | const wav = (await vocoder).execute(mel[0]); 319 | console.timeEnd("vocoding"); 320 | console.timeEnd("inference"); 321 | ttsStatus.innerText = "Done!"; 322 | playAudio(wav); 323 | for (let i = 0; i < inputs.length; i++) { 324 | inputs[i].dispose(); 325 | } 326 | } 327 | 328 | document.addEventListener('DOMContentLoaded', function () { 329 | const ttsInput = document.getElementById("tts-input"); 330 | const ttsStart = document.getElementById("tts-start"); 331 | const ttsStatus = document.getElementById("tts-status"); 332 | ttsStart.addEventListener("click", async function () { 333 | await tts(ttsInput.value, ttsStatus); 334 | }); 335 | }); -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | body { 2 | text-align: center; 3 | } 4 | 5 | * { 6 | font-family: sans-serif; 7 | } 8 | 9 | #tts-status { 10 | margin: 8 0 8 0; 11 | } 12 | 13 | #tts-input { 14 | width: 50vw; 15 | height: 12em; 16 | } 17 | 18 | #tts-start { 19 | font-size: large; 20 | margin: 4px; 21 | padding: 5px; 22 | background: #ddd; 23 | border: 1px solid rgb(44, 44, 44); 24 | border-radius: 0.25em; 25 | } -------------------------------------------------------------------------------- /text2meljs/group1-shard10of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard10of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard11of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard11of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard12of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard12of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard13of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard13of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard14of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard14of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard15of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard15of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard16of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard16of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard17of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard17of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard18of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard18of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard19of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard19of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard1of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard1of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard20of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard20of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard21of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard21of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard22of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard22of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard23of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard23of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard24of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard24of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard25of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard25of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard26of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard26of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard27of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard27of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard28of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard28of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard29of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard29of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard2of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard2of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard30of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard30of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard3of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard3of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard4of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard4of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard5of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard5of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard6of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard6of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard7of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard7of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard8of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard8of30.bin -------------------------------------------------------------------------------- /text2meljs/group1-shard9of30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljs/group1-shard9of30.bin -------------------------------------------------------------------------------- /text2meljstiny/group1-shard1of8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljstiny/group1-shard1of8.bin -------------------------------------------------------------------------------- /text2meljstiny/group1-shard2of8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljstiny/group1-shard2of8.bin -------------------------------------------------------------------------------- /text2meljstiny/group1-shard3of8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljstiny/group1-shard3of8.bin -------------------------------------------------------------------------------- /text2meljstiny/group1-shard4of8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljstiny/group1-shard4of8.bin -------------------------------------------------------------------------------- /text2meljstiny/group1-shard5of8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljstiny/group1-shard5of8.bin -------------------------------------------------------------------------------- /text2meljstiny/group1-shard6of8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljstiny/group1-shard6of8.bin -------------------------------------------------------------------------------- /text2meljstiny/group1-shard7of8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljstiny/group1-shard7of8.bin -------------------------------------------------------------------------------- /text2meljstiny/group1-shard8of8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/text2meljstiny/group1-shard8of8.bin -------------------------------------------------------------------------------- /vocoderjs/group1-shard1of3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/vocoderjs/group1-shard1of3.bin -------------------------------------------------------------------------------- /vocoderjs/group1-shard2of3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/vocoderjs/group1-shard2of3.bin -------------------------------------------------------------------------------- /vocoderjs/group1-shard3of3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/vocoderjs/group1-shard3of3.bin -------------------------------------------------------------------------------- /vocoderjstiny/group1-shard1of1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MightyAlex200/tfjs-tts/6f47ec3d3d79e66e57f16c500b563a32b418d4f9/vocoderjstiny/group1-shard1of1.bin --------------------------------------------------------------------------------