Spaces:
Paused
Paused
| import unittest | |
| from TTS.tts.utils.text.characters import BaseCharacters, BaseVocabulary, Graphemes, IPAPhonemes | |
| # pylint: disable=protected-access | |
| class BaseVocabularyTest(unittest.TestCase): | |
| def setUp(self): | |
| self.phonemes = IPAPhonemes() | |
| self.base_vocab = BaseVocabulary( | |
| vocab=self.phonemes._vocab, | |
| pad=self.phonemes.pad, | |
| blank=self.phonemes.blank, | |
| bos=self.phonemes.bos, | |
| eos=self.phonemes.eos, | |
| ) | |
| self.empty_vocab = BaseVocabulary({}) | |
| def test_pad_id(self): | |
| self.assertEqual(self.empty_vocab.pad_id, 0) | |
| self.assertEqual(self.base_vocab.pad_id, self.phonemes.pad_id) | |
| def test_blank_id(self): | |
| self.assertEqual(self.empty_vocab.blank_id, 0) | |
| self.assertEqual(self.base_vocab.blank_id, self.phonemes.blank_id) | |
| def test_vocab(self): | |
| self.assertEqual(self.empty_vocab.vocab, {}) | |
| self.assertEqual(self.base_vocab.vocab, self.phonemes._vocab) | |
| # def test_init_from_config(self): | |
| # ... | |
| def test_num_chars(self): | |
| self.assertEqual(self.empty_vocab.num_chars, 0) | |
| self.assertEqual(self.base_vocab.num_chars, self.phonemes.num_chars) | |
| def test_char_to_id(self): | |
| try: | |
| self.empty_vocab.char_to_id("a") | |
| raise Exception("Should have raised KeyError") | |
| except: | |
| pass | |
| for k in self.phonemes.vocab: | |
| self.assertEqual(self.base_vocab.char_to_id(k), self.phonemes.char_to_id(k)) | |
| def test_id_to_char(self): | |
| try: | |
| self.empty_vocab.id_to_char(0) | |
| raise Exception("Should have raised KeyError") | |
| except: | |
| pass | |
| for k in self.phonemes.vocab: | |
| v = self.phonemes.char_to_id(k) | |
| self.assertEqual(self.base_vocab.id_to_char(v), self.phonemes.id_to_char(v)) | |
| class BaseCharacterTest(unittest.TestCase): | |
| def setUp(self): | |
| self.characters_empty = BaseCharacters("", "", pad="", eos="", bos="", blank="", is_unique=True, is_sorted=True) | |
| def test_default_character_sets(self): # pylint: disable=no-self-use | |
| """Test initiation of default character sets""" | |
| _ = IPAPhonemes() | |
| _ = Graphemes() | |
| def test_unique(self): | |
| """Test if the unique option works""" | |
| self.characters_empty.characters = "abcc" | |
| self.characters_empty.punctuations = ".,;:!? " | |
| self.characters_empty.pad = "[PAD]" | |
| self.characters_empty.eos = "[EOS]" | |
| self.characters_empty.bos = "[BOS]" | |
| self.characters_empty.blank = "[BLANK]" | |
| self.assertEqual( | |
| self.characters_empty.num_chars, | |
| len(["[PAD]", "[EOS]", "[BOS]", "[BLANK]", "a", "b", "c", ".", ",", ";", ":", "!", "?", " "]), | |
| ) | |
| def test_unique_sorted(self): | |
| """Test if the unique and sorted option works""" | |
| self.characters_empty.characters = "cba" | |
| self.characters_empty.punctuations = ".,;:!? " | |
| self.characters_empty.pad = "[PAD]" | |
| self.characters_empty.eos = "[EOS]" | |
| self.characters_empty.bos = "[BOS]" | |
| self.characters_empty.blank = "[BLANK]" | |
| self.assertEqual( | |
| self.characters_empty.num_chars, | |
| len(["[PAD]", "[EOS]", "[BOS]", "[BLANK]", "a", "b", "c", ".", ",", ";", ":", "!", "?", " "]), | |
| ) | |
| def test_setters_getters(self): | |
| """Test the class setters behaves as expected""" | |
| self.characters_empty.characters = "abc" | |
| self.assertEqual(self.characters_empty._characters, "abc") | |
| self.assertEqual(self.characters_empty.vocab, ["a", "b", "c"]) | |
| self.characters_empty.punctuations = ".,;:!? " | |
| self.assertEqual(self.characters_empty._punctuations, ".,;:!? ") | |
| self.assertEqual(self.characters_empty.vocab, ["a", "b", "c", ".", ",", ";", ":", "!", "?", " "]) | |
| self.characters_empty.pad = "[PAD]" | |
| self.assertEqual(self.characters_empty._pad, "[PAD]") | |
| self.assertEqual(self.characters_empty.vocab, ["[PAD]", "a", "b", "c", ".", ",", ";", ":", "!", "?", " "]) | |
| self.characters_empty.eos = "[EOS]" | |
| self.assertEqual(self.characters_empty._eos, "[EOS]") | |
| self.assertEqual( | |
| self.characters_empty.vocab, ["[PAD]", "[EOS]", "a", "b", "c", ".", ",", ";", ":", "!", "?", " "] | |
| ) | |
| self.characters_empty.bos = "[BOS]" | |
| self.assertEqual(self.characters_empty._bos, "[BOS]") | |
| self.assertEqual( | |
| self.characters_empty.vocab, ["[PAD]", "[EOS]", "[BOS]", "a", "b", "c", ".", ",", ";", ":", "!", "?", " "] | |
| ) | |
| self.characters_empty.blank = "[BLANK]" | |
| self.assertEqual(self.characters_empty._blank, "[BLANK]") | |
| self.assertEqual( | |
| self.characters_empty.vocab, | |
| ["[PAD]", "[EOS]", "[BOS]", "[BLANK]", "a", "b", "c", ".", ",", ";", ":", "!", "?", " "], | |
| ) | |
| self.assertEqual( | |
| self.characters_empty.num_chars, | |
| len(["[PAD]", "[EOS]", "[BOS]", "[BLANK]", "a", "b", "c", ".", ",", ";", ":", "!", "?", " "]), | |
| ) | |
| self.characters_empty.print_log() | |
| def test_char_lookup(self): | |
| """Test char to ID and ID to char conversion""" | |
| self.characters_empty.characters = "abc" | |
| self.characters_empty.punctuations = ".,;:!? " | |
| self.characters_empty.pad = "[PAD]" | |
| self.characters_empty.eos = "[EOS]" | |
| self.characters_empty.bos = "[BOS]" | |
| self.characters_empty.blank = "[BLANK]" | |
| # char to ID | |
| self.assertEqual(self.characters_empty.char_to_id("[PAD]"), 0) | |
| self.assertEqual(self.characters_empty.char_to_id("[EOS]"), 1) | |
| self.assertEqual(self.characters_empty.char_to_id("[BOS]"), 2) | |
| self.assertEqual(self.characters_empty.char_to_id("[BLANK]"), 3) | |
| self.assertEqual(self.characters_empty.char_to_id("a"), 4) | |
| self.assertEqual(self.characters_empty.char_to_id("b"), 5) | |
| self.assertEqual(self.characters_empty.char_to_id("c"), 6) | |
| self.assertEqual(self.characters_empty.char_to_id("."), 7) | |
| self.assertEqual(self.characters_empty.char_to_id(","), 8) | |
| self.assertEqual(self.characters_empty.char_to_id(";"), 9) | |
| self.assertEqual(self.characters_empty.char_to_id(":"), 10) | |
| self.assertEqual(self.characters_empty.char_to_id("!"), 11) | |
| self.assertEqual(self.characters_empty.char_to_id("?"), 12) | |
| self.assertEqual(self.characters_empty.char_to_id(" "), 13) | |
| # ID to char | |
| self.assertEqual(self.characters_empty.id_to_char(0), "[PAD]") | |
| self.assertEqual(self.characters_empty.id_to_char(1), "[EOS]") | |
| self.assertEqual(self.characters_empty.id_to_char(2), "[BOS]") | |
| self.assertEqual(self.characters_empty.id_to_char(3), "[BLANK]") | |
| self.assertEqual(self.characters_empty.id_to_char(4), "a") | |
| self.assertEqual(self.characters_empty.id_to_char(5), "b") | |
| self.assertEqual(self.characters_empty.id_to_char(6), "c") | |
| self.assertEqual(self.characters_empty.id_to_char(7), ".") | |
| self.assertEqual(self.characters_empty.id_to_char(8), ",") | |
| self.assertEqual(self.characters_empty.id_to_char(9), ";") | |
| self.assertEqual(self.characters_empty.id_to_char(10), ":") | |
| self.assertEqual(self.characters_empty.id_to_char(11), "!") | |
| self.assertEqual(self.characters_empty.id_to_char(12), "?") | |
| self.assertEqual(self.characters_empty.id_to_char(13), " ") | |