| <!DOCTYPE html> |
| <html lang="en"> |
|
|
| <head> |
|
|
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
| <meta name="description" content="🐸Coqui AI TTS demo server."> |
| <meta name="author" content="🐸Coqui AI TTS"> |
|
|
| <title>TTS engine</title> |
|
|
| |
| <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" |
| integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous" |
| rel="stylesheet"> |
|
|
| |
| <style> |
| body { |
| padding-top: 54px; |
| } |
| |
| @media (min-width: 992px) { |
| body { |
| padding-top: 56px; |
| } |
| } |
| </style> |
| </head> |
|
|
| <body> |
| <a href="https://github.com/idiap/coqui-ai-TTS"><img style="position: absolute; z-index:1000; top: 0; left: 0; border: 0;" |
| src="https://s3.amazonaws.com/github/ribbons/forkme_left_darkblue_121621.png" alt="Fork me on GitHub"></a> |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| <div class="container"> |
| <div class="row"> |
| <div class="col-lg-12 text-center"> |
| <img class="mt-5" src="{{url_for('static', filename='coqui-log-green-TTS.png')}}" align="middle" |
| width="512" /> |
|
|
| <ul class="list-unstyled"> |
| </ul> |
|
|
| {%if use_gst%} |
| <input value='{"0": 0.1}' id="style_wav" placeholder="style wav (dict or path to wav).." size=45 |
| type="text" name="style_wav"> |
| {%endif%} |
|
|
| <input id="text" placeholder="Type here..." size=45 type="text" name="text"> |
| <button id="speak-button" name="speak">Speak</button><br /><br /> |
|
|
| {%if use_multi_speaker%} |
| Choose a speaker: |
| <select id="speaker_id" name=speaker_id method="GET" action="/"> |
| {% for speaker_id in speaker_ids %} |
| <option value="{{speaker_id}}" SELECTED>{{speaker_id}}</option>" |
| {% endfor %} |
| </select><br /><br /> |
| {%endif%} |
|
|
| {%if use_multi_language%} |
| Choose a language: |
| <select id="language_id" name=language_id method="GET" action="/"> |
| {% for language_id in language_ids %} |
| <option value="{{language_id}}" SELECTED>{{language_id}}</option>" |
| {% endfor %} |
| </select><br /><br /> |
| {%endif%} |
|
|
|
|
| {%if show_details%} |
| <button id="details-button" onclick="location.href = 'details'" name="model-details">Model |
| Details</button><br /><br /> |
| {%endif%} |
| <audio id="audio" controls autoplay hidden></audio> |
| <p id="message"></p> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <script> |
| function getTextValue(textId) { |
| const container = q(textId) |
| if (container) { |
| return container.value |
| } |
| return "" |
| } |
| function q(selector) { return document.querySelector(selector) } |
| q('#text').focus() |
| function do_tts(e) { |
| const text = q('#text').value |
| const speaker_id = getTextValue('#speaker_id') |
| const style_wav = getTextValue('#style_wav') |
| const language_id = getTextValue('#language_id') |
| if (text) { |
| q('#message').textContent = 'Synthesizing...' |
| q('#speak-button').disabled = true |
| q('#audio').hidden = true |
| synthesize(text, speaker_id, style_wav, language_id) |
| } |
| e.preventDefault() |
| return false |
| } |
| q('#speak-button').addEventListener('click', do_tts) |
| q('#text').addEventListener('keyup', function (e) { |
| if (e.keyCode == 13) { |
| do_tts(e) |
| } |
| }) |
| function synthesize(text, speaker_id = "", style_wav = "", language_id = "") { |
| fetch(`/api/tts?text=${encodeURIComponent(text)}&speaker_id=${encodeURIComponent(speaker_id)}&style_wav=${encodeURIComponent(style_wav)}&language_id=${encodeURIComponent(language_id)}`, { cache: 'no-cache' }) |
| .then(function (res) { |
| if (!res.ok) throw Error(res.statusText) |
| return res.blob() |
| }).then(function (blob) { |
| q('#message').textContent = '' |
| q('#speak-button').disabled = false |
| q('#audio').src = URL.createObjectURL(blob) |
| q('#audio').hidden = false |
| }).catch(function (err) { |
| q('#message').textContent = 'Error: ' + err.message |
| q('#speak-button').disabled = false |
| }) |
| } |
| </script> |
|
|
| </body> |
|
|
| </html> |
|
|