Requests for additional extensions (?)

Use of external libraries (DLLs) from ZGE.

Moderator: Moderators

User avatar
VilleK
Site Admin
Posts: 2317
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Post by VilleK »

Yes I had forgotten about it :). Although I had a vague memory of once seeing a networked ZGE demo. Thanks, I'll have another look!

Have anyone used this lib with ZGE and made anything besides the demo project included?
Carver413
Posts: 9
Joined: Sun Apr 20, 2014 10:07 pm

Post by Carver413 »

Rado1 wrote:
Carver413 wrote:there is also festival, flite and open mary tts that work in linux. using shell scripts you can create sound files. not as good as an api but it works. flite is my favorite at the moment its small and there are 11 voices you can get for it. open mary has some nice sounding female voices but can be a bit buggy at times.
I'm aware of these TTS systems/libraries but all of them seems to be large, or at least their voice files are large comparing to built-in Windows TTS. Anyway, Carver413 are you able to compile flite on Windows and maybe also on Android? I was not able, there are missing some files in src distribution for v.2.0.0.
sorry I don't have anything but linux. but if your trying to make it multiplatform then it may be better to use the hts_engine

http://hts-engine.sourceforge.net/
User avatar
Rado1
Posts: 775
Joined: Wed May 05, 2010 12:16 pm

Post by Rado1 »

As Carver413 suggested, I tried to use Flite library for TTS. After some complications with compilation (the source distribution does not provide working VC project files) I produces DLLs for Flite library and cmu_us_rms voice.

Attached, you will find a ZGE demo project using Flite TTS.

Pros:
- Flite is a multi-platform, stand-alone library, so for several platforms ZGE would have the same API.
- Flite provides mostly a simple C API based on basic types, so there is no need to implement a wraper library, just a ZExternalLibrary component in ZGE.
- Produced voice is quite good.

Cons:
- DLLs are quite large - 780KB for fliteDll.dll, 3.1MB for language dll.
- Compilation of DLLs tells about some warnings which may cause problems in runtime; so implementation of Flite 2.0.0 is not too reliable (?).
- Synthesis does not run in a separate thread, so it blocks ZGE execution. However, thanks to Thread component it is not a big problem.

Remark 1: I did not study too much how to load voices to Flite, because their documentation is quite extensive. At the moment, I compile lang files to the form of dll and load it to ZGE as external library. I saw that there are also some voices available in the form of .flitevox files. Carver413, others, maybe you are experienced with this, what to do with .flitevox files, cannot be they loaded to Flite directly, e.g. by flite_voice_load() function? All my trials to use .flitevox files failed.

Remark 2: Ville, I also observed that if a thread with running flite_text_to_speech() function is stopped by the Stop button, ZGE crashes (VS debugger tells that it is caused by access violation). I'm not sure it is problem of ZGE or Flite implementation.
Attachments
flite_demo.zip
Flite TTS demo
(2.91 MiB) Downloaded 980 times
Imerion
Posts: 200
Joined: Sun Feb 09, 2014 4:42 pm

Post by Imerion »

Just tried this, running in Wine, and it works great! Thanks!
User avatar
Rado1
Posts: 775
Joined: Wed May 05, 2010 12:16 pm

Post by Rado1 »

Imerion wrote:Just tried this, running in Wine, and it works great! Thanks!
I'm glad it can work in Wine; thanks Imerion for reporting that. I do not use Linux, but I saw on web that (maybe using some tricks) it is possible to run SAPI 5/4 in Wine; if so, then maybe also ZgeSpeak library could work on Linux. (?)
Carver413
Posts: 9
Joined: Sun Apr 20, 2014 10:07 pm

Post by Carver413 »

Rado1 wrote:
Imerion wrote:Just tried this, running in Wine, and it works great! Thanks!
I'm glad it can work in Wine; thanks Imerion for reporting that. I do not use Linux, but I saw on web that (maybe using some tricks) it is possible to run SAPI 5/4 in Wine; if so, then maybe also ZgeSpeak library could work on Linux. (?)
I suppose it would be possible but most people would not want to go that route. I,ve been playing around with the hts lib tring to get it running with pascal but so far no luck. the header file is such crap. (a point to a pointer to a pointer) who does that? no wonder I don't program in C.
User avatar
VilleK
Site Admin
Posts: 2317
Joined: Mon Jan 15, 2007 4:50 pm
Location: Stockholm, Sweden
Contact:

Post by VilleK »

Carver413 wrote:I,ve been playing around with the hts lib tring to get it running with pascal but so far no luck. the header file is such crap. (a point to a pointer to a pointer) who does that? no wonder I don't program in C.
Ha ha, I know that frustration all too well :). Indeed, C-headers tend to have mindbogglingly strange (and unnecessarily complicated) things in them sometimes.
Imerion
Posts: 200
Joined: Sun Feb 09, 2014 4:42 pm

Post by Imerion »

Not sure if this has been mentioned, but the GameJolt score API would be cool to have a ZGE implementation of. :-) This sort of came up since Im planning on joining the latest GameJolt game-jam.

http://jams.gamejolt.io/indiesvsgamers/api

Seems it can be used through the web as well though, so I should be able to do that otherwise.
User avatar
Kjell
Posts: 1910
Joined: Sat Feb 23, 2008 11:15 pm

Post by Kjell »

Hi Imerion,
Imerion wrote:Not sure if this has been mentioned, but the GameJolt score API would be cool to have a ZGE implementation of.
This probably doesn't need a ZExternalLibrary though. From the looks of it ( the Game Jolt Game API documentation ) you could build a solution using a ( regular ) ZLibrary & WebOpen component.

K
User avatar
Rado1
Posts: 775
Joined: Wed May 05, 2010 12:16 pm

Post by Rado1 »

Hi Imerion, Kjell is right, the GameJolt API is HTTP-based so you do not need DLL. However, I could imagine some effort to write wrapping functions to ZLibrary. I would do it by myself, but fortunately I have already started vacation without PC, so I cannot help now. But if you, or somebody else, will do it, I will be happy to use it. Rado1
Imerion
Posts: 200
Joined: Sun Feb 09, 2014 4:42 pm

Post by Imerion »

Then I should be able to manage! I'll try and report back if I get it to work! :)
User avatar
Rado1
Posts: 775
Joined: Wed May 05, 2010 12:16 pm

Post by Rado1 »

Imerion wrote:Then I should be able to manage! I'll try and report back if I get it to work! :)
Hi Imerion, what's the progress with GameJolt API implementation? I'm asking because I just returned from vacation so I could find some time for it, if you want. I want to finish optimizations of BallZ2 first, but then, ca. later next week I could have a look at GameJolt API library... Are there some parts of the API you are especially interesting in?
User avatar
Kjell
Posts: 1910
Joined: Sat Feb 23, 2008 11:15 pm

Post by Kjell »

Hi Rado1,
Rado1 wrote:what's the progress with GameJolt API implementation?
Almost done :wink:

K
Post Reply