mirror config.py
Browse files
config.py
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""glossolalia: Coherence Dial configuration."""
|
| 2 |
+
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
|
| 5 |
+
PROJECT_ROOT = Path(__file__).resolve().parent
|
| 6 |
+
DATA_ROOT = PROJECT_ROOT / "data"
|
| 7 |
+
ADAPTERS_ROOT = PROJECT_ROOT / "adapters"
|
| 8 |
+
STATIC_ROOT = PROJECT_ROOT / "static"
|
| 9 |
+
|
| 10 |
+
# TTS base + adapter
|
| 11 |
+
TTS_MODEL_HF = "SWivid/F5-TTS" # F5-TTS, ~336M, voice-cloning + IPA input
|
| 12 |
+
TTS_MODEL_VARIANT = "F5TTS_v1_Base"
|
| 13 |
+
|
| 14 |
+
LORA_CONFIG = {
|
| 15 |
+
"r": 16,
|
| 16 |
+
"lora_alpha": 16,
|
| 17 |
+
"lora_dropout": 0.05,
|
| 18 |
+
"target_modules": ["to_q", "to_k", "to_v", "to_out.0"],
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
# Dial config: control token = "<CONTROL_STEM> <LEVEL_WORDS[level]>"
|
| 22 |
+
CONTROL_STEM = "tongues"
|
| 23 |
+
LEVEL_WORDS = ["zero", "one", "two", "three", "four"]
|
| 24 |
+
LEVEL_P = [0.0, 0.25, 0.50, 0.75, 1.0] # phoneme substitution probability per level
|
| 25 |
+
|
| 26 |
+
# Voice presets (reference clips for F5-TTS zero-shot cloning at inference).
|
| 27 |
+
# Names describe perceived voice character; f0 / accent / license noted for provenance.
|
| 28 |
+
# All clips are CC-BY-4.0, MIT, or Public Domain. Safe to redistribute on a public HF Space.
|
| 29 |
+
# See DECISIONS.md 2026-06-12 voice-preset entry for license sources.
|
| 30 |
+
VOICE_PRESETS = {
|
| 31 |
+
"v1": {"name": "warm, calm", "wav": "data/voices/v1.wav", "ref_text": "data/voices/v1.txt"},
|
| 32 |
+
"v2": {"name": "high and arch", "wav": "data/voices/v2.wav", "ref_text": "data/voices/v2.txt"},
|
| 33 |
+
"v3": {"name": "deep, slow", "wav": "data/voices/v3.wav", "ref_text": "data/voices/v3.txt"},
|
| 34 |
+
"v4": {"name": "theatrical", "wav": "data/voices/v4.wav", "ref_text": "data/voices/v4.txt"},
|
| 35 |
+
"v5": {"name": "tense, anxious", "wav": "data/voices/v5.wav", "ref_text": "data/voices/v5.txt"},
|
| 36 |
+
"v6": {"name": "haunted letter", "wav": "data/voices/v6.wav", "ref_text": "data/voices/v6.txt"},
|
| 37 |
+
"v7": {"name": "gentle storyteller", "wav": "data/voices/v7.wav", "ref_text": "data/voices/v7.txt"},
|
| 38 |
+
"v8": {"name": "fevered poet", "wav": "data/voices/v8.wav", "ref_text": "data/voices/v8.txt"},
|
| 39 |
+
"v9": {"name": "stately reader", "wav": "data/voices/v9.wav", "ref_text": "data/voices/v9.txt"},
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
# Validation gates
|
| 43 |
+
WHISPER_MODEL = "base.en"
|
| 44 |
+
RESEMBLYZER_MIN_COSINE = 0.85
|
| 45 |
+
SPEARMAN_GATE = 0.80 # WER vs level Spearman; positive (WER rises as dial rises)
|
| 46 |
+
|
| 47 |
+
# Audio
|
| 48 |
+
SAMPLE_RATE = 24000 # F5-TTS native
|
| 49 |
+
GEN_MAX_SEC = 30
|
| 50 |
+
|
| 51 |
+
# HF repos
|
| 52 |
+
HF_DATA_REPO = "akshan-main/glossolalia-inputs"
|
| 53 |
+
HF_LORA_REPO = "akshan-main/glossolalia-dial-lora"
|
| 54 |
+
HF_SPACE_REPO = "akshan-main/glossolalia"
|