Updates to Github #github


espeak-ng@groups.io Integration <espeak-ng@...>
 

1 New Commit:

[espeak-ng:master] By Valdis Vitolins <valdis.vitolins@...>:
21f9aabf4d77: Fix issue #842: Arabic long vowels are mispronounced

Modified: dictsource/ar_list


[espeak-ng:master] Label added to issue #845 Edit those ukrainian pronounciations please by Giovani93.


[espeak-ng:master] Label added to issue #842 Arabic Long Vowels are Mispronounced by Turkrosoft.


[espeak-ng:master] Label added to issue #825 Hebrew is not supported by NirAbel.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Issue #840 emscripten demo usage clarification needed
By animaone:

Ok... the problem is not in espeak. It is about context access, since Webworkers can't access the context of the main thread, I have managed to serialize the object I want access to into an Array, and than passed this object's index to the context of tts.synthesize_ipa.

I also modified the function synthesize_ipa a bit, so that it can work in this context. The function can receive more than one argument, and the argument format is: tts.synthesize_ipa({text: text, index: i}, ipaCallback);

I also have edited synthesize_ipa, because I don't know how to implement this in the emscripten glue. It would be nice if someone could do that.

function synthesize_ipa_override(callerArguments, aCallback) { aText = callerArguments.text; var ipaVirtualFileName = "espeak-ng-ipa-tmp-" + Math.random().toString().substring(2); var res = ""; var code = this.synthipa(aText, ipaVirtualFileName); if (code == 0) res = FS.readFile(ipaVirtualFileName, {encoding: "utf8"}); FS.unlink(ipaVirtualFileName); var ret = {code: code, ipa: res, callerArguments: callerArguments, mytest:"this is an override"}; return ret }


[espeak-ng:master] New Comment on Issue #840 emscripten demo usage clarification needed
By animaone:

Ok... the problem is not in espeak. It is about context access, since Webworkers can't access the context of the main thread, I have managed to serialize the object I want access to into an Array, and than passed this object's index to the context of tts.synthesize_ipa.

I also modified the function synthesize_ipa a bit, so that it can work in this context. The function can receive more than one argument, and the argument format is: tts.synthesize_ipa({text: text, index: i}, ipaCallback);

I also have edited synthesize_ipa, because I don't know how to implement this in the emscripten glue. It would be nice if someone could do that.

function synthesize_ipa_override(callerArguments, aCallback) {
	aText = callerArguments.text;
    var ipaVirtualFileName = "espeak-ng-ipa-tmp-" + Math.random().toString().substring(2);
    var res = "";
    var code = this.synth_ipa_(aText, ipaVirtualFileName);
    if (code == 0) res = FS.readFile(ipaVirtualFileName, {encoding: "utf8"});
    FS.unlink(ipaVirtualFileName);
    var ret = {code: code, ipa: res, callerArguments: callerArguments, mytest:"this is an override"};
    return ret
}


[espeak-ng:master] New Comment on Issue #840 emscripten demo usage clarification needed
By animaone:

Ok... the problem is not in espeak. It is about context access, since Webworkers can't access the context of the main thread, I have managed to serialize the object I want access to into an Array, and than passed this object's index to the context of tts.synthesize_ipa.

I also modified the function synthesize_ipa a bit, so that it can work in this context. The function can receive more than one argument, and the argument format is: tts.synthesize_ipa({text: text, index: i}, ipaCallback);

I also have edited synthesize_ipa, because I don't know how to implement this in the emscripten glue. It would be nice if someone could do that.

function synthesize_ipa_override(callerArguments, aCallback) {
	aText = callerArguments.text;
    var ipaVirtualFileName = "espeak-ng-ipa-tmp-" + Math.random().toString().substring(2);
    var res = "";
    var code = this.synth_ipa_(aText, ipaVirtualFileName);
    if (code == 0) res = FS.readFile(ipaVirtualFileName, {encoding: "utf8"});
    FS.unlink(ipaVirtualFileName);
    var ret = {code: code, ipa: res, callerArguments: callerArguments, mytest:"this is an override"};
    return ret
}


[espeak-ng:master] New Comment on Issue #840 emscripten demo usage clarification needed
By animaone:

Ok... the problem is not in espeak. It is about context access, since Webworkers can't access the context of the main thread, I have managed to serialize the object I want access to into an Array, and than passed this object's index to the context of tts.synthesize_ipa.

I also modified the function synthesize_ipa a bit, so that it can work in this context. The function can receive more than one argument, and the argument format is: tts.synthesize_ipa({text: text, index: i}, ipaCallback);

I also have edited synthesize_ipa, because I don't know how to implement this in the emscripten glue. It would be nice if someone could do that.

function synthesize_ipa_override(callerArguments, aCallback) {
    aText = callerArguments.text;
    var ipaVirtualFileName = "espeak-ng-ipa-tmp-" + Math.random().toString().substring(2);
    var res = "";
    var code = this.synth_ipa_(aText, ipaVirtualFileName);
    if (code == 0) res = FS.readFile(ipaVirtualFileName, {encoding: "utf8"});
    FS.unlink(ipaVirtualFileName);
    var ret = {code: code, ipa: res, callerArguments: callerArguments, mytest:"this is an override"};
    return ret
}


[espeak-ng:master] New Comment on Issue #840 emscripten demo usage clarification needed
By animaone:

Ok... the problem is not in espeak. It is about context access, since Webworkers can't access the context of the main thread, I have managed to serialize the object I want access to into an Array, and than passed this object's index to the context of tts.synthesize_ipa.

I also modified the function synthesize_ipa a bit, so that it can work in this context. The function can receive more than one argument, and the argument format is: tts.synthesize_ipa({text: text, index: i}, ipaCallback);

I also have edited synthesize_ipa, because I don't know how to implement this in the emscripten glue. It would be nice if someone could do that.

function synthesize_ipa(callerArguments, aCallback) {
    aText = callerArguments.text;
    var ipaVirtualFileName = "espeak-ng-ipa-tmp-" + Math.random().toString().substring(2);
    var res = "";
    var code = this.synth_ipa_(aText, ipaVirtualFileName);
    if (code == 0) res = FS.readFile(ipaVirtualFileName, {encoding: "utf8"});
    FS.unlink(ipaVirtualFileName);
    var ret = {code: code, ipa: res, callerArguments: callerArguments, mytest:"this is an override"};
    return ret
}


[espeak-ng:master] New Comment on Issue #840 emscripten demo usage clarification needed
By animaone:

Ok... the problem is not in espeak. It is about context access, since Webworkers can't access the context of the main thread, I have managed to serialize the object I want access to into an Array, and than passed this object's index to the context of tts.synthesize_ipa.

I also modified the function synthesize_ipa a bit, so that it can work in this context. The function can receive more than one argument, and the argument format is: tts.synthesize_ipa({text: text, index: i}, ipaCallback);

I also have edited synthesize_ipa, because I don't know how to implement this in the emscripten glue. It would be nice if someone could do that.

function synthesize_ipa(callerArguments, aCallback) {
    aText = callerArguments.text;
    var ipaVirtualFileName = "espeak-ng-ipa-tmp-" + Math.random().toString().substring(2);
    var res = "";
    var code = this.synth_ipa_(aText, ipaVirtualFileName);
    if (code == 0) res = FS.readFile(ipaVirtualFileName, {encoding: "utf8"});
    FS.unlink(ipaVirtualFileName);
    var ret = {code: code, ipa: res, callerArguments: callerArguments};
    return ret
}


[espeak-ng:master] New Comment on Issue #840 emscripten demo usage clarification needed
By animaone:

Anyone that knows how javascript async nature works may understand how this is a trivial problem, anyways... it is good to preserve this post as a clue for new travelers.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Issue Created by animaone:
#840 Clarification about espeak.js async callbacks usage

Hello. I have compiled espeak.js and I am trying to modify the demo so I can get an IPA text from a console function, but the result.ipa variable from demo.js does not become available. there is something special in document.getElementById('ipaarea').value = result.ipa; that forces the async callback to return a correct ipa text value instead of 'undefined'? related to file: emscripten/js/demo.js


[espeak-ng:master] New Comment on Issue #840 Clarification about espeak.js async callbacks usage
By animaone:

Ok... the problem is not in espeak. It is about context access, since Webworkers can't access the context of the main thread, I have managed to serialize the object I want access to into an Array, and than passed this object's index to the context of tts.synthesize_ipa.

I also modified the function synthesize_ipa a bit, so that it can work in this context. The function can receive more than one argument, and the argument format is: tts.synthesize_ipa({text: text, index: i}, ipaCallback);

I have edited synthesize_ipa, because I don't know how to implement this in the emscripten glue. It would be nice if someone could do that.

function synthesize_ipa(callerArguments, aCallback) {
    aText = callerArguments.text;
    var ipaVirtualFileName = "espeak-ng-ipa-tmp-" + Math.random().toString().substring(2);
    var res = "";
    var code = this.synth_ipa_(aText, ipaVirtualFileName);
    if (code == 0) res = FS.readFile(ipaVirtualFileName, {encoding: "utf8"});
    FS.unlink(ipaVirtualFileName);
    var ret = {code: code, ipa: res, callerArguments: callerArguments};
    return ret
}


[espeak-ng:master] New Comment on Issue #840 Clarification about espeak.js async callbacks usage
By animaone:

Ok... the problem is not in espeak. It is about context access, since Webworkers can't access the context of the main thread, I have managed to serialize the object I want access to into an Array, and than passed this object's index to the context of tts.synthesize_ipa.

I also modified the function synthesize_ipa a bit, so that it can work in this context. The function can receive more than one argument, and the argument format is: tts.synthesize_ipa({text: text, index: i}, ipaCallback);

I have edited synthesize_ipa javascript file directly because I don't know how to implement this in the emscripten glue. It would be nice if someone could do that.

function synthesize_ipa(callerArguments, aCallback) {
    aText = callerArguments.text;
    var ipaVirtualFileName = "espeak-ng-ipa-tmp-" + Math.random().toString().substring(2);
    var res = "";
    var code = this.synth_ipa_(aText, ipaVirtualFileName);
    if (code == 0) res = FS.readFile(ipaVirtualFileName, {encoding: "utf8"});
    FS.unlink(ipaVirtualFileName);
    var ret = {code: code, ipa: res, callerArguments: callerArguments};
    return ret
}


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng/espeak-ng] Pull request updated by datajake1999:

#844 add SpeechPlayer as Klatt6

I managed to add NV SpeechPlayer as Klatt 6. I also was able to remove the Windows specific code from speechPlayer, and the library still works. I am using it with NVDA as I write this. I updated the visual studio project with the new source files. To update the other projects, you should add the following files: * libespeak-ng/sPlayer.c * speechPlayer/frame.cpp * speechPlayer/speechPlayer.cpp * speechPlayer/speechWaveGenerator.cpp I also added a compiler define for including SpeechPlayer, INCLUDE_SPEECHPLAYER.


[espeak-ng:master] New Comment on Pull Request #844 add SpeechPlayer as Klatt6
By hozosch:

Cool how you end up figuring out things on your own. I tend to do the same, but it doesn't always work.


espeak-ng@groups.io Integration <espeak-ng@...>
 

[espeak-ng:master] New Comment on Pull Request #844 add SpeechPlayer as Klatt6
By datajake1999:

Integrating the speechPlayer build process into autotools is starting to drive me crazy. The last few commits are different things I have tried. Nothing works. A c port of speechPlayer would be nice, but since the library uses some C++ functions, porting won't be as easy as I thought. I still want to get this merged though, because a lot of people like the speechPlayer Klatt implementation.


[espeak-ng:master] New Comment on Pull Request #844 add SpeechPlayer as Klatt6
By hozosch:

Oh, I see. I hope that you will get feedback from more experienced people soon :D