File size: 5,393 Bytes
96154e7
a3fdb3c
96154e7
a3fdb3c
96154e7
 
7f69677
1f58459
7f69677
e98b5e2
048c3fc
db2bd16
048c3fc
 
e98b5e2
a4afe51
5a007ca
d1ed6b1
 
5bf19b3
8047063
5bf19b3
 
 
 
f076d8d
 
 
 
8047063
09be04f
 
 
 
a4afe51
d1ed6b1
a4afe51
7f21bab
 
8047063
5bf19b3
a4afe51
5bf19b3
bd5e759
384e0e2
 
 
bd5e759
6bb0509
8a13c1b
 
bd5e759
 
384e0e2
 
bd5e759
96f91bb
384e0e2
 
96f91bb
bd5e759
384e0e2
 
bd5e759
96f91bb
384e0e2
 
d077be4
 
d5a40dd
384e0e2
d077be4
 
384e0e2
 
d077be4
d1ed6b1
1f58459
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
"""
constants.py

This module defines global constants used throughout the project.
"""

# Standard Library Imports
from typing import Dict, List

# Third-Party Library Imports
from src.custom_types import ComparisonType, OptionKey, OptionLabel, TTSProviderName

CLIENT_ERROR_CODE = 400
SERVER_ERROR_CODE = 500


# UI constants
HUME_AI: TTSProviderName = "Hume AI"
ELEVENLABS: TTSProviderName = "ElevenLabs"
TTS_PROVIDERS: List[TTSProviderName] = ["Hume AI", "ElevenLabs"]

HUME_TO_HUME: ComparisonType = "Hume AI - Hume AI"
HUME_TO_ELEVENLABS: ComparisonType = "Hume AI - ElevenLabs"

CHARACTER_DESCRIPTION_MIN_LENGTH: int = 20
CHARACTER_DESCRIPTION_MAX_LENGTH: int = 1000

TEXT_MIN_LENGTH: int = 100
TEXT_MAX_LENGTH: int = 1000

OPTION_A_KEY: OptionKey = "option_a"
OPTION_B_KEY: OptionKey = "option_b"
OPTION_A_LABEL: OptionLabel = "Option A"
OPTION_B_LABEL: OptionLabel = "Option B"

TROPHY_EMOJI: str = "πŸ†"

SELECT_OPTION_A: str = "Select Option A"
SELECT_OPTION_B: str = "Select Option B"

# A collection of pre-defined character descriptions categorized by theme, used to provide users with
# inspiration for generating creative, expressive text inputs for TTS, and generating novel voices.
SAMPLE_CHARACTER_DESCRIPTIONS: dict = {
    "🧘 Meditation Guru": (
        "The speaker is a mindfulness instructor with a gentle, soothing voice that flows at a slow, measured pace "
        "with natural pauses. Their consistently calm, low-pitched tone has minimal variation, creating a peaceful "
        "auditory experience."
    ),
    "🎬 Noir Detective": (
        "A noir film portrayal of a 1940s private investigator narrating with a low, gravelly voice and deliberate "
        "pacing. Speaks with a cynical, world-weary tone that drops lower when delivering key observations."
    ),
    "πŸ•―οΈ Victorian Ghost Storyteller": (
        "The speaker is a Victorian-era raconteur speaking with a refined British accent and formal, precise diction. "
        "Voice modulates between hushed, tense whispers and dramatic declarations when describing eerie occurrences."
    ),
    "🌿 British Naturalist": (
        "Speaker is a wildlife documentarian speaking with a crisp, articulate British accent and clear enunciation. "
        "Voice alternates between hushed, excited whispers and enthusiastic explanations filled with genuine wonder."
    ),
    "🌟 Texan Storyteller": (
        "The speaker is a woman from rural Texas speaking with a warm voice and distinctive Southern drawl featuring "
        "elongated vowels. Talks unhurriedly with a musical quality and occasional soft laughter."
    ),
    "πŸ„ Surfer Dude": (
        "The speaker is a California surfer talking with a casual, slightly nasal voice and laid-back rhythm. Uses "
        "rising inflections at sentence ends and bursts into spontaneous laughter when excited."
    ),
    "πŸ‘‘ Obnoxious Prince": (
        "Speaker is a prince of England who speaks in a smug and authoritative voice in an obnoxious, proper English "
        "accent. He is insecure, arrogant, and prone to tantrums."
    ),
    "🏰 Medieval Peasant Man": (
        "A film portrayal of a medieval peasant speaking with a thick cockney accent and a worn voice, dripping with "
        "sarcasm and self-effacing humor."
    ),
}


# HTML and social media metadata for the Gradio application
# These tags define SEO-friendly content and provide rich previews when shared on social platforms
META_TAGS: List[Dict[str, str]] = [
    # HTML Meta Tags (description)
    {
        'name': 'description',
        'content': 'An open-source web application for comparing and evaluating the expressiveness of different text-to-speech models, including Hume AI and ElevenLabs.'
    },
    # Facebook Meta Tags
    {
        'property': 'og:url',
        'content': 'https://hume.ai'
    },
    {
        'property': 'og:type',
        'content': 'website'
    },
    {
        'property': 'og:title',
        'content': 'Expressive TTS Arena'
    },
    {
        'property': 'og:description',
        'content': 'An open-source web application for comparing and evaluating the expressiveness of different text-to-speech models, including Hume AI and ElevenLabs.'
    },
    {
        'property': 'og:image',
        'content': 'https://opengraph.b-cdn.net/production/images/7990b8b3-f8ef-4ece-afce-70ca30795f5c.png?token=Ge7_YHHoQRRifYmbBOjex67tCoj3ZoPe_ty5ffWm-n8&height=630&width=1200&expires=33277213515'
    },
    # Twitter Meta Tags
    {
        'name': 'twitter:card',
        'content': 'summary_large_image'
    },
    {
        'property': 'twitter:domain',
        'content': 'hume.ai'
    },
    {
        'property': 'twitter:url',
        'content': 'https://hume.ai'
    },
    {
        'name': 'twitter:creator',
        'content': '@hume_ai'
    },
    {
        'name': 'twitter:title',
        'content': 'Expressive TTS Arena'
    },
    {
        'name': 'twitter:description',
        'content': 'An open-source web application for comparing and evaluating the expressiveness of different text-to-speech models, including Hume AI and ElevenLabs.'
    },
    {
        'name': 'twitter:image',
        'content': 'https://opengraph.b-cdn.net/production/images/7990b8b3-f8ef-4ece-afce-70ca30795f5c.png?token=Ge7_YHHoQRRifYmbBOjex67tCoj3ZoPe_ty5ffWm-n8&height=630&width=1200&expires=33277213515'
    }
]