1
0
Fork 0
forked from len0rd/rockbox

voice: add a 'make talkclips' target for voice builds.

This will use the configured tts engine and language to generate
the talk clips for a specified directory.

  TALKDIR=/path/to/somehere make talkclips
  TALKDIR=/path/to/somehere make talkclips-force

If 'TALKDIR' is not defined then it will error out gracefully.

Normally if a talkclip is present already it will not regenerate the file,
but 'make talkclip-force' will regenerate it anyway.

Change-Id: I62683f9e5ca395fd303ac6029096c20da1e96d01
This commit is contained in:
Solomon Peachy 2024-04-17 14:42:36 -04:00
parent ebd952da2f
commit c38aeb3fbc
2 changed files with 21 additions and 4 deletions

View file

@ -19,7 +19,7 @@ use strict;
use warnings;
use File::Basename;
use File::Copy;
use vars qw($V $C $t $l $e $E $s $S $i $v $f);
use vars qw($V $C $t $l $e $E $s $S $i $v $f $F);
use IPC::Open2;
use IPC::Open3;
use Digest::MD5 qw(md5_hex);
@ -64,6 +64,8 @@ Usage: voice.pl [options] [path to dir]
Options to pass to the TTS engine. Enclose in double quotes if the
options include spaces.
-F Force the file to be regenerated even if present
-v
Be verbose
USAGE
@ -125,6 +127,7 @@ my %espeak_lang_map = (
);
my $trim_thresh = 500; # Trim silence if over this, in ms
my $force = 0; # Don't regenerate files already present
# Initialize TTS engine. May return an object or value which will be passed
# to voicestring and shutdown_tts
@ -427,7 +430,7 @@ sub generateclips {
}
# Don't generate encoded file if it already exists (probably from the POOL)
if (! -f $enc) {
if (! -f $enc && !$force) {
if ($id eq "VOICE_PAUSE") {
print("Use distributed $wav\n") if $verbose;
copy(dirname($0)."/VOICE_PAUSE.wav", $wav);
@ -540,7 +543,7 @@ sub gentalkclips {
printf("Talkclip %s: %s", $enc, $voice) if $verbose;
# Don't generate encoded file if it already exists
next if (-f $enc);
next if (-f $enc && !$force);
voicestring($voice, $wav, $tts_engine_opts, $tts_object);
wavtrim($wav, $trim_thresh, $tts_object);
@ -563,6 +566,7 @@ sub gentalkclips {
# Check parameters
my $printusage = 0;
unless (defined($V) or defined($C)) { print("Missing either -V or -C\n"); $printusage = 1; }
if (defined($V)) {
unless (defined($l)) { print("Missing -l argument\n"); $printusage = 1; }
@ -575,6 +579,9 @@ if (defined($V)) {
elsif (defined($C)) {
unless (defined($ARGV[0])) { print "Missing path argument\n"; $printusage = 1; }
}
$force = 1 if (defined($F));
unless (defined($e)) { print("Missing -e argument\n"); $printusage = 1; }
unless (defined($E)) { print("Missing -E argument\n"); $printusage = 1; }
unless (defined($s)) { print("Missing -s argument\n"); $printusage = 1; }