diff --git a/scripts/download_diverse_voices.py b/scripts/download_diverse_voices.py index c303769..3b24fe2 100644 --- a/scripts/download_diverse_voices.py +++ b/scripts/download_diverse_voices.py @@ -27,7 +27,7 @@ except ImportError: # Curated for voice diversity - different genders, tones, pacing # Format: speaker_id: (gender, description) SPEAKERS = { - # Female speakers + # Female speakers (11) "1089": ("female", "neutral, balanced - clear professional delivery"), "1188": ("female", "warm, friendly - approachable delivery"), "1221": ("female", "expressive, storyteller - engaging narration"), @@ -38,8 +38,9 @@ SPEAKERS = { "4507": ("female", "young, clear - crisp enunciation"), "5142": ("female", "warm, conversational - natural flow"), "6829": ("female", "crisp, articulate - precise diction"), + "6930": ("female", "smooth, polished - radio-style delivery"), - # Male speakers + # Male speakers (10) "1284": ("male", "clear, measured - precise enunciation"), "1580": ("male", "clear narrator - smooth reading style"), "2094": ("male", "warm baritone - rich and resonant"), @@ -52,35 +53,33 @@ SPEAKERS = { "7176": ("male", "warm storyteller - engaging narrative"), } -# Map voice names to speakers -# OpenAI standard: alloy, echo, fable, onyx, nova, shimmer -# Extended: amber, breeze, coral, dawn, ember, frost, glow, haze, ivy, jade, kite, lark, mist, nectar +# 21 voices: gendered names that match the speaker +# Female names for female speakers, male names for male speakers VOICE_MAP = { - # Standard voices - mix of male and female - "alloy": "1089", # F - neutral, balanced - "echo": "1284", # M - clear, measured - "fable": "1221", # F - expressive, storyteller - "onyx": "5639", # M - deep, dramatic - "nova": "1188", # F - warm, friendly - "shimmer": "1320", # F - soft, gentle + # Female voices (11) + "aria": "1089", # F - neutral, balanced + "clara": "1188", # F - warm, friendly + "elena": "1221", # F - expressive, storyteller + "grace": "1320", # F - soft, gentle + "hazel": "3575", # F - calm, neutral + "iris": "4507", # F - young, clear + "luna": "3570", # F - bright, energetic + "maya": "5142", # F - warm, conversational + "ruby": "4446", # F - mature, authoritative + "sage": "6829", # F - crisp, articulate + "sofia": "6930", # F - smooth, polished - # Extended female voices - "amber": "5142", # F - warm, conversational - "breeze": "3570", # F - bright, energetic - "coral": "4446", # F - mature, authoritative - "dawn": "6829", # F - crisp, articulate - "glow": "3575", # F - calm, neutral - "ivy": "4507", # F - young, clear - - # Extended male voices - "ember": "2094", # M - warm baritone - "frost": "4970", # M - smooth announcer - "haze": "7021", # M - light, conversational - "jade": "4077", # M - mature, professor - "kite": "2830", # M - young, energetic - "lark": "7176", # M - warm storyteller - "mist": "5105", # M - neutral, clear - "nectar": "1580", # M - clear narrator + # Male voices (10) + "atlas": "5639", # M - deep, dramatic + "caleb": "1284", # M - clear, measured + "felix": "7021", # M - light, conversational + "hugo": "7176", # M - warm storyteller + "jasper": "4077", # M - mature, professor + "kai": "2830", # M - young, energetic + "leo": "4970", # M - smooth announcer + "marcus": "2094", # M - warm baritone + "owen": "5105", # M - neutral, clear + "theo": "1580", # M - clear narrator } @@ -211,12 +210,11 @@ def main(): "# Diverse voice samples from LibriSpeech test-clean (public domain)", "# Each voice is a DISTINCT SPEAKER for Qwen3-TTS voice cloning", "#", - "# Standard voices: alloy, echo, fable, onyx, nova, shimmer", - "# Extended voices: amber, breeze, coral, dawn, ember, frost,", - "# glow, haze, ivy, jade, kite, lark, mist, nectar", + "# Female voices: aria, clara, elena, grace, hazel, iris, luna, maya, ruby, sage, sofia", + "# Male voices: atlas, caleb, felix, hugo, jasper, kai, leo, marcus, owen, theo", "#", "# Source: LibriSpeech test-clean (public domain, LibriVox recordings)", - "# 20 distinct speakers (10 female, 10 male)", + "# 21 distinct speakers (11 female, 10 male)", "", "tts-1-qwen:", "",