|
import pytest |
|
from tensorflow_tts.processor.base_processor import BaseProcessor, DataProcessorError |
|
import string |
|
from dataclasses import dataclass |
|
from shutil import copyfile |
|
|
|
|
|
@dataclass |
|
class LJ(BaseProcessor): |
|
def get_one_sample(self, item): |
|
sample = { |
|
"raw_text": None, |
|
"text_ids": None, |
|
"audio": None, |
|
"utt_id": None, |
|
"speaker_name": None, |
|
"rate": None, |
|
} |
|
return sample |
|
|
|
def text_to_sequence(self, text): |
|
return ["0"] |
|
|
|
def setup_eos_token(self): |
|
return None |
|
|
|
def save_pretrained(self, saved_path): |
|
return super().save_pretrained(saved_path) |
|
|
|
|
|
@pytest.fixture |
|
def processor(tmpdir): |
|
copyfile("test/files/train.txt", f"{tmpdir}/train.txt") |
|
processor = LJ(data_dir=tmpdir, symbols=list(string.ascii_lowercase)) |
|
return processor |
|
|
|
|
|
@pytest.fixture |
|
def mapper_processor(tmpdir): |
|
copyfile("test/files/train.txt", f"{tmpdir}/train.txt") |
|
copyfile("test/files/mapper.json", f"{tmpdir}/mapper.json") |
|
processor = LJ(data_dir=tmpdir, loaded_mapper_path=f"{tmpdir}/mapper.json") |
|
return processor |
|
|
|
|
|
def test_items_creation(processor): |
|
|
|
assert processor.items[0][0] == "in fact its just a test." |
|
assert processor.items[1][0] == "in fact its just a speaker number one." |
|
|
|
|
|
assert processor.items[0][1].split("/")[-1] == "libri1.wav" |
|
assert processor.items[1][1].split("/")[-1] == "libri2.wav" |
|
|
|
|
|
assert processor.items[0][2] == "One" |
|
assert processor.items[1][2] == "Two" |
|
|
|
|
|
def test_mapper(processor): |
|
|
|
assert processor.symbol_to_id["a"] == 0 |
|
|
|
|
|
assert processor.id_to_symbol[0] == "a" |
|
|
|
|
|
assert processor.speakers_map["One"] == 0 |
|
assert processor.speakers_map["Two"] == 1 |
|
|
|
|
|
def test_adding_symbols(processor): |
|
|
|
assert processor.symbol_to_id["a"] == 0 |
|
|
|
|
|
assert processor.id_to_symbol[0] == "a" |
|
|
|
old_processor_len = len(processor.symbols) |
|
|
|
|
|
processor.add_symbol("O_O") |
|
|
|
assert processor.symbol_to_id["a"] == 0 |
|
assert ( |
|
processor.symbol_to_id["O_O"] == len(processor.symbols) - 1 |
|
) |
|
|
|
assert processor.id_to_symbol[0] == "a" |
|
assert processor.id_to_symbol[len(processor.symbols) - 1] == "O_O" |
|
|
|
assert old_processor_len == len(processor.symbols) - 1 |
|
|
|
|
|
def test_loading_mapper(mapper_processor): |
|
assert mapper_processor.symbol_to_id["a"] == 0 |
|
assert mapper_processor.symbol_to_id["@ph"] == 2 |
|
|
|
assert mapper_processor.speakers_map["test_one"] == 0 |
|
assert mapper_processor.speakers_map["test_two"] == 1 |
|
|
|
assert mapper_processor.id_to_symbol[0] == "a" |
|
assert mapper_processor.id_to_symbol[2] == "@ph" |
|
|
|
|
|
with pytest.raises(DataProcessorError): |
|
failed = LJ(data_dir="test/files") |
|
|