@@ -353,36 +353,46 @@ def test_get_start_time_of_next_speech_utterance(
353
353
)
354
354
assert result == expected_result
355
355
356
- def test_get_voices_with_region_filter (self ):
356
+ def test_get_voices_for_region_only (self ):
357
357
voices = [
358
358
Voice (name = "Voice1" , gender = "Male" , region = "US" ),
359
359
Voice (name = "Voice2" , gender = "Female" , region = "UK" ),
360
360
Voice (name = "Voice3" , gender = "Male" , region = "IN" ),
361
361
Voice (name = "Voice4" , gender = "Female" , region = "IN" ),
362
362
]
363
363
364
- result = TextToSpeechUT ().get_voices_with_region_preference (
364
+ result = TextToSpeechUT ().get_voices_for_region_only (
365
365
voices = voices , target_language_region = "UK"
366
366
)
367
- assert result [0 ].region == "UK"
367
+ assert 1 == len (result )
368
+ assert "UK" == result [0 ].region
368
369
369
- result = TextToSpeechUT ().get_voices_with_region_preference (
370
+ result = TextToSpeechUT ().get_voices_for_region_only (
370
371
voices = voices , target_language_region = "IN"
371
372
)
372
- assert result [0 ].region == "IN"
373
- assert result [1 ].region == "IN"
374
373
375
- result = TextToSpeechUT ().get_voices_with_region_preference (
374
+ assert 2 == len (result )
375
+ assert "IN" == result [0 ].region
376
+ assert "IN" == result [1 ].region
377
+
378
+ result = TextToSpeechUT ().get_voices_for_region_only (
376
379
voices = voices , target_language_region = ""
377
380
)
378
- assert result [0 ].region == "US"
381
+ assert 4 == len (result )
382
+ assert "US" == result [0 ].region
379
383
380
- def test_assign_voices (self ):
384
+ @pytest .mark .parametrize (
385
+ "target_language_region, expected_voices" ,
386
+ [
387
+ ("IN" , {1 : "Voice3" }),
388
+ ("" , {1 : "Voice1" }),
389
+ ],
390
+ )
391
+ def test_assign_voices_single_male (self , target_language_region , expected_voices ):
381
392
tts = TextToSpeechUT ()
382
393
383
394
utterance_metadata = [
384
395
{
385
- "assigned_voice" : "en_voice" ,
386
396
"speaker_id" : 1 ,
387
397
"gender" : "Male" ,
388
398
}
@@ -401,9 +411,124 @@ def test_assign_voices(self):
401
411
results = tts .assign_voices (
402
412
utterance_metadata = utterance_metadata ,
403
413
target_language = "" ,
404
- target_language_region = "IN" ,
414
+ target_language_region = target_language_region ,
415
+ )
416
+ assert expected_voices == results
417
+
418
+ @pytest .mark .parametrize (
419
+ "target_language_region, expected_voices" ,
420
+ [
421
+ ("IN" , {1 : "Voice2" }),
422
+ ("" , {1 : "Voice1" }),
423
+ ],
424
+ )
425
+ def test_assign_voices_single_male_no_male_voice (
426
+ self , target_language_region , expected_voices
427
+ ):
428
+ tts = TextToSpeechUT ()
429
+
430
+ utterance_metadata = [
431
+ {
432
+ "speaker_id" : 1 ,
433
+ "gender" : "Male" ,
434
+ }
435
+ ]
436
+
437
+ voices = [
438
+ Voice (name = "Voice1" , gender = "Female" , region = "UK" ),
439
+ Voice (name = "Voice2" , gender = "Female" , region = "IN" ),
440
+ ]
441
+
442
+ tts = TextToSpeechUT ()
443
+
444
+ with patch .object (tts , "get_available_voices" , return_value = voices ):
445
+ results = tts .assign_voices (
446
+ utterance_metadata = utterance_metadata ,
447
+ target_language = "" ,
448
+ target_language_region = target_language_region ,
449
+ )
450
+ assert expected_voices == results
451
+
452
+ @pytest .mark .parametrize (
453
+ "target_language_region, expected_voices" ,
454
+ [
455
+ ("IN" , {1 : "Voice3" , 2 : "Voice3" }),
456
+ ("" , {1 : "Voice1" , 2 : "Voice3" }),
457
+ ],
458
+ )
459
+ def test_assign_voices_single_two_males_single_voice (
460
+ self , target_language_region , expected_voices
461
+ ):
462
+ tts = TextToSpeechUT ()
463
+
464
+ utterance_metadata = [
465
+ {
466
+ "speaker_id" : 1 ,
467
+ "gender" : "Male" ,
468
+ },
469
+ {
470
+ "speaker_id" : 2 ,
471
+ "gender" : "Male" ,
472
+ },
473
+ ]
474
+
475
+ voices = [
476
+ Voice (name = "Voice1" , gender = "Male" , region = "US" ),
477
+ Voice (name = "Voice2" , gender = "Female" , region = "US" ),
478
+ Voice (name = "Voice3" , gender = "Male" , region = "IN" ),
479
+ Voice (name = "Voice4" , gender = "Female" , region = "IN" ),
480
+ ]
481
+
482
+ tts = TextToSpeechUT ()
483
+
484
+ with patch .object (tts , "get_available_voices" , return_value = voices ):
485
+ results = tts .assign_voices (
486
+ utterance_metadata = utterance_metadata ,
487
+ target_language = "" ,
488
+ target_language_region = target_language_region ,
489
+ )
490
+ assert expected_voices == results
491
+
492
+ @pytest .mark .parametrize (
493
+ "target_language_region, expected_voices" ,
494
+ [
495
+ ("IN" , {1 : "Voice3" , 2 : "Voice5" }),
496
+ ("" , {1 : "Voice1" , 2 : "Voice3" }),
497
+ ],
498
+ )
499
+ def test_assign_voices_single_two_males_two_voices (
500
+ self , target_language_region , expected_voices
501
+ ):
502
+ tts = TextToSpeechUT ()
503
+
504
+ utterance_metadata = [
505
+ {
506
+ "speaker_id" : 1 ,
507
+ "gender" : "Male" ,
508
+ },
509
+ {
510
+ "speaker_id" : 2 ,
511
+ "gender" : "Male" ,
512
+ },
513
+ ]
514
+
515
+ voices = [
516
+ Voice (name = "Voice1" , gender = "Male" , region = "US" ),
517
+ Voice (name = "Voice2" , gender = "Female" , region = "UK" ),
518
+ Voice (name = "Voice3" , gender = "Male" , region = "IN" ),
519
+ Voice (name = "Voice4" , gender = "Female" , region = "IN" ),
520
+ Voice (name = "Voice5" , gender = "Male" , region = "IN" ),
521
+ ]
522
+
523
+ tts = TextToSpeechUT ()
524
+
525
+ with patch .object (tts , "get_available_voices" , return_value = voices ):
526
+ results = tts .assign_voices (
527
+ utterance_metadata = utterance_metadata ,
528
+ target_language = "" ,
529
+ target_language_region = target_language_region ,
405
530
)
406
- assert { 1 : "Voice3" } == results
531
+ assert expected_voices == results
407
532
408
533
def _get_update_utterance_metadata (self ):
409
534
return [
0 commit comments