mirror of
https://github.com/storytold/storyteller-ml.git
synced 2026-10-17 00:23:14 +00:00
require instance of phonetization to be passed
This commit is contained in:
@@ -2,13 +2,11 @@ from typing import List
|
||||
from tts.text.pipeline.base_pipeline import BasePipeline
|
||||
from tts.text.pipeline_components.input_parsing.parser import ArpabetSequence, GraphemeSequence, ParsedSequence, parse_grapheme_and_arpabet_sequence
|
||||
from tts.text.pipeline_components.normalization.english_normalization import normalize_english
|
||||
from tts.text.pipeline_components.phonetization.base_phonetization import BasePhonetization
|
||||
from tts.text.pipeline_components.phonetization.cmudict import DEFAULT_CMUDICT_PATH, CMUDict
|
||||
from tts.text.pipeline_components.phonetization.english_phonetization import EnglishPhonetization
|
||||
from tts.text.pipeline_components.sequencing.english_symbols_v1 import SPACE_INTEGER_ENCODING, arpabet_to_sequence, symbols_to_sequence
|
||||
|
||||
_ENGLISH_DICTIONARY = CMUDict(DEFAULT_CMUDICT_PATH)
|
||||
_ENGLISH_PHONETIZER = EnglishPhonetization(_ENGLISH_DICTIONARY)
|
||||
|
||||
class EnglishPipelineV1(BasePipeline):
|
||||
"""
|
||||
This is a new text pipeline for FakeYou that will be introduced in July 2022.
|
||||
@@ -17,6 +15,9 @@ class EnglishPipelineV1(BasePipeline):
|
||||
the model input expectations on both sides match one another.
|
||||
"""
|
||||
|
||||
def __init__(self, phonetization: BasePhonetization):
|
||||
self.phonetization = phonetization
|
||||
|
||||
def user_input_to_sequence(self, input_text: str) -> List[int]:
|
||||
"""Convert raw user input into a numerical sequence for ML inference."""
|
||||
|
||||
@@ -45,7 +46,7 @@ class EnglishPipelineV1(BasePipeline):
|
||||
updated_sequence.append(subsequence)
|
||||
|
||||
elif isinstance(subsequence, GraphemeSequence):
|
||||
converted_sequence = _ENGLISH_PHONETIZER.try_convert_to_phonemes(subsequence.sequence)
|
||||
converted_sequence = self.phonetization.try_convert_to_phonemes(subsequence.sequence)
|
||||
updated_sequence.extend(converted_sequence)
|
||||
|
||||
return updated_sequence
|
||||
|
||||
@@ -1,25 +1,33 @@
|
||||
from tts.text.pipeline.english_pipeline_v1 import EnglishPipelineV1
|
||||
from tts.text.pipeline_components.phonetization.cmudict import DEFAULT_CMUDICT_PATH, CMUDict
|
||||
from tts.text.pipeline_components.phonetization.english_phonetization import EnglishPhonetization
|
||||
|
||||
|
||||
class TestEnglishPipelineV1:
|
||||
|
||||
def build_pipeline_instance(self):
|
||||
# NB: CMUDict used in production may differ
|
||||
cmudict = CMUDict(DEFAULT_CMUDICT_PATH)
|
||||
phonetization = EnglishPhonetization(cmudict)
|
||||
return EnglishPipelineV1(phonetization)
|
||||
|
||||
def test_no_input(self):
|
||||
pipeline = EnglishPipelineV1()
|
||||
pipeline = self.build_pipeline_instance()
|
||||
output = pipeline.user_input_to_sequence("")
|
||||
assert output == []
|
||||
|
||||
def test_whitespace(self):
|
||||
pipeline = EnglishPipelineV1()
|
||||
pipeline = self.build_pipeline_instance()
|
||||
output = pipeline.user_input_to_sequence(" \n \t ")
|
||||
assert output == []
|
||||
|
||||
def test_single_word(self):
|
||||
pipeline = EnglishPipelineV1()
|
||||
pipeline = self.build_pipeline_instance()
|
||||
output = pipeline.user_input_to_sequence("hello")
|
||||
assert output == [106, 73, 117, 123] # NB: Arpabet encoded
|
||||
|
||||
def test_two_words(self):
|
||||
pipeline = EnglishPipelineV1()
|
||||
pipeline = self.build_pipeline_instance()
|
||||
output = pipeline.user_input_to_sequence("hello hello")
|
||||
assert output == [
|
||||
106, 73, 117, 123, # NB: Arpabet encoded
|
||||
@@ -28,7 +36,7 @@ class TestEnglishPipelineV1:
|
||||
]
|
||||
|
||||
def test_two_words_with_arpabet_segment(self):
|
||||
pipeline = EnglishPipelineV1()
|
||||
pipeline = self.build_pipeline_instance()
|
||||
output = pipeline.user_input_to_sequence("hello {HH AH0 L OW1}")
|
||||
assert output == [
|
||||
106, 73, 117, 123, # NB: Arpabet encoded
|
||||
@@ -37,7 +45,7 @@ class TestEnglishPipelineV1:
|
||||
]
|
||||
|
||||
def test_words_and_punctuation(self):
|
||||
pipeline = EnglishPipelineV1()
|
||||
pipeline = self.build_pipeline_instance()
|
||||
output = pipeline.user_input_to_sequence("hello friends, welcome!")
|
||||
assert output == [
|
||||
106, 73, 117, 123, # NB: Arpabet encoded
|
||||
|
||||
Reference in New Issue
Block a user