@@ -38,6 +38,10 @@ gradlew.bat | |||
build/ | |||
espeak.iml | |||
# emscripten output: | |||
a.out | |||
a.out.js | |||
# autotools | |||
AUTHORS |
@@ -1,6 +1,6 @@ | |||
# | |||
# Copyright (C) 2014-2016 Eitan Isaacson | |||
# Copyright (C) 2016 Alberto Pettarin | |||
# Copyright (C) 2014-2017 Eitan Isaacson | |||
# Copyright (C) 2016-2017 Alberto Pettarin | |||
# | |||
# This program is free software; you can redistribute it and/or modify | |||
# it under the terms of the GNU General Public License as published by | |||
@@ -73,7 +73,7 @@ EM_WORKER_DATA=js/espeakng.worker.data | |||
EM_WORKER_JS=js/espeakng.worker.js | |||
EM_PTHREAD_MAIN_JS=js/pthread-main.js | |||
# NOTE: intermediate objects | |||
# NOTE: intermediate objects | |||
EM_OBJS=$(EM_GLUE_OBJ) $(EM_LIBESPEAKNG_SO) | |||
EM_ALL_PRE_JS=$(EM_PRE_JS) $(EM_ESPEAKNG_DATA_PACKAGE_JS) | |||
EM_ALL_POST_JS=$(EM_GLUE_AUTOGEN_JS) $(EM_POST_JS) | |||
@@ -82,8 +82,8 @@ EM_ALL_POST_JS=$(EM_GLUE_AUTOGEN_JS) $(EM_POST_JS) | |||
# | |||
# ./emconfigure ./configure --prefix=/usr --without-async | |||
# ./emmake make | |||
CXXFLAGS+=-DESPEAK_DATA_PATH=\"$(EM_VIRTUAL_PATH_ESPEAKNG_DATA)\" | |||
CXXFLAGS+=-I ./ -I ../ -I ../src/include/espeak-ng | |||
CXXFLAGS+=-DESPEAK_DATA_PATH=\"$(EM_VIRTUAL_PATH_ESPEAKNG_DATA)\" | |||
CXXFLAGS+=-I ./ -I ../ -I ../src/include/espeak-ng | |||
# NOTE: so far, pthread is not supported in any browser | |||
# except Firefox Nightly. | |||
@@ -114,7 +114,7 @@ $(EM_WORKER_DATA): | |||
$(EM_ESPEAKNG_DATA_PACKAGE_JS): $(EM_WORKER_DATA) | |||
$(EM_GLUE_AUTOGEN_CPP): $(EM_GLUE_IDL) | |||
$(EM_WEBIDL_BINDER) $(EM_GLUE_IDL) $(EM_GLUE_PREFIX) | |||
$(EM_WEBIDL_BINDER) $(EM_GLUE_IDL) $(EM_GLUE_PREFIX) | |||
$(EM_GLUE_AUTOGEN_JS): $(EM_GLUE_AUTOGEN_CPP) | |||
@@ -7,10 +7,10 @@ to Javascript via | |||
allows client-side text-to-speech synthesis in any browser | |||
supporting Web workers and the Web Audio API. | |||
* Version: 1.49.0 | |||
* Date: 2016-11-01 | |||
* Version: 1.49.1 | |||
* Date: 2017-02-01 | |||
* License: the GNU General Public License, Version 3 (GPLv3) | |||
* Size: 3.0 MB (including all the voices) | |||
* Size: 3.2 MB (including all the voices) | |||
## Demo |
@@ -3,7 +3,7 @@ | |||
<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 Demo</title> | |||
<title>espeakng.js 1.49.1 Demo</title> | |||
<style> | |||
h1 { | |||
max-width: 480px; | |||
@@ -23,6 +23,11 @@ | |||
width: calc(80% - 3rem); | |||
margin: 0; | |||
} | |||
.speecharg input { | |||
margin: 0; | |||
padding: 0; | |||
border: 0; | |||
} | |||
.speecharg button { | |||
width: 1.5rem; | |||
height: 1.5rem; | |||
@@ -92,14 +97,14 @@ | |||
<div>Loading eSpeak-ng worker and data...</div> | |||
<progress></progress> | |||
</div> | |||
<h1>espeakng.js Demo</h1> | |||
<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> | |||
<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> | |||
<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> | |||
<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> |
@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2014-2016 Eitan Isaacson | |||
* Copyright (C) 2014-2017 Eitan Isaacson | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by |
@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2014-2016 Eitan Isaacson | |||
* Copyright (C) 2014-2017 Eitan Isaacson | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by |
@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2014-2016 Eitan Isaacson | |||
* Copyright (C) 2014-2017 Eitan Isaacson | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -164,7 +164,7 @@ function speak() { | |||
var now = Date.now(); | |||
chunkID = 0; | |||
console.log(' Creating pusher...'); | |||
pusher = new PushAudioNode( | |||
ctx, | |||
@@ -204,7 +204,7 @@ function speak() { | |||
} // end of function cb | |||
); // end of tts.synthesize() | |||
console.log(' Calling synthesize... done'); | |||
console.log('Leaving speak()'); | |||
} // end of speak() | |||
@@ -240,7 +240,7 @@ function initializeDemo() { | |||
opt.value = voice.identifier; | |||
console.log('Adding voice: ' + opt.text); | |||
sel.add(opt); | |||
if (voice.name === 'en') { | |||
if (voice.name === 'english') { | |||
opt.id = 'default-voice'; | |||
opt.selected = true; | |||
} |
@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2014-2016 Eitan Isaacson | |||
* Copyright (C) 2014-2017 Eitan Isaacson | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by |
@@ -1,5 +1,5 @@ | |||
/* | |||
* Copyright (C) 2014-2016 Eitan Isaacson | |||
* Copyright (C) 2014-2017 Eitan Isaacson | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by |