Use gendered voice names: 11 female + 10 male = 21 distinct voices

This commit is contained in:
russell@unturf.com 2026-01-27 12:07:31 -05:00
parent 4c5b42c062
commit cd60e31aa2

View file

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