private-voice-agent / index.html
aut4rk's picture
Fix Brave ASR fallback and recover from WebGPU transcription errors
2b8633e verified
Raw
History Blame Contribute Delete
2.88 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, viewport-fit=cover"
/>
<title>Personal Voice Agent</title>
<meta
name="description"
content="Local browser voice assistant with on-device speech processing."
/>
<script type="module" crossorigin src="/assets/index-0lmKKa3c.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-D37VpK1p.css">
</head>
<body>
<main class="app-shell">
<section class="view" id="calibration-view">
<article class="card calibration-card">
<p class="eyebrow">Microphone Calibration</p>
<h1 class="card-title">Speech Calibration</h1>
<p class="card-copy" id="calibration-copy">
Read the following lines clearly at a comfortable speaking pace
until calibration is complete. Repeat from the beginning if time
remains.
</p>
<p class="prompt-block" id="calibration-prompt">
The quick brown fox jumps over the lazy dog.
I am speaking in my natural voice at a comfortable volume.
The sound of my own voice has never bothered me.
A recording is never quite the same as the original.
I confirm this is a true representation of how I speak.
My speech remains clear when I maintain a consistent distance from the microphone.
I will continue speaking until the calibration timer reaches zero.
This sample should capture my normal pronunciation and pacing.
</p>
<div class="meter" aria-hidden="true">
<div class="meter-fill" id="calibration-fill"></div>
</div>
<p class="timer-text" id="calibration-timer">
Calibration required before the first session.
</p>
<p class="summary-text" id="benchmark-summary" hidden></p>
<div class="button-row">
<button class="primary-button" id="calibration-button" type="button">
Calibrate
</button>
</div>
<div class="error-box" id="calibration-error" hidden></div>
</article>
</section>
<section class="view" id="assistant-view" hidden>
<article class="card assistant-card">
<div class="transcript-log" id="transcript-log">
<div class="transcript-empty" id="transcript-empty">
Press Record and ask a question.
</div>
</div>
<div class="button-row">
<button class="primary-button" id="record-button" type="button">
Record
</button>
</div>
<div class="error-box" id="assistant-error" hidden></div>
</article>
</section>
</main>
</body>
</html>