summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/builds.pm125
-rwxr-xr-xtools/configure20
-rwxr-xr-xtools/voice.pl5
3 files changed, 139 insertions, 11 deletions
diff --git a/tools/builds.pm b/tools/builds.pm
index fe400b6777..a69300cd3f 100644
--- a/tools/builds.pm
+++ b/tools/builds.pm
@@ -2,12 +2,15 @@ $publicrelease="3.15";
2$releasedate="15 Nov 2019"; 2$releasedate="15 Nov 2019";
3$releasenotes="/wiki/ReleaseNotes315"; 3$releasenotes="/wiki/ReleaseNotes315";
4 4
5# { 'modelname' => { 5################################################################
6
7# 'modelname' => {
6# name => 'Full Name', 8# name => 'Full Name',
7# status => 1, # 0=retired, 1=unusable, 2=unstable, 3=stable 9# status => 1, # 0=retired, 1=unusable, 2=unstable, 3=stable
8# ram => 2, # optional (used?) 10# ram => 2, # optional (used?)
9# manual => 'modelname2', # optional (uses modelname2's manual) 11# manual => 'modelname2', # optional (uses modelname2's manual)
10# icon => 'modelname3', # optional (uses modelname3's icon) 12# icon => 'modelname3', # optional (uses modelname3's icon)
13# voice => 'modelname4' # optional (uses modelname4's voice)
11# release => '3.14', # optional (final release version, if different from above) 14# release => '3.14', # optional (final release version, if different from above)
12# } 15# }
13 16
@@ -493,4 +496,124 @@ sub allbuilds {
493 return @list; 496 return @list;
494} 497}
495 498
499################################################################
500
501# 'voicename' => {
502# lang => 'langname', # source rockbox .lang file
503# name => 'Native Name ( English Name )', # descriptive text
504# short => 'sss', # short iso-ish text
505# defengine => 'enginename', # which engine to prefer
506# engines => { # supported engines
507# enginea = '-opt1=x -opt2=y', # options for enginea
508# engineb = '-lang=xx', # options for engineb
509# },
510# }
511
512# A single source language file can have many voice variants.
513# For example, Mandarin and Cantonese use the same "Chinese" script.
514# Also, different genders or regional accents for the same language
515
516%voices = (
517 # UK English always comes first
518 'english' => {
519 'lang' => 'english',
520 'name' => 'UK English',
521 'short' => 'en-uk',
522 'defengine' => 'espeak',
523 'engines' => {
524 'festival' => '--language english',
525 'espeak' => '-ven-gb',
526 'gtts' => '-l en-gb',
527 },
528 },
529 # Everything else in alphabetical order
530 'english-us' => {
531 'lang' => 'english-us',
532 'name' => 'American English',
533 'short' => 'en-us',
534 'defengine' => 'espeak',
535 'engines' => {
536 'festival' => '--language english',
537 'espeak' => '-ven-us',
538 'gtts' => '-l en-us',
539 },
540 },
541 'greek' => {
542 'lang' => 'greek',
543 'name' => 'Ελληνικά (Greek)',
544 'short' => 'el',
545 'defengine' => 'espeak',
546 'engines' => {
547 'espeak' => '-vel',
548 'gtts' => '-l el',
549 },
550 },
551 'polski' => {
552 'lang' => 'polski',
553 'name' => 'Polski (Polish)',
554 'short' => 'pl',
555 'defengine' => 'espeak',
556 'engines' => {
557 'espeak' => '-vpl',
558 'gtts' => '-l pl',
559 },
560 },
561 'russian' => {
562 'lang' => 'russian',
563 'name' => 'Русский (Russian)',
564 'short' => 'ru',
565 'defengine' => 'espeak',
566 'engines' => {
567 'espeak' => '-vru',
568 'gtts' => '-l ru',
569 },
570 },
571 'slovak' => {
572 'lang' => 'slovak',
573 'name' => 'Slovenský (Slovak)',
574 'short' => 'sk',
575 'defengine' => 'espeak',
576 'engines' => {
577 'espeak' => '-vsk',
578 'gtts' => '-l sk',
579 },
580 },
581 'srpski' => {
582 'lang' => 'srpski',
583 'name' => 'српски (Serbian)',
584 'short' => 'sr',
585 'defengine' => 'espeak',
586 'engines' => {
587 'espeak' => '-vsr',
588 'gtts' => '-l sr',
589 },
590 },
591);
592
593sub bylang {
594 return uc $voices{$a}{lang} cmp uc $voices{$b}{lang};
595}
596
597sub allvoices {
598 my @list;
599
600 for my $b (sort bylang keys %voices) {
601 push @list, $b;
602 }
603
604 return @list;
605}
606
607sub voicesforlang($) {
608 my $l = shift @_;
609 my @list;
610
611 for my $b (sort bylang keys %voices) {
612 push @list, $b if ($voices{$b}{lang} eq $b);
613 }
614
615 return @list;
616}
617
618
4961; 6191;
diff --git a/tools/configure b/tools/configure
index aab3e59dfb..96d45a9173 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1167,8 +1167,8 @@ voiceconfig () {
1167 DEFAULT_CHOICE="O" 1167 DEFAULT_CHOICE="O"
1168 fi 1168 fi
1169 1169
1170 if [ "$FESTIVAL" = "$FLITE" ] && [ "$FLITE" = "$ESPEAK" ] && [ "$ESPEAK" = "$SAPI" ] && [ "$SAPI" = "$MIMIC"] && [ "$MIMIC" = "$SWIFT" ] && [ "$SWIFT" = "$RBSPEAK" ] && [ "$RBSPEAK" = "$GTTS" ] ; then 1170 if [ "$FESTIVAL" = "$FLITE" ] && [ "$FLITE" = "$ESPEAK" ] && [ "$ESPEAK" = "$SAPI" ] && [ "$SAPI" = "$MIMIC"] && [ "$MIMIC" = "$SWIFT" ] && [ "$SWIFT" = "$GTTS" ] && [ "$GTTS" = "$RBSPEAK" ] ; then
1171 echo "You need Festival, eSpeak, Mimic, Flite, or rbspeak in your path, or SAPI available to build voice files" 1171 echo "You need Festival, eSpeak, Mimic, Flite, gtts, or rbspeak in your path, or SAPI available to build voice files"
1172 exit 3 1172 exit 3
1173 fi 1173 fi
1174 1174
@@ -1181,42 +1181,42 @@ voiceconfig () {
1181 advopts="$advopts --tts=$option" 1181 advopts="$advopts --tts=$option"
1182 fi 1182 fi
1183 case "$option" in 1183 case "$option" in
1184 [Ll]) 1184 [Ll]|flite)
1185 TTS_ENGINE="flite" 1185 TTS_ENGINE="flite"
1186 NOISEFLOOR="500" # TODO: check this value 1186 NOISEFLOOR="500" # TODO: check this value
1187 TTS_OPTS=$FLITE_OPTS 1187 TTS_OPTS=$FLITE_OPTS
1188 ;; 1188 ;;
1189 [Ee]) 1189 [Ee]|espeak)
1190 TTS_ENGINE="espeak" 1190 TTS_ENGINE="espeak"
1191 NOISEFLOOR="500" 1191 NOISEFLOOR="500"
1192 TTS_OPTS=$ESPEAK_OPTS 1192 TTS_OPTS=$ESPEAK_OPTS
1193 ;; 1193 ;;
1194 [Ff]) 1194 [Ff]|festival)
1195 TTS_ENGINE="festival" 1195 TTS_ENGINE="festival"
1196 NOISEFLOOR="500" 1196 NOISEFLOOR="500"
1197 TTS_OPTS=$FESTIVAL_OPTS 1197 TTS_OPTS=$FESTIVAL_OPTS
1198 ;; 1198 ;;
1199 [Mm]) 1199 [Mm]|mimic)
1200 TTS_ENGINE="mimic" 1200 TTS_ENGINE="mimic"
1201 NOISEFLOOR="500" 1201 NOISEFLOOR="500"
1202 TTS_OPTS=$MIMIC_OPTS 1202 TTS_OPTS=$MIMIC_OPTS
1203 ;; 1203 ;;
1204 [Ss]) 1204 [Ss]|sapi)
1205 TTS_ENGINE="sapi" 1205 TTS_ENGINE="sapi"
1206 NOISEFLOOR="500" 1206 NOISEFLOOR="500"
1207 TTS_OPTS=$SAPI_OPTS 1207 TTS_OPTS=$SAPI_OPTS
1208 ;; 1208 ;;
1209 [Ww]) 1209 [Ww]|swift)
1210 TTS_ENGINE="swift" 1210 TTS_ENGINE="swift"
1211 NOISEFLOOR="500" 1211 NOISEFLOOR="500"
1212 TTS_OPTS=$SWIFT_OPTS 1212 TTS_OPTS=$SWIFT_OPTS
1213 ;; 1213 ;;
1214 [Gg) 1214 [Gg]|gtts)
1215 TTS_ENGINE="gtts" 1215 TTS_ENGINE="gtts"
1216 NOISEFLOOR="500" 1216 NOISEFLOOR="500"
1217 TTS_OPTS=$GTTS_OPTS 1217 TTS_OPTS=$GTTS_OPTS
1218 ;; 1218 ;;
1219 [Oo]) 1219 [Oo]|rbspeak)
1220 TTS_ENGINE="rbspeak" 1220 TTS_ENGINE="rbspeak"
1221 NOISEFLOOR="500" 1221 NOISEFLOOR="500"
1222 TTS_OPTS=$RBSPEAK_OPTS 1222 TTS_OPTS=$RBSPEAK_OPTS
diff --git a/tools/voice.pl b/tools/voice.pl
index 05ced3a6d9..0b49ddff04 100755
--- a/tools/voice.pl
+++ b/tools/voice.pl
@@ -244,6 +244,11 @@ sub voicestring {
244 print("> $cmd\n") if $verbose; 244 print("> $cmd\n") if $verbose;
245 system($cmd); 245 system($cmd);
246 } 246 }
247 elsif ($name eq 'espeak-ng') {
248 $cmd = "espeak-ng $tts_engine_opts -w \"$output\" \"$string\"";
249 print("> $cmd\n") if $verbose;
250 system($cmd);
251 }
247 elsif ($name eq 'sapi') { 252 elsif ($name eq 'sapi') {
248 print({$$tts_object{"stdin"}} "SPEAK\t$output\t$string\r\n"); 253 print({$$tts_object{"stdin"}} "SPEAK\t$output\t$string\r\n");
249 } 254 }