Spaces:
Running
Running
| import ModelInterfaces | |
| import torch | |
| import numpy as np | |
| import epitran | |
| import eng_to_ipa | |
| from constants import app_logger | |
| def get_phonem_converter(language: str): | |
| """ | |
| Get the phoneme converter for the specified language. | |
| Args: | |
| language (str): The language code (e.g., 'de' for German, 'en' for English). | |
| Returns: | |
| ModelInterfaces.ITextToPhonemModel: The phoneme converter for the specified language. | |
| Raises: | |
| ValueError: If the language is not implemented. | |
| """ | |
| if language == 'de': | |
| phonem_converter = EpitranPhonemConverter( | |
| epitran.Epitran('deu-Latn')) | |
| elif language == 'en': | |
| phonem_converter = EngPhonemConverter() | |
| else: | |
| raise ValueError('Language not implemented') | |
| return phonem_converter | |
| class EpitranPhonemConverter(ModelInterfaces.ITextToPhonemModel): | |
| """ | |
| A phoneme converter using the Epitran library for transliteration. | |
| """ | |
| word_locations_in_samples = None | |
| audio_transcript = None | |
| def __init__(self, epitran_model) -> None: | |
| """ | |
| Initialize the EpitranPhonemConverter with an Epitran model. | |
| Args: | |
| epitran_model: The Epitran model for transliteration. | |
| """ | |
| super().__init__() | |
| self.epitran_model = epitran_model | |
| def convertToPhonem(self, sentence: str) -> str: | |
| """ | |
| Convert a sentence to its phoneme representation. | |
| Args: | |
| sentence (str): The input sentence. | |
| Returns: | |
| str: The phoneme representation of the sentence. | |
| """ | |
| app_logger.debug(f'starting EpitranPhonemConverter.convertToPhonem for sentence/token "{sentence}"...') | |
| phonem_representation = self.epitran_model.transliterate(sentence) | |
| app_logger.debug(f'EpitranPhonemConverter: got phonem_representation for sentence/token "{sentence}"!') | |
| return phonem_representation | |
| class EngPhonemConverter(ModelInterfaces.ITextToPhonemModel): | |
| """ | |
| A phoneme converter for English using the eng\_to\_ipa library. | |
| """ | |
| def __init__(self,) -> None: | |
| """ | |
| Initialize the EngPhonemConverter. | |
| """ | |
| super().__init__() | |
| def convertToPhonem(self, sentence: str) -> str: | |
| """ | |
| Convert a sentence to its phoneme representation. | |
| Args: | |
| sentence (str): The input sentence. | |
| Returns: | |
| str: The phoneme representation of the sentence. | |
| """ | |
| app_logger.debug(f'starting EngPhonemConverter.convertToPhonem for sentence/token "{sentence}"...') | |
| phonem_representation = eng_to_ipa.convert(sentence) | |
| phonem_representation = phonem_representation.replace('*','') | |
| app_logger.debug(f'EngPhonemConverter: got phonem_representation for sentence/token "{sentence}"!') | |
| return phonem_representation | |