Files
Gan, Jimmy 784a67c921 Implement native browser-side audio extraction and server upload
- Update index.html file input to accept audio/*,video/*
- Add engine selection dropdown (Local vs Server) in index.html
- Implement JS bufferToWav WAV encoder in app.js (Float32Array PCM to 16-bit WAV)
- Integrate server-side transcribing route via FormData POST in app.js
- Update DEVELOPMENT_RULES.md to mark browser-side extraction as implemented

Co-Authored-By: Claude Opus 4.8 <noreply@anthreply.com>
2026-06-03 11:38:51 +08:00

64 lines
2.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Media to Text</title>
<style>
body { font-family: system-ui; max-width: 800px; margin: 50px auto; padding: 20px; }
button { padding: 10px 20px; margin: 10px 5px; cursor: pointer; }
#output { white-space: pre-wrap; border: 1px solid #ccc; padding: 15px; margin: 20px 0; min-height: 100px; }
#status { color: #666; margin: 10px 0; }
</style>
</head>
<body>
<h1>Media to Text Converter</h1>
<div>
<label for="language">Language: </label>
<select id="language">
<option value="en-US">English</option>
<option value="es-ES">Spanish</option>
<option value="fr-FR">French</option>
<option value="de-DE">German</option>
<option value="it-IT">Italian</option>
<option value="pt-BR">Portuguese</option>
<option value="ru-RU">Russian</option>
<option value="ja-JP">Japanese</option>
<option value="ko-KR">Korean</option>
<option value="zh-CN">Chinese (Simplified)</option>
<option value="zh-TW">Chinese (Traditional)</option>
<option value="ar-SA">Arabic</option>
<option value="hi-IN">Hindi</option>
</select>
</div>
<div style="margin-top: 10px;">
<label for="engine">Transcription Engine: </label>
<select id="engine">
<option value="local">Local (Offline Browser)</option>
<option value="server">Server (Whisper Python)</option>
</select>
</div>
<div style="margin: 20px 0; padding: 20px; border: 2px dashed #ccc; border-radius: 8px;">
<h3>Upload Media File</h3>
<p style="color: #666; font-size: 14px;">Upload audio or video file for transcription</p>
<input type="file" id="file-input" accept="audio/*,video/*">
<button id="upload-btn" disabled>Convert to Text</button>
</div>
<div style="margin: 20px 0; padding: 20px; border: 2px solid #ccc; border-radius: 8px;">
<h3>Live Recording</h3>
<button id="record-btn">Start Recording</button>
<button id="stop-btn" disabled>Stop Recording</button>
</div>
<div id="status"></div>
<div id="output"></div>
<button id="copy-btn" style="display:none">Copy Text</button>
<script type="module" src="app.js"></script>
</body>
</html>