staging/speakup: Add inflection synth parameter
The inflection parameter, i.e. the pitch range, allows to change the expressiveness of the synthesized voice. This is supported by the DEC talk synths, and software synthesizers such as espeak/espeak-ng. Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Link: https://lore.kernel.org/r/20200425193226.nv3zfd4k3xavi353@function Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
de24e9b33a
Коммит
d97a9d7aea
|
@ -43,6 +43,7 @@ static struct var_t vars[] = {
|
|||
{ CAPS_STOP, .u.s = {"[:dv ap 100]" } },
|
||||
{ RATE, .u.n = {"[:ra %d]", 7, 0, 9, 150, 25, NULL } },
|
||||
{ PITCH, .u.n = {"[:dv ap %d]", 100, 0, 100, 0, 0, NULL } },
|
||||
{ INFLECTION, .u.n = {"[:dv pr %d] ", 100, 0, 10000, 0, 0, NULL } },
|
||||
{ VOL, .u.n = {"[:dv gv %d]", 13, 0, 16, 0, 5, NULL } },
|
||||
{ PUNCT, .u.n = {"[:pu %c]", 0, 0, 2, 0, 0, "nsa" } },
|
||||
{ VOICE, .u.n = {"[:n%c]", 0, 0, 9, 0, 0, "phfdburwkv" } },
|
||||
|
@ -59,6 +60,8 @@ static struct kobj_attribute caps_stop_attribute =
|
|||
__ATTR(caps_stop, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute pitch_attribute =
|
||||
__ATTR(pitch, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute inflection_attribute =
|
||||
__ATTR(inflection, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute punct_attribute =
|
||||
__ATTR(punct, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute rate_attribute =
|
||||
|
@ -87,6 +90,7 @@ static struct attribute *synth_attrs[] = {
|
|||
&caps_start_attribute.attr,
|
||||
&caps_stop_attribute.attr,
|
||||
&pitch_attribute.attr,
|
||||
&inflection_attribute.attr,
|
||||
&punct_attribute.attr,
|
||||
&rate_attribute.attr,
|
||||
&voice_attribute.attr,
|
||||
|
|
|
@ -139,6 +139,7 @@ static struct var_t vars[] = {
|
|||
{ CAPS_STOP, .u.s = {"[:dv ap 100]" } },
|
||||
{ RATE, .u.n = {"[:ra %d]", 9, 0, 18, 150, 25, NULL } },
|
||||
{ PITCH, .u.n = {"[:dv ap %d]", 80, 0, 100, 20, 0, NULL } },
|
||||
{ INFLECTION, .u.n = {"[:dv pr %d] ", 100, 0, 10000, 0, 0, NULL } },
|
||||
{ VOL, .u.n = {"[:vo se %d]", 5, 0, 9, 5, 10, NULL } },
|
||||
{ PUNCT, .u.n = {"[:pu %c]", 0, 0, 2, 0, 0, "nsa" } },
|
||||
{ VOICE, .u.n = {"[:n%c]", 0, 0, 9, 0, 0, "phfdburwkv" } },
|
||||
|
@ -155,6 +156,8 @@ static struct kobj_attribute caps_stop_attribute =
|
|||
__ATTR(caps_stop, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute pitch_attribute =
|
||||
__ATTR(pitch, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute inflection_attribute =
|
||||
__ATTR(inflection, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute punct_attribute =
|
||||
__ATTR(punct, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute rate_attribute =
|
||||
|
@ -183,6 +186,7 @@ static struct attribute *synth_attrs[] = {
|
|||
&caps_start_attribute.attr,
|
||||
&caps_stop_attribute.attr,
|
||||
&pitch_attribute.attr,
|
||||
&inflection_attribute.attr,
|
||||
&punct_attribute.attr,
|
||||
&rate_attribute.attr,
|
||||
&voice_attribute.attr,
|
||||
|
|
|
@ -44,7 +44,7 @@ static struct var_t vars[] = {
|
|||
{ CAPS_START, .u.s = {"[:dv ap 160] " } },
|
||||
{ CAPS_STOP, .u.s = {"[:dv ap 100 ] " } },
|
||||
{ RATE, .u.n = {"[:ra %d] ", 180, 75, 650, 0, 0, NULL } },
|
||||
{ PITCH, .u.n = {"[:dv ap %d] ", 122, 50, 350, 0, 0, NULL } },
|
||||
{ INFLECTION, .u.n = {"[:dv pr %d] ", 100, 0, 10000, 0, 0, NULL } },
|
||||
{ VOL, .u.n = {"[:dv g5 %d] ", 86, 60, 86, 0, 0, NULL } },
|
||||
{ PUNCT, .u.n = {"[:pu %c] ", 0, 0, 2, 0, 0, "nsa" } },
|
||||
{ VOICE, .u.n = {"[:n%c] ", 0, 0, 9, 0, 0, "phfdburwkv" } },
|
||||
|
@ -61,6 +61,8 @@ static struct kobj_attribute caps_stop_attribute =
|
|||
__ATTR(caps_stop, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute pitch_attribute =
|
||||
__ATTR(pitch, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute inflection_attribute =
|
||||
__ATTR(inflection, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute punct_attribute =
|
||||
__ATTR(punct, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute rate_attribute =
|
||||
|
@ -89,6 +91,7 @@ static struct attribute *synth_attrs[] = {
|
|||
&caps_start_attribute.attr,
|
||||
&caps_stop_attribute.attr,
|
||||
&pitch_attribute.attr,
|
||||
&inflection_attribute.attr,
|
||||
&punct_attribute.attr,
|
||||
&rate_attribute.attr,
|
||||
&voice_attribute.attr,
|
||||
|
|
|
@ -24,6 +24,7 @@ static struct var_t vars[] = {
|
|||
{ PAUSE, .u.s = {"PAUSE\n"} },
|
||||
{ RATE, .u.n = {"RATE %d\n", 8, 1, 16, 0, 0, NULL } },
|
||||
{ PITCH, .u.n = {"PITCH %d\n", 8, 0, 16, 0, 0, NULL } },
|
||||
{ INFLECTION, .u.n = {"INFLECTION %d\n", 8, 0, 16, 0, 0, NULL } },
|
||||
{ VOL, .u.n = {"VOL %d\n", 8, 0, 16, 0, 0, NULL } },
|
||||
{ TONE, .u.n = {"TONE %d\n", 8, 0, 16, 0, 0, NULL } },
|
||||
{ DIRECT, .u.n = {NULL, 0, 0, 1, 0, 0, NULL } },
|
||||
|
@ -39,6 +40,8 @@ static struct kobj_attribute caps_stop_attribute =
|
|||
__ATTR(caps_stop, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute pitch_attribute =
|
||||
__ATTR(pitch, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute inflection_attribute =
|
||||
__ATTR(inflection, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute rate_attribute =
|
||||
__ATTR(rate, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute tone_attribute =
|
||||
|
@ -65,6 +68,7 @@ static struct attribute *synth_attrs[] = {
|
|||
&caps_start_attribute.attr,
|
||||
&caps_stop_attribute.attr,
|
||||
&pitch_attribute.attr,
|
||||
&inflection_attribute.attr,
|
||||
&rate_attribute.attr,
|
||||
&tone_attribute.attr,
|
||||
&vol_attribute.attr,
|
||||
|
|
|
@ -38,6 +38,7 @@ static struct var_t vars[] = {
|
|||
{ PAUSE, .u.n = {"\x01P" } },
|
||||
{ RATE, .u.n = {"\x01%ds", 2, 0, 9, 0, 0, NULL } },
|
||||
{ PITCH, .u.n = {"\x01%dp", 5, 0, 9, 0, 0, NULL } },
|
||||
{ INFLECTION, .u.n = {"\x01%dr", 5, 0, 9, 0, 0, NULL } },
|
||||
{ VOL, .u.n = {"\x01%dv", 5, 0, 9, 0, 0, NULL } },
|
||||
{ TONE, .u.n = {"\x01%dx", 1, 0, 2, 0, 0, NULL } },
|
||||
{ PUNCT, .u.n = {"\x01%db", 0, 0, 2, 0, 0, NULL } },
|
||||
|
@ -57,6 +58,8 @@ static struct kobj_attribute freq_attribute =
|
|||
__ATTR(freq, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute pitch_attribute =
|
||||
__ATTR(pitch, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute inflection_attribute =
|
||||
__ATTR(inflection, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute punct_attribute =
|
||||
__ATTR(punct, 0644, spk_var_show, spk_var_store);
|
||||
static struct kobj_attribute rate_attribute =
|
||||
|
@ -96,6 +99,7 @@ static struct attribute *synth_attrs[] = {
|
|||
&freq_attribute.attr,
|
||||
/* &lang_attribute.attr, */
|
||||
&pitch_attribute.attr,
|
||||
&inflection_attribute.attr,
|
||||
&punct_attribute.attr,
|
||||
&rate_attribute.attr,
|
||||
&tone_attribute.attr,
|
||||
|
|
|
@ -42,7 +42,8 @@ enum var_id_t {
|
|||
SAY_CONTROL, SAY_WORD_CTL, NO_INTERRUPT, KEY_ECHO,
|
||||
SPELL_DELAY, PUNC_LEVEL, READING_PUNC,
|
||||
ATTRIB_BLEEP, BLEEPS,
|
||||
RATE, PITCH, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG, DIRECT, PAUSE,
|
||||
RATE, PITCH, INFLECTION, VOL, TONE, PUNCT, VOICE, FREQUENCY, LANG,
|
||||
DIRECT, PAUSE,
|
||||
CAPS_START, CAPS_STOP, CHARTAB,
|
||||
MAXVARS
|
||||
};
|
||||
|
|
|
@ -406,6 +406,7 @@ freq
|
|||
full_time
|
||||
jiffy_delta
|
||||
pitch
|
||||
inflection
|
||||
punct
|
||||
rate
|
||||
tone
|
||||
|
@ -518,9 +519,9 @@ All the entries in the Speakup sys system are readable, some are
|
|||
writable by root only, and some are writable by everyone. Unless you
|
||||
know what you are doing, you should probably leave the ones that are
|
||||
writable by root only alone. Most of the names are self explanatory.
|
||||
Vol for controlling volume, pitch for pitch, rate for controlling speaking
|
||||
rate, etc. If you find one you aren't sure about, you can post a query
|
||||
on the Speakup list.
|
||||
Vol for controlling volume, pitch for pitch, inflection for pitch range, rate
|
||||
for controlling speaking rate, etc. If you find one you aren't sure about, you
|
||||
can post a query on the Speakup list.
|
||||
|
||||
6. Changing Synthesizers
|
||||
|
||||
|
|
|
@ -325,6 +325,12 @@ KernelVersion: 2.6
|
|||
Contact: speakup@linux-speakup.org
|
||||
Description: Gets or sets the pitch of the synthesizer. The range is 0-9.
|
||||
|
||||
What: /sys/accessibility/speakup/soft/inflection
|
||||
KernelVersion: 5.8
|
||||
Contact: speakup@linux-speakup.org
|
||||
Description: Gets or sets the inflection of the synthesizer, i.e. the pitch
|
||||
range. The range is 0-9.
|
||||
|
||||
What: /sys/accessibility/speakup/soft/punct
|
||||
KernelVersion: 2.6
|
||||
Contact: speakup@linux-speakup.org
|
||||
|
|
|
@ -37,6 +37,7 @@ static struct st_var_header var_headers[] = {
|
|||
{ "bell_pos", BELL_POS, VAR_NUM, &spk_bell_pos, NULL },
|
||||
{ "rate", RATE, VAR_NUM, NULL, NULL },
|
||||
{ "pitch", PITCH, VAR_NUM, NULL, NULL },
|
||||
{ "inflection", INFLECTION, VAR_NUM, NULL, NULL },
|
||||
{ "vol", VOL, VAR_NUM, NULL, NULL },
|
||||
{ "tone", TONE, VAR_NUM, NULL, NULL },
|
||||
{ "punct", PUNCT, VAR_NUM, NULL, NULL },
|
||||
|
|
Загрузка…
Ссылка в новой задаче