123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <!doctype html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
- <title>espeakng.js 1.49.1 Demo</title>
- <style>
- h1 {
- max-width: 480px;
- margin: 2rem auto;
- font-size: 150%;
- }
- form {
- max-width: 480px;
- margin: 0 auto;
- }
- .speecharg label {
- display: inline-block;
- width: 20%;
- }
- .speecharg input, .speecharg select {
- display: inline-block;
- width: calc(80% - 3rem);
- margin: 0;
- }
- .speecharg input {
- margin: 0;
- padding: 0;
- border: 0;
- }
- .speecharg button {
- width: 1.5rem;
- height: 1.5rem;
- margin: 0 0 0 1.5rem;
- display: inline-block;
- }
- .bottom {
- margin-top: 1rem;
- display: -webkit-flex;
- display: flex;
- -webkit-justify-content: space-between;
- justify-content: space-between;
- margin: 1rem 0;
- }
- .bottom button {
- flex-grow: 1;
- -webkit-flex-grow: 1;
- }
- #texttospeak {
- width: 100%;
- height: 8rem;
- display: block;
- margin-bottom: 1rem;
- }
- #ipaarea {
- width: 100%;
- height: 8rem;
- display: block;
- margin-bottom: 1rem;
- }
- p.gh {
- color: #333;
- text-align: right;
- display: block;
- font-style: italic;
- }
- /* loading screen */
- #splash {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: #fff;
- padding-top: 4rem;
- transition: opacity 200ms ease, visibility 200ms;
- -webkit-transition: opacity 200ms ease, visibility 200ms;
- visibility: hidden;
- opacity: 0;
- }
- body.loading #splash {
- visibility: visible;
- opacity: 1;
- }
- #splash > * {
- width: 10rem;
- max-width: 480px;
- margin: 2rem auto;
- display: block;
- text-align: center;
- }
- body.loading > *:not(#splash) {
- visibility: hidden;
- }
- </style>
- <script type="text/javascript" src="js/espeakng.js"></script>
- <script type="text/javascript" src="js/demo.js"></script>
- </head>
- <body class="loading">
- <div id="splash">
- <div>Loading eSpeak-ng worker and data...</div>
- <progress></progress>
- </div>
- <h1>espeakng.js 1.49.1 Demo</h1>
- <form>
- <textarea id="texttospeak">Call me Ishmael. Some years ago --- never mind how long precisely --- having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world. It is a way I have of driving off the spleen and regulating the circulation.</textarea>
- <textarea readonly="true" placeholder="IPA" id="ipaarea"></textarea>
- <div class="speecharg">
- <label for="pitch">Pitch</label><input id="pitch" type="range" value="50" min="0" max="100" /><button type="button" aria-label="Reset pitch" title="Reset pitch" onclick="resetPitch();">↶</button>
- </div>
- <div class="speecharg">
- <label for="rate">Rate</label><input id="rate" type="range" value="175" min="80" max="450" /><button type="button" aria-label="Reset rate" title="Reset rate" onclick="resetRate();">↶</button>
- </div>
- <div class="speecharg">
- <label for="voice">Voice</label><select id="voice"></select><button type="button" aria-label="Reset voice" title="Reset voice" onclick="resetVoice();">↶</button>
- </div>
- <div class="bottom">
- <button type="button" onmousedown="speakAndIpa();">Speak</button>
- <button type="button" onmousedown="stop();">Stop</button>
- </div>
- <p class="gh"><a href="https://github.com/eeejay/espeak/tree/emscripten">Original Code for eSpeak: Eitan Isaacson</a></p>
- <p class="gh"><a href="https://github.com/pettarin/espeak-ng/tree/emscripten">Adapted Code for eSpeak-ng: Alberto Pettarin</a></p>
- </form>
- <script type="text/javascript">
- initializeDemo();
- </script>
- </body>
- </html>
|