Spaces:
Sleeping
Sleeping
| """ | |
| FINAL COMPREHENSIVE EXPERIMENT β Everything Claude knows, all at once. | |
| Learnings applied: | |
| - Seed 100: best contour for most segments | |
| - Seed 42: best for seg_004 (EXCELLENT DTW), good for seg_002 | |
| - temp calibration: 1.0-1.15 for std<50, 1.8-1.95 for std>60, 2.0 for std>70 | |
| - top_p=0.7, top_k=15: tightest contour control | |
| - top_p=0.75, top_k=20: balanced (default) | |
| - tokens = duration * 12.5: perfect duration match | |
| - IPA lengthening (e): works on specific content words in longer sentences | |
| - Cross-reference: longer clips (seg_003/005) give better voice clone | |
| - ? mark: creates rising intonation, helped seg_005 | |
| - ... pauses: help rhythm on long sentences | |
| - Continuation mode: FAILS for JP->EN | |
| - Full IPA: HURTS β model handles full phoneme input differently | |
| - CAPS: mild effect, not reliable | |
| - rep_penalty: no significant effect | |
| - Wider top_p/top_k: more std but worse contour (tradeoff) | |
| Strategy: For each segment, run a grid of the most promising combinations. | |
| """ | |
| import requests, json, time, sys | |
| BASE = "https://yellow-yaks-matter.loca.lt" | |
| def gen(seg_id, attempt, text, temp=1.7, top_p=0.8, top_k=25, rep=1.0, | |
| tokens=None, seed=42, ref_seg=None): | |
| payload = { | |
| "seg_id": seg_id, "attempt": attempt, "text": text, | |
| "audio_temperature": temp, "audio_top_p": top_p, "audio_top_k": top_k, | |
| "audio_repetition_penalty": rep, "seed": seed, "mode": "generation", | |
| } | |
| if tokens: payload["tokens"] = tokens | |
| if ref_seg: payload["ref_seg_id"] = ref_seg | |
| try: | |
| r = requests.post(f"{BASE}/generate", json=payload, timeout=180) | |
| result = r.json() | |
| if "error" in result: | |
| return None | |
| s = result["score"] | |
| f = result["f0_dtw"] | |
| print(f" {seg_id}-{attempt:03d} | {s:>5.1f} | DTW={f:.3f}({result['f0_dtw_rating']:>9s}) | " | |
| f"F0={result['generated']['f0_mean']:.0f} std={result['generated']['f0_std']:.0f} | " | |
| f"t={temp} p={top_p} k={top_k} s={seed}") | |
| return result | |
| except Exception as e: | |
| print(f" {seg_id}-{attempt:03d} | FAIL: {str(e)[:40]}") | |
| return None | |
| requests.get(f"{BASE}/health", timeout=10) | |
| print("="*80) | |
| print("FINAL COMPREHENSIVE EXPERIMENT") | |
| print("="*80) | |
| att_counter = {1: 100, 2: 100, 3: 100, 4: 100, 5: 100} # start from attempt 100 | |
| def next_att(sid): | |
| att_counter[sid] += 1 | |
| return att_counter[sid] | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # seg_001: F0=264, std=46 (calm). Best=22.9 | |
| # Known best: temp=1.1, seed=100, ref=seg_003, IPA /everyone/ | |
| # Grid: temp[1.0, 1.05, 1.1, 1.15, 1.2] x seed[42, 77, 100] x ref[1,3] | |
| # Plus IPA variants | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| print("\n" + "="*40) | |
| print("seg_001 β COMPREHENSIVE GRID (target: F0=264, std=46)") | |
| print("="*40) | |
| texts_1 = [ | |
| ("plain", "Hello everyone. Thank you all, for, joining us today."), | |
| ("ipa_everyone", "Hello /\u025bv\u0279iw\u028c\u02d0n/. Thank you all, for, joining us today."), | |
| ("ipa_both", "Hello /\u025bv\u0279iw\u028c\u02d0n/. Thank you all, for, joining us /t\u0259de\u026a\u02d0/."), | |
| ] | |
| for tname, text in texts_1: | |
| for temp in [1.0, 1.08, 1.15]: | |
| for seed in [42, 100]: | |
| for ref in [1, 3]: | |
| a = next_att(1) | |
| gen(1, a, text, temp=temp, top_p=0.7, top_k=15, tokens=41, seed=seed, ref_seg=ref) | |
| time.sleep(1.5) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # seg_002: F0=235, std=70 (most expressive). Best=25.9 | |
| # Hardest segment. Problem: can't get high std + good contour. | |
| # Grid: temp[1.6, 1.7, 1.8, 1.9] x seed[42, 77, 100, 123] x text variants | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| print("\n" + "="*40) | |
| print("seg_002 β COMPREHENSIVE GRID (target: F0=235, std=70)") | |
| print("="*40) | |
| texts_2 = [ | |
| ("plain", "I'm SUEYOSHI, from the Innovation Center."), | |
| ("dramatic", "I'm... SUEYOSHI! From the Innovation Center."), | |
| ("ipa_name", "I'm /su\u02d0e\u026ajo\u028a\u0283i\u02d0/, from the Innovation Center."), | |
| ] | |
| for tname, text in texts_2: | |
| for temp in [1.7, 1.8, 1.9]: | |
| for seed in [42, 77, 100]: | |
| a = next_att(2) | |
| gen(2, a, text, temp=temp, top_p=0.75, top_k=20, tokens=25, seed=seed) | |
| time.sleep(1.5) | |
| # Also try with different refs | |
| for seed in [42, 100]: | |
| for ref in [4, 5]: | |
| a = next_att(2) | |
| gen(2, a, "I'm SUEYOSHI, from the Innovation Center.", | |
| temp=1.8, top_p=0.75, top_k=20, tokens=25, seed=seed, ref_seg=ref) | |
| time.sleep(1.5) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # seg_003: F0=240, std=67. Best=20.8 | |
| # Already good with multi-IPA. Fine-tune around sweet spot. | |
| # Grid: temp[1.85, 1.88, 1.9, 1.92, 1.95] x seed[42, 100] x IPA variants | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| print("\n" + "="*40) | |
| print("seg_003 β FINE-TUNE GRID (target: F0=240, std=67)") | |
| print("="*40) | |
| texts_3 = [ | |
| ("ipa_2", "For this /s\u025b\u02d0\u0283\u0259n/... please feel free to relax, and listen to the talk, while enjoying your /l\u028c\u02d0nt\u0283/."), | |
| ("ipa_4", "For this /s\u025b\u02d0\u0283\u0259n/... please feel /f\u0279i\u02d0/ to /\u0279\u026a\u02d0l\u00e6ks/, and listen to the talk, while enjoying your /l\u028c\u02d0nt\u0283/."), | |
| ] | |
| for tname, text in texts_3: | |
| for temp in [1.87, 1.9, 1.93]: | |
| for seed in [42, 100]: | |
| a = next_att(3) | |
| gen(3, a, text, temp=temp, top_p=0.75, top_k=20, tokens=62, seed=seed) | |
| time.sleep(1.5) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # seg_004: F0=283, std=75. Best=19.8 (EXCELLENT!) | |
| # Already excellent. Grid around winner: temp[1.85-1.95] x seed[42] x top_p/k | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| print("\n" + "="*40) | |
| print("seg_004 β SQUEEZE MORE (target: F0=283, std=75)") | |
| print("="*40) | |
| for temp in [1.85, 1.88, 1.9, 1.92, 1.95]: | |
| for seed in [42, 100]: | |
| a = next_att(4) | |
| gen(4, a, "Before we begin,", temp=temp, top_p=0.75, top_k=20, tokens=21, seed=seed) | |
| time.sleep(1.5) | |
| # Tighter sampling with best temp | |
| for top_p, top_k in [(0.7, 15), (0.72, 18)]: | |
| a = next_att(4) | |
| gen(4, a, "Before we begin,", temp=1.9, top_p=top_p, top_k=top_k, tokens=21, seed=42) | |
| time.sleep(1.5) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # seg_005: F0=243, std=60. Best=19.9 (EXCELLENT!) | |
| # Grid: temp[1.82-1.88] x seed[42, 100] x text[? and plain] | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| print("\n" + "="*40) | |
| print("seg_005 β SQUEEZE MORE (target: F0=243, std=60)") | |
| print("="*40) | |
| for temp in [1.82, 1.84, 1.85, 1.86, 1.88]: | |
| for seed in [42, 100]: | |
| a = next_att(5) | |
| gen(5, a, "I'd like to ask, how familiar everyone here is with the Innovation Center?", | |
| temp=temp, top_p=0.75, top_k=20, tokens=63, seed=seed) | |
| time.sleep(1.5) | |
| # IPA + ? combo | |
| for seed in [42, 100]: | |
| a = next_att(5) | |
| gen(5, a, "I'd like to ask, how familiar everyone here is with the /\u026an\u0259ve\u026a\u02d0\u0283\u0259n s\u025bnt\u025a/?", | |
| temp=1.85, top_p=0.75, top_k=20, tokens=63, seed=seed) | |
| time.sleep(1.5) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # FINAL RESULTS | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| print("\n" + "="*80) | |
| print("FINAL RESULTS β ALL EXPERIMENTS") | |
| print("="*80) | |
| try: | |
| results = requests.get(f"{BASE}/results", timeout=30).json() | |
| for item in results: | |
| print(f" seg_{item['seg_id']:03d}: {item['total_attempts']:>3d} attempts | " | |
| f"best={item['best_score']:.1f} (#{item['best_attempt']}, " | |
| f"F0 DTW={item['best_f0_dtw']:.3f})") | |
| print(f"\n Total attempts: {sum(r['total_attempts'] for r in results)}") | |
| except Exception as e: | |
| print(f" {e}") | |