mirror of
https://github.com/storytold/storyteller-ml.git
synced 2026-10-28 09:08:54 +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.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.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.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.cmudict import DEFAULT_CMUDICT_PATH, CMUDict
|
||||||
from tts.text.pipeline_components.phonetization.english_phonetization import EnglishPhonetization
|
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
|
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):
|
class EnglishPipelineV1(BasePipeline):
|
||||||
"""
|
"""
|
||||||
This is a new text pipeline for FakeYou that will be introduced in July 2022.
|
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.
|
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]:
|
def user_input_to_sequence(self, input_text: str) -> List[int]:
|
||||||
"""Convert raw user input into a numerical sequence for ML inference."""
|
"""Convert raw user input into a numerical sequence for ML inference."""
|
||||||
|
|
||||||
@@ -45,7 +46,7 @@ class EnglishPipelineV1(BasePipeline):
|
|||||||
updated_sequence.append(subsequence)
|
updated_sequence.append(subsequence)
|
||||||
|
|
||||||
elif isinstance(subsequence, GraphemeSequence):
|
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)
|
updated_sequence.extend(converted_sequence)
|
||||||
|
|
||||||
return updated_sequence
|
return updated_sequence
|
||||||
|
|||||||
@@ -1,25 +1,33 @@
|
|||||||
from tts.text.pipeline.english_pipeline_v1 import EnglishPipelineV1
|
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:
|
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):
|
def test_no_input(self):
|
||||||
pipeline = EnglishPipelineV1()
|
pipeline = self.build_pipeline_instance()
|
||||||
output = pipeline.user_input_to_sequence("")
|
output = pipeline.user_input_to_sequence("")
|
||||||
assert output == []
|
assert output == []
|
||||||
|
|
||||||
def test_whitespace(self):
|
def test_whitespace(self):
|
||||||
pipeline = EnglishPipelineV1()
|
pipeline = self.build_pipeline_instance()
|
||||||
output = pipeline.user_input_to_sequence(" \n \t ")
|
output = pipeline.user_input_to_sequence(" \n \t ")
|
||||||
assert output == []
|
assert output == []
|
||||||
|
|
||||||
def test_single_word(self):
|
def test_single_word(self):
|
||||||
pipeline = EnglishPipelineV1()
|
pipeline = self.build_pipeline_instance()
|
||||||
output = pipeline.user_input_to_sequence("hello")
|
output = pipeline.user_input_to_sequence("hello")
|
||||||
assert output == [106, 73, 117, 123] # NB: Arpabet encoded
|
assert output == [106, 73, 117, 123] # NB: Arpabet encoded
|
||||||
|
|
||||||
def test_two_words(self):
|
def test_two_words(self):
|
||||||
pipeline = EnglishPipelineV1()
|
pipeline = self.build_pipeline_instance()
|
||||||
output = pipeline.user_input_to_sequence("hello hello")
|
output = pipeline.user_input_to_sequence("hello hello")
|
||||||
assert output == [
|
assert output == [
|
||||||
106, 73, 117, 123, # NB: Arpabet encoded
|
106, 73, 117, 123, # NB: Arpabet encoded
|
||||||
@@ -28,7 +36,7 @@ class TestEnglishPipelineV1:
|
|||||||
]
|
]
|
||||||
|
|
||||||
def test_two_words_with_arpabet_segment(self):
|
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}")
|
output = pipeline.user_input_to_sequence("hello {HH AH0 L OW1}")
|
||||||
assert output == [
|
assert output == [
|
||||||
106, 73, 117, 123, # NB: Arpabet encoded
|
106, 73, 117, 123, # NB: Arpabet encoded
|
||||||
@@ -37,7 +45,7 @@ class TestEnglishPipelineV1:
|
|||||||
]
|
]
|
||||||
|
|
||||||
def test_words_and_punctuation(self):
|
def test_words_and_punctuation(self):
|
||||||
pipeline = EnglishPipelineV1()
|
pipeline = self.build_pipeline_instance()
|
||||||
output = pipeline.user_input_to_sequence("hello friends, welcome!")
|
output = pipeline.user_input_to_sequence("hello friends, welcome!")
|
||||||
assert output == [
|
assert output == [
|
||||||
106, 73, 117, 123, # NB: Arpabet encoded
|
106, 73, 117, 123, # NB: Arpabet encoded
|
||||||
|
|||||||
Reference in New Issue
Block a user