Source code for banterbot.models.azure_neural_voice_profile

from dataclasses import dataclass
from typing import Optional

from azure.cognitiveservices.speech import SynthesisVoiceGender


[docs] @dataclass class AzureNeuralVoiceProfile: """ A dataclass representing an Azure Neural Voice profile for speech synthesis. Attributes: country (str): The country where the voice is commonly used. description (str): A brief description of the voice profile. gender (SynthesisVoiceGender): The gender of the voice. language (str): The language of the voice. locale (str): The name of the language's locale (i.e., language-country[-region]). name (str): The name of the voice profile. region (str): The region where the voice is available or commonly used. short_name (str): The voice identifier used by Azure Text-to-Speech API. style_list (list[str]): The available styles (i.e., tones/emotions) for the voice. """ country: str description: str gender: SynthesisVoiceGender language: str locale: str name: str short_name: str style_list: list[str] region: Optional[str] = None def __post_init__(self): if len(self.style_list) == 1 and not self.style_list[0].strip(): self.style_list = [] def __str__(self): styles = f"{', '.join(self.style_list)}" if self.style_list else "None" return ( f"Azure Neural Voice Profile - {self.name}:\n" f"Locale: {self.locale}\n" f"Gender: {self.gender.name}\n" f"Styles: {styles}" ) def __repr__(self): return ( f"AzureNeuralVoice(country={self.country!r}, description={self.description!r}, " f"gender={self.gender!r}, language={self.language!r}, " f"locale={self.locale!r}, name={self.name!r}, region={self.region!r}, " f"short_name={self.short_name!r}, style_list={self.style_list!r})" )