From 1722b1659af5870f53bf8f03164173abdaea1ffe Mon Sep 17 00:00:00 2001 From: Eren Golge Date: Wed, 21 Nov 2018 18:01:35 +0100 Subject: [PATCH] phonem updates --- datasets/TTSDataset.py | 4 ++-- utils/text/__init__.py | 33 +++++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/datasets/TTSDataset.py b/datasets/TTSDataset.py index 36dde917..c48b9234 100644 --- a/datasets/TTSDataset.py +++ b/datasets/TTSDataset.py @@ -6,7 +6,7 @@ import torch import random from torch.utils.data import Dataset -from utils.text import text_to_sequence, phoneme_to_sequence +from utils.text import text_to_sequence, phonem_to_sequence from utils.data import (prepare_data, pad_per_step, prepare_tensor, prepare_stop_target) @@ -87,7 +87,7 @@ class MyDataset(Dataset): else: text, wav_file = self.items[idx] text = np.asarray( - phoneme_to_sequence(text, [self.cleaners]), dtype=np.int32) + phonem_to_sequence(text, [self.cleaners]), dtype=np.int32) wav = np.asarray(self.load_wav(wav_file), dtype=np.float32) sample = {'text': text, 'wav': wav, 'item_idx': self.items[idx][1]} return sample diff --git a/utils/text/__init__.py b/utils/text/__init__.py index 0ff3110f..bbde1d04 100644 --- a/utils/text/__init__.py +++ b/utils/text/__init__.py @@ -3,11 +3,7 @@ import re import phonemizer from utils.text import cleaners -<<<<<<< HEAD from utils.text.symbols import symbols, phonemes, _punctuations -======= -from utils.text.symbols import symbols, phonemes ->>>>>>> phonem extraction for training # Mappings from symbol to numeric ID and vice versa: _symbol_to_id = {s: i for i, s in enumerate(symbols)} @@ -71,9 +67,18 @@ def sequence_to_phoneme(sequence): return result.replace('}{', ' ') -def phoneme_to_sequence(text, cleaner_names): +def phonem_to_sequence(text, cleaner_names): + ''' + TODO: This ignores punctuations + ''' sequence = [] - sequence += _phonem_to_sequence(_clean_text(text, cleaner_names)) + clean_text = _clean_text(text, cleaner_names) + for word in clean_text.split(): + phonems_text = text2phone(word) + if phonems_text == None: + continue + sequence += _phonem_to_sequence(phonems_text) + sequence.append(_phonemes_to_id[' ']) sequence.append(_phonemes_to_id['~']) return sequence @@ -122,6 +127,17 @@ def sequence_to_text(sequence): return result.replace('}{', ' ') +def sequence_to_phonem(sequence): + '''Converts a sequence of IDs back to a string''' + result = '' + for symbol_id in sequence: + if symbol_id in _id_to_phonemes: + s = _id_to_phonemes[symbol_id] + print(s) + result += s + return result.replace('}{', ' ') + + def _clean_text(text, cleaner_names): for name in cleaner_names: cleaner = getattr(cleaners, name) @@ -135,8 +151,13 @@ def _symbols_to_sequence(symbols): return [_symbol_to_id[s] for s in symbols if _should_keep_symbol(s)] +<<<<<<< HEAD def _phoneme_to_sequence(phonemes): return [_phonemes_to_id[s] for s in list(phonemes) if _should_keep_phoneme(s)] +======= +def _phonem_to_sequence(phonemes): + return [_phonemes_to_id[s] for s in phonemes.split(" ") if _should_keep_phonem(s)] +>>>>>>> phonem updates def _arpabet_to_sequence(text):