magpie-tts-studio / tests /test_studio.py
mbovingfred's picture
Upload folder using huggingface_hub
0ae5e04 verified
Raw
History Blame Contribute Delete
3.03 kB
import unittest
from studio import (
LANGUAGE_MAP,
MAX_TEXT_LENGTH,
SAMPLE_RATE,
SPEAKER_MAP,
estimate_gpu_duration,
result_summary,
validate_request,
)
class StudioConfigurationTests(unittest.TestCase):
def test_all_twelve_languages_are_exposed(self):
self.assertEqual(len(LANGUAGE_MAP), 12)
self.assertEqual(
set(LANGUAGE_MAP.values()),
{"ar-MSA", "de", "en", "es", "fr", "hi", "it", "ja", "ko", "pt-BR", "vi", "zh"},
)
def test_all_five_voices_map_to_unique_indices(self):
self.assertEqual(set(SPEAKER_MAP), {"Aria", "Jason", "John", "Leo", "Sofia"})
self.assertEqual(set(SPEAKER_MAP.values()), set(range(5)))
def test_sample_rate_is_22050_hz(self):
self.assertEqual(SAMPLE_RATE, 22_050)
class RequestValidationTests(unittest.TestCase):
def test_valid_request_is_stripped_and_punctuated(self):
request = validate_request(" Hello world ", "English", "Sofia", True)
self.assertEqual(request.text, "Hello world.")
self.assertEqual(request.language_code, "en")
self.assertEqual(request.speaker_index, 4)
self.assertTrue(request.apply_text_normalization)
def test_supported_non_latin_punctuation_is_preserved(self):
request = validate_request("こんにけは。", "Japanese Β· ζ—₯本θͺž", "Aria", False)
self.assertEqual(request.text, "こんにけは。")
self.assertFalse(request.apply_text_normalization)
def test_empty_input_is_rejected(self):
for value in (None, "", " "):
with self.subTest(value=value), self.assertRaisesRegex(ValueError, "Enter some text"):
validate_request(value, "English", "Sofia", True)
def test_too_long_input_is_rejected(self):
with self.assertRaisesRegex(ValueError, str(MAX_TEXT_LENGTH)):
validate_request("x" * (MAX_TEXT_LENGTH + 1), "English", "Sofia", True)
def test_unknown_language_is_rejected(self):
with self.assertRaisesRegex(ValueError, "supported languages"):
validate_request("Hello", "Klingon", "Sofia", True)
def test_unknown_speaker_is_rejected(self):
with self.assertRaisesRegex(ValueError, "available Magpie voices"):
validate_request("Hello", "English", "Unknown", True)
class RuntimeHelperTests(unittest.TestCase):
def test_duration_estimate_is_bounded_and_scales(self):
self.assertEqual(estimate_gpu_duration("short"), 20)
self.assertGreater(estimate_gpu_duration("x" * 300), 20)
self.assertEqual(estimate_gpu_duration("x" * 10_000), 75)
def test_result_summary_contains_generation_metadata(self):
summary = result_summary("English", "Sofia", 42, 3.26)
self.assertIn("English", summary)
self.assertIn("Sofia", summary)
self.assertIn("42 chars", summary)
self.assertIn("22.05 kHz", summary)
self.assertIn("3.3s inference", summary)
if __name__ == "__main__":
unittest.main()