diff options
Diffstat (limited to 'tools/builds.pm')
-rw-r--r-- | tools/builds.pm | 168 |
1 files changed, 132 insertions, 36 deletions
diff --git a/tools/builds.pm b/tools/builds.pm index 518fb01e49..0b7c768888 100644 --- a/tools/builds.pm +++ b/tools/builds.pm | |||
@@ -10,12 +10,13 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
10 | # 'modelname' => { | 10 | # 'modelname' => { |
11 | # name => 'Full Name', | 11 | # name => 'Full Name', |
12 | # status => 1, # 0=retired, 1=unusable, 2=unstable, 3=stable | 12 | # status => 1, # 0=retired, 1=unusable, 2=unstable, 3=stable |
13 | # sim = 1, # optional (defaults 1 for status 2/3 and 0 for status 1) | ||
13 | # ram => 2, # optional (used?) | 14 | # ram => 2, # optional (used?) |
14 | # manual => 'modelname2', # optional (uses modelname2's manual) | 15 | # manual => 'modelname2', # optional (uses modelname2's manual) |
15 | # icon => 'modelname3', # optional (uses modelname3's icon) | 16 | # icon => 'modelname3', # optional (uses modelname3's icon) |
16 | # voice => 'modelname4' # optional (uses modelname4's voice) | 17 | # voice => 'modelname4' # optional (uses modelname4's voice) |
17 | # release => '3.14', # optional (final release version, if different from above) | 18 | # release => '3.14', # optional (final release version, if different from above) |
18 | # manualok => 1, # optional (builds manual even if target is not stable) | 19 | # manualok => 1, # optional (defaults 1 for status 3 and 0 for rest) |
19 | # } | 20 | # } |
20 | 21 | ||
21 | %builds = ( | 22 | %builds = ( |
@@ -70,10 +71,12 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
70 | }, | 71 | }, |
71 | 'gogearhdd1630' => { | 72 | 'gogearhdd1630' => { |
72 | name => 'Philips GoGear HDD1630', | 73 | name => 'Philips GoGear HDD1630', |
74 | manualok => 0, | ||
73 | status => 3, | 75 | status => 3, |
74 | }, | 76 | }, |
75 | 'gogearhdd6330' => { | 77 | 'gogearhdd6330' => { |
76 | name => 'Philips GoGear HDD6330', | 78 | name => 'Philips GoGear HDD6330', |
79 | manualok => 0, | ||
77 | status => 3, | 80 | status => 3, |
78 | }, | 81 | }, |
79 | 'gogearsa9200' => { | 82 | 'gogearsa9200' => { |
@@ -82,26 +85,32 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
82 | }, | 85 | }, |
83 | 'hifietma9' => { | 86 | 'hifietma9' => { |
84 | name => 'HiFi E.T MA9', | 87 | name => 'HiFi E.T MA9', |
88 | sim => 0, | ||
85 | status => 2, | 89 | status => 2, |
86 | }, | 90 | }, |
87 | 'hifietma9c' => { | 91 | 'hifietma9c' => { |
88 | name => 'HiFi E.T MA9C', | 92 | name => 'HiFi E.T MA9C', |
93 | sim => 0, | ||
89 | status => 2, | 94 | status => 2, |
90 | }, | 95 | }, |
91 | 'hifietma8' => { | 96 | 'hifietma8' => { |
92 | name => 'HiFi E.T MA8', | 97 | name => 'HiFi E.T MA8', |
93 | status => 2, | 98 | status => 2, |
99 | sim => 0, | ||
94 | }, | 100 | }, |
95 | 'hifietma8c' => { | 101 | 'hifietma8c' => { |
96 | name => 'HiFi E.T MA8C', | 102 | name => 'HiFi E.T MA8C', |
97 | status => 2, | 103 | status => 2, |
104 | sim => 0, | ||
98 | }, | 105 | }, |
99 | 'hifimanhm60x' => { | 106 | 'hifimanhm60x' => { |
100 | name => 'HiFiMAN HM-60x', | 107 | name => 'HiFiMAN HM-60x', |
108 | sim => 0, | ||
101 | status => 2, | 109 | status => 2, |
102 | }, | 110 | }, |
103 | 'hifimanhm801' => { | 111 | 'hifimanhm801' => { |
104 | name => 'HiFiMAN HM-801', | 112 | name => 'HiFiMAN HM-801', |
113 | sim => 0, | ||
105 | status => 2, | 114 | status => 2, |
106 | }, | 115 | }, |
107 | 'iaudiom3' => { | 116 | 'iaudiom3' => { |
@@ -118,10 +127,12 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
118 | }, | 127 | }, |
119 | 'ibassodx50' => { | 128 | 'ibassodx50' => { |
120 | name => 'iBasso DX50', | 129 | name => 'iBasso DX50', |
130 | sim => 0, | ||
121 | status => 2, | 131 | status => 2, |
122 | }, | 132 | }, |
123 | 'ibassodx90' => { | 133 | 'ibassodx90' => { |
124 | name => 'iBasso DX90', | 134 | name => 'iBasso DX90', |
135 | sim => 0, | ||
125 | status => 2, | 136 | status => 2, |
126 | }, | 137 | }, |
127 | 'ipod1g2g' => { | 138 | 'ipod1g2g' => { |
@@ -219,10 +230,12 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
219 | 'ondavx747' => { | 230 | 'ondavx747' => { |
220 | name => 'Onda VX747', | 231 | name => 'Onda VX747', |
221 | status => 1, | 232 | status => 1, |
233 | sim => 1, | ||
222 | }, | 234 | }, |
223 | 'ondavx747p' => { | 235 | 'ondavx747p' => { |
224 | name => 'Onda VX747+', | 236 | name => 'Onda VX747+', |
225 | status => 1, | 237 | status => 1, |
238 | sim => 1, | ||
226 | }, | 239 | }, |
227 | 'ondavx767' => { | 240 | 'ondavx767' => { |
228 | name => 'Onda VX767', | 241 | name => 'Onda VX767', |
@@ -231,6 +244,7 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
231 | 'ondavx777' => { | 244 | 'ondavx777' => { |
232 | name => 'Onda VX777', | 245 | name => 'Onda VX777', |
233 | status => 1, | 246 | status => 1, |
247 | sim => 1, | ||
234 | }, | 248 | }, |
235 | 'rk27generic' => { | 249 | 'rk27generic' => { |
236 | name => 'Rockchip rk27xx', | 250 | name => 'Rockchip rk27xx', |
@@ -254,6 +268,7 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
254 | }, | 268 | }, |
255 | 'samsungypr1' => { | 269 | 'samsungypr1' => { |
256 | name => 'Samsung YP-R1', | 270 | name => 'Samsung YP-R1', |
271 | sim => 0, | ||
257 | status => 2, | 272 | status => 2, |
258 | }, | 273 | }, |
259 | 'samsungyps3' => { | 274 | 'samsungyps3' => { |
@@ -316,6 +331,7 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
316 | 'sansam200v4' => { | 331 | 'sansam200v4' => { |
317 | name => 'SanDisk Sansa m200 v4', | 332 | name => 'SanDisk Sansa m200 v4', |
318 | status => 1, | 333 | status => 1, |
334 | sim => 1, | ||
319 | }, | 335 | }, |
320 | 'sansaview' => { | 336 | 'sansaview' => { |
321 | name => 'SanDisk Sansa View', | 337 | name => 'SanDisk Sansa View', |
@@ -328,14 +344,17 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
328 | 'zenvision' => { | 344 | 'zenvision' => { |
329 | name => 'Creative Zen Vision', | 345 | name => 'Creative Zen Vision', |
330 | status => 1, | 346 | status => 1, |
347 | sim => 1, | ||
331 | }, | 348 | }, |
332 | 'zenvisionm30gb' => { | 349 | 'zenvisionm30gb' => { |
333 | name => 'Creative Zen Vision:M 30GB', | 350 | name => 'Creative Zen Vision:M 30GB', |
334 | status => 1, | 351 | status => 1, |
352 | sim => 1, | ||
335 | }, | 353 | }, |
336 | 'zenvisionm60gb' => { | 354 | 'zenvisionm60gb' => { |
337 | name => 'Creative Zen Vision:M 60GB', | 355 | name => 'Creative Zen Vision:M 60GB', |
338 | status => 1, | 356 | status => 1, |
357 | sim => 1, | ||
339 | }, | 358 | }, |
340 | 'mpiohd200' => { | 359 | 'mpiohd200' => { |
341 | name => 'MPIO HD200', | 360 | name => 'MPIO HD200', |
@@ -352,41 +371,51 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
352 | 'creativezenxfi3' => { | 371 | 'creativezenxfi3' => { |
353 | name => 'Creative Zen X-Fi3', | 372 | name => 'Creative Zen X-Fi3', |
354 | status => 3, | 373 | status => 3, |
374 | manualok => 0, | ||
355 | }, | 375 | }, |
356 | 'sonynwze350' => { | 376 | 'sonynwze350' => { |
357 | name => 'Sony NWZ-E350', | 377 | name => 'Sony NWZ-E350', |
378 | sim => 0, | ||
358 | status => 2, | 379 | status => 2, |
359 | }, | 380 | }, |
360 | 'sonynwze360' => { | 381 | 'sonynwze360' => { |
361 | name => 'Sony NWZ-E360', | 382 | name => 'Sony NWZ-E360', |
362 | status => 3, | 383 | status => 3, |
384 | manualok => 0, | ||
363 | }, | 385 | }, |
364 | 'sonynwze370' => { | 386 | 'sonynwze370' => { |
365 | name => 'Sony NWZ-E370/E380', | 387 | name => 'Sony NWZ-E370/E380', |
366 | status => 3, | 388 | status => 3, |
389 | manualok => 0, | ||
367 | }, | 390 | }, |
368 | 'sonynwze450' => { | 391 | 'sonynwze450' => { |
369 | name => 'Sony NWZ-E450', | 392 | name => 'Sony NWZ-E450', |
393 | sim => 0, | ||
370 | status => 2, | 394 | status => 2, |
371 | }, | 395 | }, |
372 | 'sonynwze460' => { | 396 | 'sonynwze460' => { |
373 | name => 'Sony NWZ-E460', | 397 | name => 'Sony NWZ-E460', |
398 | sim => 0, | ||
374 | status => 2, | 399 | status => 2, |
375 | }, | 400 | }, |
376 | 'sonynwze470' => { | 401 | 'sonynwze470' => { |
377 | name => 'Sony NWZ-E470', | 402 | name => 'Sony NWZ-E470', |
403 | sim => 0, | ||
378 | status => 2, | 404 | status => 2, |
379 | }, | 405 | }, |
380 | 'sonynwze580' => { | 406 | 'sonynwze580' => { |
381 | name => 'Sony NWZ-E580', | 407 | name => 'Sony NWZ-E580', |
408 | sim => 0, | ||
382 | status => 2, | 409 | status => 2, |
383 | }, | 410 | }, |
384 | 'sonynwza10' => { | 411 | 'sonynwza10' => { |
385 | name => 'Sony NWZ-A10', | 412 | name => 'Sony NWZ-A10', |
413 | sim => 0, | ||
386 | status => 2, | 414 | status => 2, |
387 | }, | 415 | }, |
388 | 'sonynwa20' => { | 416 | 'sonynwa20' => { |
389 | name => 'Sony NW-A20', | 417 | name => 'Sony NW-A20', |
418 | sim => 0, | ||
390 | status => 2, | 419 | status => 2, |
391 | }, | 420 | }, |
392 | 'sonynwza860' => { | 421 | 'sonynwza860' => { |
@@ -396,14 +425,17 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
396 | 'sonynwzs750' => { | 425 | 'sonynwzs750' => { |
397 | name => 'Sony NWZ-S750', | 426 | name => 'Sony NWZ-S750', |
398 | status => 2, | 427 | status => 2, |
428 | sim => 0, | ||
399 | }, | 429 | }, |
400 | 'creativezenxfi' => { | 430 | 'creativezenxfi' => { |
401 | name => 'Creative Zen X-Fi', | 431 | name => 'Creative Zen X-Fi', |
402 | status => 3 | 432 | status => 3, |
433 | manualok => 0, | ||
403 | }, | 434 | }, |
404 | 'creativezenxfistyle' => { | 435 | 'creativezenxfistyle' => { |
405 | name => 'Creative Zen X-Fi Style', | 436 | name => 'Creative Zen X-Fi Style', |
406 | status => 3 | 437 | status => 3, |
438 | manualok => 0, | ||
407 | }, | 439 | }, |
408 | 'creativezen' => { | 440 | 'creativezen' => { |
409 | name => 'Creative Zen', | 441 | name => 'Creative Zen', |
@@ -411,24 +443,30 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
411 | }, | 443 | }, |
412 | 'creativezenmozaic' => { | 444 | 'creativezenmozaic' => { |
413 | name => 'Creative Zen Mozaic', | 445 | name => 'Creative Zen Mozaic', |
414 | status => 3 | 446 | status => 3, |
447 | manualok => 0, | ||
415 | }, | 448 | }, |
416 | 'agptekrocker' => { | 449 | 'agptekrocker' => { |
417 | name => 'Agptek Rocker', | 450 | name => 'Agptek Rocker', |
418 | status => 2, | 451 | status => 3, |
419 | manualok => 1, # Remove once status moves to 3 | 452 | release => '4.0', # Remove once 4.0 lands |
420 | }, | 453 | }, |
421 | 'xduoox3' => { | 454 | 'xduoox3' => { |
422 | name => 'xDuoo X3', | 455 | name => 'xDuoo X3', |
423 | status => 3, | 456 | status => 3, |
457 | release => '4.0', # Remove once 4.0 lands | ||
424 | }, | 458 | }, |
425 | 'xduoox3ii' => { | 459 | 'xduoox3ii' => { |
426 | name => 'xDuoo X3ii', | 460 | name => 'xDuoo X3ii', |
427 | status => 2, | 461 | manualok => 0, # Remove when manual is written |
462 | status => 3, | ||
463 | release => '4.0', # Remove once 4.0 lands | ||
428 | }, | 464 | }, |
429 | 'xduoox20' => { | 465 | 'xduoox20' => { |
430 | name => 'xDuoo X20', | 466 | name => 'xDuoo X20', |
431 | status => 2, | 467 | manualok => 0, # Remove when manual is written |
468 | status => 3, | ||
469 | release => '4.0', # Remove once 4.0 lands | ||
432 | }, | 470 | }, |
433 | 'fiiom3klinux' => { | 471 | 'fiiom3klinux' => { |
434 | name => 'FiiO M3K (Linux)', | 472 | name => 'FiiO M3K (Linux)', |
@@ -436,16 +474,17 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
436 | }, | 474 | }, |
437 | 'fiiom3k' => { | 475 | 'fiiom3k' => { |
438 | name => 'FiiO M3K', | 476 | name => 'FiiO M3K', |
439 | status => 2, | 477 | status => 3, |
440 | manualok => 1, # Remove once status moves to 3 | 478 | release => '4.0', # Remove once 4.0 lands |
441 | }, | 479 | }, |
442 | 'aigoerosq' => { | 480 | 'aigoerosq' => { |
443 | name => 'AIGO EROS Q / K (Hosted)', | 481 | name => 'AIGO EROS Q / K (Hosted)', |
444 | status => 2, | 482 | status => 2, # Do we promote this to stable? |
445 | }, | 483 | }, |
446 | 'erosqnative' => { | 484 | 'erosqnative' => { |
447 | name => 'AIGO EROS Q / K (Native)', | 485 | name => 'AIGO EROS Q / K (Native)', |
448 | status => 2, | 486 | status => 3, |
487 | release => '4.0', # Remove once 4.0 lands | ||
449 | }, | 488 | }, |
450 | 'ihifi770' => { | 489 | 'ihifi770' => { |
451 | name => 'Xuelin iHIFI 770', | 490 | name => 'Xuelin iHIFI 770', |
@@ -461,8 +500,8 @@ $releasenotes="/wiki/ReleaseNotes315"; | |||
461 | }, | 500 | }, |
462 | 'shanlingq1' => { | 501 | 'shanlingq1' => { |
463 | name => 'Shanling Q1', | 502 | name => 'Shanling Q1', |
464 | status => 2, | 503 | status => 3, |
465 | manualok => 1, # Remove once status moves to 3 | 504 | release => '4.0', # Remove once 4.0 lands |
466 | }, | 505 | }, |
467 | ); | 506 | ); |
468 | 507 | ||
@@ -486,7 +525,18 @@ sub usablebuilds { | |||
486 | my @list; | 525 | my @list; |
487 | 526 | ||
488 | for my $b (sort byname keys %builds) { | 527 | for my $b (sort byname keys %builds) { |
489 | push @list, $b if ($builds{$b}{status} >= 2 || defined($builds{$b}{manualok})); | 528 | push @list, $b if ($builds{$b}{status} >= 2); |
529 | } | ||
530 | |||
531 | return @list; | ||
532 | } | ||
533 | |||
534 | sub manualbuilds { | ||
535 | my @list; | ||
536 | |||
537 | for my $b (sort byname keys %builds) { | ||
538 | push @list, $b if (($builds{$b}{status} > 2 && !defined($builds{$b}{manualok})) || | ||
539 | (defined($builds{$b}{manualok}) && ($builds{$b}{manualok} > 0))); | ||
490 | } | 540 | } |
491 | 541 | ||
492 | return @list; | 542 | return @list; |
@@ -512,6 +562,17 @@ sub allbuilds { | |||
512 | return @list; | 562 | return @list; |
513 | } | 563 | } |
514 | 564 | ||
565 | sub simbuilds { | ||
566 | my @list; | ||
567 | |||
568 | for my $b (&allbuilds) { | ||
569 | push @list, $b if (defined($builds{$b}{sim}) and $builds{$b}{sim}); | ||
570 | push @list, $b if (!defined($builds{$b}{sim}) and $builds{$b}{status} > 1); | ||
571 | } | ||
572 | |||
573 | return @list; | ||
574 | } | ||
575 | |||
515 | ################################################################ | 576 | ################################################################ |
516 | 577 | ||
517 | # 'voicename' => { | 578 | # 'voicename' => { |
@@ -536,21 +597,45 @@ sub allbuilds { | |||
536 | 'lang' => 'english', | 597 | 'lang' => 'english', |
537 | 'name' => 'UK English', | 598 | 'name' => 'UK English', |
538 | 'short' => 'en-gb', | 599 | 'short' => 'en-gb', |
539 | 'defengine' => 'espeak', | 600 | 'defengine' => 'piper', |
540 | 'engines' => { | 601 | 'engines' => { |
541 | 'festival' => '--language english', | 602 | 'festival' => '--language english', |
542 | 'espeak' => '-ven-gb -k 5', | 603 | 'espeak' => '-ven-gb -k 5', |
543 | 'gtts' => '-l en -t co.uk', | 604 | 'gtts' => '-l en -t co.uk', |
544 | 'piper' => 'en_GB-cori-high.onnx', | 605 | 'piper' => 'en_GB-semaine-medium.onnx', |
545 | }, | 606 | }, |
546 | 'enabled' => 1, | 607 | 'enabled' => 1, |
547 | }, | 608 | }, |
548 | # Everything else in alphabetical order | 609 | # Everything else in alphabetical order |
610 | 'bulgarian' => { | ||
611 | 'lang' => 'bulgarian', | ||
612 | 'name' => 'Български (Bulgarian)', | ||
613 | 'short' => 'bg', | ||
614 | 'defengine' => 'espeak', # XXX Switch to gtts when buildserver is updated | ||
615 | 'engines' => { | ||
616 | 'espeak' => '-vbg', | ||
617 | 'gtts' => '-l bg', | ||
618 | # No piper voice yet. | ||
619 | }, | ||
620 | 'enabled' => 1, | ||
621 | }, | ||
622 | 'chinese-simp' => { # Mandarin? | ||
623 | 'lang' => 'chinese-simp', | ||
624 | 'name' => '简体中文 (Chinese Simplified)', | ||
625 | 'short' => 'zh_cn', | ||
626 | 'defengine' => 'piper', | ||
627 | 'engines' => { | ||
628 | 'espeak' => '-vzh', | ||
629 | 'gtts' => '-l zh', | ||
630 | 'piper' => 'zh_CN-huayan-medium.onnx', | ||
631 | }, | ||
632 | 'enabled' => 1, | ||
633 | }, | ||
549 | 'czech' => { | 634 | 'czech' => { |
550 | 'lang' => 'czech', | 635 | 'lang' => 'czech', |
551 | 'name' => 'Čeština (Czech)', | 636 | 'name' => 'Čeština (Czech)', |
552 | 'short' => 'cs', | 637 | 'short' => 'cs', |
553 | 'defengine' => 'espeak', | 638 | 'defengine' => 'piper', |
554 | 'engines' => { | 639 | 'engines' => { |
555 | 'espeak' => '-vcs', | 640 | 'espeak' => '-vcs', |
556 | 'gtts' => '-l cs', | 641 | 'gtts' => '-l cs', |
@@ -562,7 +647,7 @@ sub allbuilds { | |||
562 | 'lang' => 'dansk', | 647 | 'lang' => 'dansk', |
563 | 'name' => 'Dansk (Danish)', | 648 | 'name' => 'Dansk (Danish)', |
564 | 'short' => 'da', | 649 | 'short' => 'da', |
565 | 'defengine' => 'espeak', | 650 | 'defengine' => 'piper', |
566 | 'engines' => { | 651 | 'engines' => { |
567 | 'espeak' => '-vda', | 652 | 'espeak' => '-vda', |
568 | 'gtts' => '-l da', | 653 | 'gtts' => '-l da', |
@@ -574,7 +659,7 @@ sub allbuilds { | |||
574 | 'lang' => 'deutsch', | 659 | 'lang' => 'deutsch', |
575 | 'name' => 'Deutsch (German)', | 660 | 'name' => 'Deutsch (German)', |
576 | 'short' => 'de', | 661 | 'short' => 'de', |
577 | 'defengine' => 'espeak', | 662 | 'defengine' => 'piper', |
578 | 'engines' => { | 663 | 'engines' => { |
579 | 'espeak' => '-vde', | 664 | 'espeak' => '-vde', |
580 | 'gtts' => '-l de', | 665 | 'gtts' => '-l de', |
@@ -598,7 +683,7 @@ sub allbuilds { | |||
598 | 'lang' => 'english-us', | 683 | 'lang' => 'english-us', |
599 | 'name' => 'American English', | 684 | 'name' => 'American English', |
600 | 'short' => 'en-us', | 685 | 'short' => 'en-us', |
601 | 'defengine' => 'espeak', | 686 | 'defengine' => 'piper', |
602 | 'engines' => { | 687 | 'engines' => { |
603 | 'festival' => '--language english', | 688 | 'festival' => '--language english', |
604 | 'espeak' => '-ven-us -k 5', | 689 | 'espeak' => '-ven-us -k 5', |
@@ -611,7 +696,7 @@ sub allbuilds { | |||
611 | 'lang' => 'espanol', | 696 | 'lang' => 'espanol', |
612 | 'name' => 'Spanish (Peninsular)', | 697 | 'name' => 'Spanish (Peninsular)', |
613 | 'short' => 'es-es', | 698 | 'short' => 'es-es', |
614 | 'defengine' => 'espeak', | 699 | 'defengine' => 'piper', |
615 | 'engines' => { | 700 | 'engines' => { |
616 | 'festival' => '--language spanish', | 701 | 'festival' => '--language spanish', |
617 | 'espeak' => '-ves -k 5', | 702 | 'espeak' => '-ves -k 5', |
@@ -636,7 +721,7 @@ sub allbuilds { | |||
636 | 'lang' => 'francais', | 721 | 'lang' => 'francais', |
637 | 'name' => 'Français (French)', | 722 | 'name' => 'Français (French)', |
638 | 'short' => 'fr', | 723 | 'short' => 'fr', |
639 | 'defengine' => 'espeak', | 724 | 'defengine' => 'piper', |
640 | 'engines' => { | 725 | 'engines' => { |
641 | 'espeak' => '-vfr-fr', | 726 | 'espeak' => '-vfr-fr', |
642 | 'gtts' => '-l fr', | 727 | 'gtts' => '-l fr', |
@@ -648,7 +733,7 @@ sub allbuilds { | |||
648 | 'lang' => 'greek', | 733 | 'lang' => 'greek', |
649 | 'name' => 'Ελληνικά (Greek)', | 734 | 'name' => 'Ελληνικά (Greek)', |
650 | 'short' => 'el', | 735 | 'short' => 'el', |
651 | 'defengine' => 'espeak', | 736 | 'defengine' => 'piper', |
652 | 'engines' => { | 737 | 'engines' => { |
653 | 'espeak' => '-vel', | 738 | 'espeak' => '-vel', |
654 | 'gtts' => '-l el', | 739 | 'gtts' => '-l el', |
@@ -660,7 +745,7 @@ sub allbuilds { | |||
660 | 'lang' => 'italiano', | 745 | 'lang' => 'italiano', |
661 | 'name' => 'Italiano (Italian)', | 746 | 'name' => 'Italiano (Italian)', |
662 | 'short' => 'it', | 747 | 'short' => 'it', |
663 | 'defengine' => 'espeak', | 748 | 'defengine' => 'piper', |
664 | 'engines' => { | 749 | 'engines' => { |
665 | 'espeak' => '-vit', | 750 | 'espeak' => '-vit', |
666 | 'gtts' => '-l it', | 751 | 'gtts' => '-l it', |
@@ -668,11 +753,22 @@ sub allbuilds { | |||
668 | }, | 753 | }, |
669 | 'enabled' => 1, | 754 | 'enabled' => 1, |
670 | }, | 755 | }, |
756 | 'korean' => { # | ||
757 | 'lang' => 'korean', | ||
758 | 'name' => '한국어 (Korean)', | ||
759 | 'short' => 'ko', | ||
760 | 'defengine' => 'espeak', | ||
761 | 'engines' => { | ||
762 | 'espeak' => '-vko', | ||
763 | 'gtts' => '-l ko', | ||
764 | }, | ||
765 | 'enabled' => 1, | ||
766 | }, | ||
671 | 'nederlands' => { | 767 | 'nederlands' => { |
672 | 'lang' => 'nederlands', | 768 | 'lang' => 'nederlands', |
673 | 'name' => 'Nederlands (Dutch)', | 769 | 'name' => 'Nederlands (Dutch)', |
674 | 'short' => 'nl', | 770 | 'short' => 'nl', |
675 | 'defengine' => 'espeak', | 771 | 'defengine' => 'piper', |
676 | 'engines' => { | 772 | 'engines' => { |
677 | 'espeak' => '-vnl', | 773 | 'espeak' => '-vnl', |
678 | 'gtts' => '-l nl', | 774 | 'gtts' => '-l nl', |
@@ -684,7 +780,7 @@ sub allbuilds { | |||
684 | 'lang' => 'norsk', | 780 | 'lang' => 'norsk', |
685 | 'name' => 'Norsk (Norwegian)', | 781 | 'name' => 'Norsk (Norwegian)', |
686 | 'short' => 'no', | 782 | 'short' => 'no', |
687 | 'defengine' => 'espeak', | 783 | 'defengine' => 'piper', |
688 | 'engines' => { | 784 | 'engines' => { |
689 | 'espeak' => '-vno', | 785 | 'espeak' => '-vno', |
690 | 'gtts' => '-l no', | 786 | 'gtts' => '-l no', |
@@ -696,7 +792,7 @@ sub allbuilds { | |||
696 | 'lang' => 'polski', | 792 | 'lang' => 'polski', |
697 | 'name' => 'Polski (Polish)', | 793 | 'name' => 'Polski (Polish)', |
698 | 'short' => 'pl', | 794 | 'short' => 'pl', |
699 | 'defengine' => 'espeak', | 795 | 'defengine' => 'piper', |
700 | 'engines' => { | 796 | 'engines' => { |
701 | 'espeak' => '-vpl', | 797 | 'espeak' => '-vpl', |
702 | 'gtts' => '-l pl', | 798 | 'gtts' => '-l pl', |
@@ -708,7 +804,7 @@ sub allbuilds { | |||
708 | 'lang' => 'russian', | 804 | 'lang' => 'russian', |
709 | 'name' => 'Русский (Russian)', | 805 | 'name' => 'Русский (Russian)', |
710 | 'short' => 'ru', | 806 | 'short' => 'ru', |
711 | 'defengine' => 'espeak', | 807 | 'defengine' => 'piper', |
712 | 'engines' => { | 808 | 'engines' => { |
713 | 'espeak' => '-vru', | 809 | 'espeak' => '-vru', |
714 | 'gtts' => '-l ru', | 810 | 'gtts' => '-l ru', |
@@ -732,7 +828,7 @@ sub allbuilds { | |||
732 | 'lang' => 'srpski', | 828 | 'lang' => 'srpski', |
733 | 'name' => 'српски (Serbian)', | 829 | 'name' => 'српски (Serbian)', |
734 | 'short' => 'sr', | 830 | 'short' => 'sr', |
735 | 'defengine' => 'espeak', | 831 | 'defengine' => 'piper', |
736 | 'engines' => { | 832 | 'engines' => { |
737 | 'espeak' => '-vsr', | 833 | 'espeak' => '-vsr', |
738 | 'gtts' => '-l sr', | 834 | 'gtts' => '-l sr', |
@@ -744,7 +840,7 @@ sub allbuilds { | |||
744 | 'lang' => 'svenska', | 840 | 'lang' => 'svenska', |
745 | 'name' => 'Svenska (Swedish)', | 841 | 'name' => 'Svenska (Swedish)', |
746 | 'short' => 'sr', | 842 | 'short' => 'sr', |
747 | 'defengine' => 'espeak', | 843 | 'defengine' => 'piper', |
748 | 'engines' => { | 844 | 'engines' => { |
749 | 'espeak' => '-vsv', | 845 | 'espeak' => '-vsv', |
750 | 'gtts' => '-l sv', | 846 | 'gtts' => '-l sv', |
@@ -756,7 +852,7 @@ sub allbuilds { | |||
756 | 'lang' => 'turkce', | 852 | 'lang' => 'turkce', |
757 | 'name' => 'Türkçe (Turkish)', | 853 | 'name' => 'Türkçe (Turkish)', |
758 | 'short' => 'tr', | 854 | 'short' => 'tr', |
759 | 'defengine' => 'espeak', | 855 | 'defengine' => 'piper', |
760 | 'engines' => { | 856 | 'engines' => { |
761 | 'espeak' => '-vtr', | 857 | 'espeak' => '-vtr', |
762 | 'gtts' => '-l tr', | 858 | 'gtts' => '-l tr', |
@@ -766,14 +862,14 @@ sub allbuilds { | |||
766 | }, | 862 | }, |
767 | ); | 863 | ); |
768 | 864 | ||
769 | sub bylang { | 865 | sub byshortname { |
770 | return uc $voices{$a}{lang} cmp uc $voices{$b}{lang}; | 866 | return uc $voices{$a}{short} cmp uc $voices{$b}{short}; |
771 | } | 867 | } |
772 | 868 | ||
773 | sub allvoices { | 869 | sub allvoices { |
774 | my @list; | 870 | my @list; |
775 | 871 | ||
776 | for my $b (sort bylang keys %voices) { | 872 | for my $b (sort byshortname keys %voices) { |
777 | push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); | 873 | push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); |
778 | } | 874 | } |
779 | 875 | ||
@@ -784,7 +880,7 @@ sub voicesforlang($) { | |||
784 | my $l = shift @_; | 880 | my $l = shift @_; |
785 | my @list; | 881 | my @list; |
786 | 882 | ||
787 | for my $b (sort bylang keys %voices) { | 883 | for my $b (sort byshortname keys %voices) { |
788 | push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); | 884 | push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); |
789 | } | 885 | } |
790 | 886 | ||