LANGUAGE_VOICE_MAPPING = { "Assamese": ["Amit", "Sita"], "Bengali": ["Arjun", "Aditi"], "Bodo": ["Bikram", "Maya"], "Chhattisgarhi": ["Bhanu", "Champa"], "Dogri": ["Karan"], "English": ["Thoma", "Mary"], "Gujarati": ["Yash", "Neha"], "Hindi": ["Rohit", "Divya"], "Kannada": ["Suresh", "Anu"], "Malayalam": ["Anjali", "Harish"], "Manipuri": ["Laishram", "Ranjit"], "Marathi": ["Sanjay", "Sunita"], "Nepali": ["Amrita"], "Odia": ["Manas", "Debjani"], "Punjabi": ["Divjot", "Gurpreet"], "Sanskrit": ["Aryan"], "Tamil": ["Jaya", "Kavitha"], "Telugu": ["Prakash", "Lalitha"] } # Voice characteristics for each speaker VOICE_CHARACTERISTICS = { "Amit": "slightly deep and resonant", "Sita": "clear and well-paced", "Arjun": "moderate and clear", "Aditi": "high-pitched and expressive", "Bikram": "higher-pitched and energetic", "Maya": "balanced and pleasant", "Bhanu": "warm and measured", "Champa": "clear and gentle", "Karan": "high-pitched and engaging", "Thoma": "clear and well-articulated", "Mary": "pleasant and measured", "Yash": "warm and balanced", "Neha": "clear and dynamic", "Rohit": "moderate and expressive", "Divya": "pleasant and well-paced", "Suresh": "clear and precise", "Anu": "warm and melodious", "Anjali": "high-pitched and pleasant", "Harish": "deep and measured", "Laishram": "balanced and smooth", "Ranjit": "clear and authoritative", "Sanjay": "deep and authoritative", "Sunita": "high-pitched and pleasant", "Amrita": "high-pitched and gentle", "Manas": "moderate and measured", "Debjani": "clear and pleasant", "Divjot": "clear and dynamic", "Gurpreet": "warm and balanced", "Aryan": "resonant and measured", "Jaya": "high-pitched and melodious", "Kavitha": "clear and expressive", "Prakash": "clear and well-paced", "Lalitha": "pleasant and melodious" } # Emotion descriptions EMOTION_DESC = { "Neutral": "maintaining a balanced and natural tone", "Happy": "with a warm and positive energy", "Sad": "with a gentle and somber tone", "Angry": "with intense and strong delivery", "Highly Expressive": "with dynamic and vibrant emotional delivery", "Monotone": "with minimal tonal variation" } # Speed descriptions SPEED_DESC = { "Very Slow": "at an extremely measured pace", "Slow": "at a measured, deliberate pace", "Normal": "at a natural, comfortable pace", "Fast": "at a swift, dynamic pace", "Very Fast": "at a rapid, accelerated pace" } # Pitch modifiers PITCH_DESC = { "Very Low": "in an extremely deep register", "Low": "in a deeper register", "Medium": "in a natural pitch range", "High": "in a higher register", "Very High": "in an extremely high register" } BACKGROUND_NOISE_DESC = { "None": "with absolutely no background noise", "Minimal": "with minimal background noise", "Moderate": "with moderate ambient noise", "Noticeable": "with noticeable background sounds" } REVERBERATION_DESC = { "Very Close": "in an extremely intimate setting", "Close": "in a close-sounding environment", "Moderate": "in a moderately spacious environment", "Distant": "in a spacious, reverberant setting", "Very Distant": "in a very large, echoing space" } QUALITY_DESC = { "Basic": "in basic audio quality", "Good": "in good audio quality", "High": "in high audio quality", "Studio": "in professional studio quality" } def construct_description( speaker, language, emotion="Neutral", speed="Normal", pitch="Medium", background_noise="Minimal", reverberation="Close", quality="High" ): """ Constructs a comprehensive description for the TTS model based on all available parameters. Args: speaker (str): The name of the speaker language (str): The language being spoken emotion (str): The emotional tone speed (str): The speaking speed pitch (str): The pitch level background_noise (str): Level of background noise reverberation (str): Distance/space effect quality (str): Audio quality level Returns: str: A detailed description for the TTS model """ description = ( f"{speaker} speaks in {language} {VOICE_CHARACTERISTICS.get(speaker, 'with clear articulation')} " f"{PITCH_DESC[pitch]}, {EMOTION_DESC[emotion]} {SPEED_DESC[speed]}. " f"The recording is {REVERBERATION_DESC[reverberation]}, {BACKGROUND_NOISE_DESC[background_noise]}, " f"captured {QUALITY_DESC[quality]}." ) return description def get_speakers_for_language(language): """ Get the list of recommended speakers for a given language. Args: language (str): The language to get speakers for Returns: list: List of recommended speakers for the language """ return LANGUAGE_VOICE_MAPPING.get(language, [])