|
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), " ")
|
|
|