Make module express their features
- Dominant language
- C
- Stars
- 331
- Forks
- 92
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 9
Description
**Is your feature request related to a problem? Please describe.**
The server code has hardcoded lists such as
```
int punct_missing = 0;
if (strcmp(output->name, "flite") == 0 ||
strcmp(output->name, "dtk-generic") == 0 ||
strcmp(output->name, "epos-generic") == 0 ||
strcmp(output->name, "llia_phon-generic") == 0 ||
strcmp(output->name, "mary-generic") == 0 ||
strcmp(output->name, "swift-generic") == 0 ||
strcmp(output->name, "pico") == 0)
/* These don't support punctuation */
/* FIXME: rather make them express it */
punct_missing = 1;
```
**Describe the solution you'd like**
The modules should expose their features to the server. We'd want that after initialization. This could be a new command that the server sends to the module to get a feature list, which could be a mere list of lines. The features that the server doesn't understand can be ignored, and if the client says it doesn't support the command, we can assume that it doesn't support the features.
That would probably be useful for exposing the punctuation support as mentioned above, but also ssml support, see #905
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the server code containing the hardcoded punctuation list and the module initialization path. Trace how commands are sent between the server and modules, then determine how a feature list could be exchanged after initialization. Done means module capabilities such as punctuation and SSML support are exposed without hardcoded module names, with unknown features ignored and unsupported commands handled as described.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100