Comments (4)
Disclamer: I still don't quite understand all the ins and outs of the system so I might be 100% wrong.
Firstly: You are right in that mimic_voice_select()
should be able to handle the case of empty list and fall back to a file. Modifying it to allow for an empty voice list shouldn't be much effort at all.
The main reason (as far as I can see) for the set_voice_list()
call is to build the different preselected voice executables. I assume this is to make the software easy to use with smaller systems (read embedded devices).
As the voices are linked into the executable (as far as I understand) it doesn't make much sense to remove a voice from the list since it's already compiled and included in the binary. I guess this is the reason there is no remove/delete methods. Do you have any concrete example for when removing a voice might be beneficial?
Should we add an executable called mimic_none
which contains no voice list and requires -voice
parameter to work?
from mimic1.
I also don't understand it completely yet, but let's try to :):
I just took a look at tools/make_voice_list
- so you can use this tool to create a static voice list given multiple parameters with voice names.
Looking at cmu_us_kal:
There is register_cmu_us_kal
which sets the global cst_voice* cmu_us_kal_diphone
and also returns it.
There is also unregister_cmu_us_kal
which calls delete_voice
, which frees memory and unsets
cmu_us_kal_diphone
.
Both don't seem to touch the voice list.
Who calls register for the voices in the list?
And when you unregister a voice, access using mimic_voice_select()
will result in... ?
Unregistering is probably useful when you load lot of voices from files and your application runs for a longer time (e.g. as a smartphone app).
I don't know if someone might need a mimic_none
executable, personally I always integrated flite(+hts_engine) directly into other applications and directly retrieved the waveforms.
You are right, it would probably be the easiest solution to just have mimic_voice_select()
deal with empty lists.
from mimic1.
Yes learning is fun!
I see what you mean. I never looked far enough to see that the unregister functions are actually used and not just for academic purposes. I'm still not sure about their usefulness, since most of the voice data is precompiled the unregistring a voice won't do much difference. (I think)
But as long as there is use cases for the unregister case the voice list should also be updated.
For the mimic excutable the register functions are called from main()
using the set voice_list()
in main/mimic_voice_list.c
(generated by tools/make_voice_list
).
Requiring a voice list with at least one voice is terrible if you use the software as a library if you want to use voices from file!
I say this results in two tasks:
- allow empty voice lists
- handle removal of voice in a good way
from mimic1.
I did some basic work to allow empty voice lists that can be reviewed and tested in the branch no-voice-list. I currently don't have a good example where this is used but I've updated the unit test and it seem to behave as expected.
from mimic1.
Related Issues (20)
- Publish prebuilt mimic releases HOT 2
- windows cross-compilation instructions are not exact. HOT 2
- Problem with speaking. HOT 7
- Voice is not playing over bluetooth HOT 3
- Where is the difference between Mimic and Flite? HOT 2
- Linking fails, but easily fixed HOT 2
- Add support for Palm OS HOT 2
- Unable to make standalone mimic pause and resume at will when reading long text from terminal HOT 5
- Compile for pulseaudio HOT 2
- Using mimic libraries HOT 11
- Distorted 'ap' voice output when compiling with gcc 8.3
- mimic -p '' segs HOT 1
- Tool for creating my own .flitevox? HOT 4
- Dead links: festvox.org doesn't work anymore? HOT 3
- Is there a guide for adding new language support to mimic1? HOT 1
- Windows cross compilation error
- Issue while compiling with LTO enabled HOT 1
- Error when running 'make' HOT 5
- At ./autogen.sh: syntax error near unexpected token `newline'
- "Shared" compilation (with --enable-shared=yes) fails. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mimic1.