| import unittest |
|
|
| from TTS.tts.utils.text.characters import BaseCharacters, BaseVocabulary, Graphemes, IPAPhonemes |
|
|
| |
|
|
|
|
| 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_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): |
| """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]" |
|
|
| |
| 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) |
|
|
| |
| 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), " ") |
|
|