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
# 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:",
"",