Files
live-voice-chat/static/index.html
T
2026-04-12 04:11:52 -04:00

82 lines
2.3 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Voice Chat</title>
<link rel="stylesheet" href="/static/style.css" />
</head>
<body>
<header>
<h1>Voice Chat</h1>
<span id="status-badge">Disconnected</span>
</header>
<div id="stage">
<video
id="avatar-video"
autoplay
muted
loop
playsinline
preload="auto"
></video>
</div>
<div id="chat-area"></div>
<details id="voice-panel">
<summary>Voice Settings</summary>
<div class="panel-content">
<label>
Voice
<select id="voice-select">
<optgroup label="Female">
<option value="af_heart" selected>Heart</option>
<option value="af_nicole">Nicole</option>
<option value="af_bella">Bella</option>
<option value="af_sarah">Sarah</option>
<option value="af_nova">Nova</option>
<option value="af_jessica">Jessica</option>
<option value="af_river">River</option>
</optgroup>
<optgroup label="Male">
<option value="am_adam">Adam</option>
<option value="am_michael">Michael</option>
</optgroup>
</select>
</label>
<button id="apply-voice-btn" onclick="applyVoice()">Apply</button>
<span id="voice-status"></span>
</div>
</details>
<details id="avatar-panel">
<summary>Avatar / Video</summary>
<div class="panel-content">
<label>
Avatar image
<input type="file" id="avatar-file" accept="image/*" />
</label>
<button id="upload-avatar-btn" onclick="uploadAvatar()">Upload</button>
<label>
Mode
<select id="video-mode-select">
<option value="off">Off</option>
<option value="library">Library (pre-baked)</option>
<option value="reflective" selected>Reflective (per-turn)</option>
</select>
</label>
<button id="apply-mode-btn" onclick="applyVideoMode()">Apply mode</button>
<span id="avatar-status"></span>
</div>
</details>
<div id="controls">
<button id="mic-btn" onclick="toggleMic()">&#x1F3A4;</button>
</div>
<script src="/static/app.js"></script>
</body>
</html>