Add MicroslopSam TTS, Flextalk voice profiles, effects, and engine controls
This commit is contained in:
+113
-11
@@ -129,12 +129,34 @@
|
||||
</div>
|
||||
<div class="vk-tts-settings">
|
||||
<span class="vk-micro-label">Voice settings</span>
|
||||
<select id="tts-provider" class="vk-select">
|
||||
<option value="local">local TTS</option>
|
||||
<option value="api">API TTS</option>
|
||||
</select>
|
||||
<span class="vk-chip vk-chip-on">duck on voice</span>
|
||||
<select id="tts-provider" class="vk-select"></select>
|
||||
<select id="tts-voice" class="vk-select" title="Voice"></select>
|
||||
<button id="tts-duck" class="vk-chip vk-chip-on" type="button" title="Lower the TTS while someone else speaks">
|
||||
duck on voice
|
||||
</button>
|
||||
<span class="vk-chip vk-chip-on">queue lines</span>
|
||||
<div class="vk-tts-speed">
|
||||
<label class="vk-tts-slider" title="Speech rate; 1.0x is the engine's natural rate">
|
||||
<span class="vk-micro-label">speed</span>
|
||||
<input id="tts-speed" type="range" min="0.5" max="2" step="0.05" value="1" />
|
||||
<span id="tts-speed-value" class="vk-mono vk-dim">1.0x</span>
|
||||
</label>
|
||||
<div id="tts-speed-presets" class="vk-tts-presets">
|
||||
<button class="vk-chip vk-chip-off" type="button" data-speed="0.5">0.5x</button>
|
||||
<button class="vk-chip vk-chip-off" type="button" data-speed="0.75">0.75x</button>
|
||||
<button class="vk-chip vk-chip-on" type="button" data-speed="1">1x</button>
|
||||
<button class="vk-chip vk-chip-off" type="button" data-speed="1.25">1.25x</button>
|
||||
<button class="vk-chip vk-chip-off" type="button" data-speed="1.5">1.5x</button>
|
||||
</div>
|
||||
</div>
|
||||
<label id="tts-pitch-control" class="vk-tts-slider" title="Pitch offset; 0 is the engine's natural pitch">
|
||||
<span class="vk-micro-label">pitch</span>
|
||||
<input id="tts-pitch" type="range" min="-12" max="12" step="1" value="0" />
|
||||
<span id="tts-pitch-value" class="vk-mono vk-dim">0 st</span>
|
||||
</label>
|
||||
<button id="profile-open" class="vk-chip vk-chip-off" type="button" title="Flextalk voice profile">
|
||||
voice profile…
|
||||
</button>
|
||||
</div>
|
||||
<div class="vk-tts-body">
|
||||
<textarea id="tts-input" class="vk-tts-field" rows="3" placeholder="Speak text into the call…"></textarea>
|
||||
@@ -216,6 +238,8 @@
|
||||
<div class="vk-transcript">
|
||||
<div class="vk-transcript-toolbar">
|
||||
<span id="transcript-status" class="vk-mono vk-dim">no capture session</span>
|
||||
<button id="transcript-start" class="btn btn-secondary vk-small-btn" type="button">Start</button>
|
||||
<button id="transcript-stop" class="btn btn-secondary vk-small-btn" type="button">Stop</button>
|
||||
<button id="transcript-refresh" class="btn btn-secondary vk-small-btn" type="button">Refresh</button>
|
||||
</div>
|
||||
<div id="transcript-list" class="vk-transcript-list"></div>
|
||||
@@ -307,13 +331,14 @@
|
||||
<div class="vk-settings-card">
|
||||
<div class="vk-status-row">
|
||||
<span class="vk-status-label">TTS engine</span>
|
||||
<select class="vk-select" id="speech-provider">
|
||||
<option value="">Auto</option>
|
||||
<option value="local">Local</option>
|
||||
<option value="api">API</option>
|
||||
</select>
|
||||
<span class="vk-engine-row">
|
||||
<select class="vk-select" id="speech-provider"></select>
|
||||
<button id="speech-warm" class="btn btn-secondary vk-small-btn" type="button" title="Start the engine so the first line is fast">
|
||||
Start engine
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="vk-status-row">
|
||||
<div class="vk-status-row" id="speech-language-row">
|
||||
<span class="vk-status-label">Language</span>
|
||||
<select class="vk-select" id="speech-language">
|
||||
<option value="">Auto</option>
|
||||
@@ -427,6 +452,83 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="profile-overlay" class="vk-overlay" hidden>
|
||||
<div class="vk-profile-panel elev-lg" role="dialog" aria-label="Flextalk voice profile">
|
||||
<div class="vk-settings-head" id="profile-drag">
|
||||
<span class="vk-settings-title">Flextalk voice profile</span>
|
||||
<span class="vk-mono vk-dim" id="profile-voice-label"></span>
|
||||
<button id="profile-close" class="btn btn-ghost vk-icon-btn" type="button" aria-label="Close">
|
||||
<span class="vk-icon" data-icon="x"></span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="vk-profile-body">
|
||||
<section class="vk-profile-section">
|
||||
<div class="vk-section-head">
|
||||
<span class="vk-rail-label vk-rail-label-flat">Voice character</span>
|
||||
<span class="vk-mono vk-dim">within 2 of the engine default snaps to default</span>
|
||||
</div>
|
||||
<div id="tts-profile-sliders" class="vk-profile-grid"></div>
|
||||
<div class="vk-profile-row">
|
||||
<span class="vk-micro-label">expression</span>
|
||||
<input id="tts-expression" type="range" min="0" max="100" step="1" value="59" />
|
||||
<span id="tts-expression-value" class="vk-mono vk-dim">default</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="vk-profile-section">
|
||||
<div class="vk-section-head">
|
||||
<span class="vk-rail-label vk-rail-label-flat">Presets</span>
|
||||
</div>
|
||||
<div class="vk-profile-row">
|
||||
<select id="tts-profile-slot" class="vk-select"></select>
|
||||
<input id="tts-profile-name" class="input" placeholder="Profile name" maxlength="40" />
|
||||
<button id="tts-profile-load" class="btn btn-secondary vk-small-btn" type="button">Load</button>
|
||||
<button id="tts-profile-save" class="btn btn-primary vk-small-btn" type="button">Save</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="vk-profile-section">
|
||||
<div class="vk-section-head">
|
||||
<span class="vk-rail-label vk-rail-label-flat">Radio kit</span>
|
||||
<span class="vk-mono vk-dim">VOX / HEV</span>
|
||||
</div>
|
||||
<div class="vk-profile-row">
|
||||
<span class="vk-micro-label">highpass</span>
|
||||
<input id="tts-highpass" type="range" min="40" max="400" step="10" value="40" />
|
||||
<span id="tts-highpass-value" class="vk-mono vk-dim">40Hz</span>
|
||||
</div>
|
||||
<div class="vk-profile-row">
|
||||
<span class="vk-micro-label">echo</span>
|
||||
<input id="tts-echo" type="range" min="0" max="100" step="5" value="0" />
|
||||
<span id="tts-echo-value" class="vk-mono vk-dim">off</span>
|
||||
</div>
|
||||
<div class="vk-profile-row">
|
||||
<label class="vk-tts-check"><input id="tts-words" type="checkbox" /> word mode</label>
|
||||
<input id="tts-word-gap" type="range" min="0" max="500" step="10" value="120" />
|
||||
<span id="tts-word-gap-value" class="vk-mono vk-dim">120ms</span>
|
||||
</div>
|
||||
</section>
|
||||
<section class="vk-profile-section">
|
||||
<div class="vk-section-head">
|
||||
<span class="vk-rail-label vk-rail-label-flat">Test lines</span>
|
||||
</div>
|
||||
<div class="vk-profile-tests">
|
||||
<button class="vk-chip vk-chip-off" data-test="Attention" type="button">Attention</button>
|
||||
<button class="vk-chip vk-chip-off" data-test="Laboratory" type="button">Laboratory</button>
|
||||
<button class="vk-chip vk-chip-off" data-test="Critical" type="button">Critical</button>
|
||||
<button class="vk-chip vk-chip-off" data-test="Health" type="button">Health</button>
|
||||
<button class="vk-chip vk-chip-off" data-test="Radiation" type="button">Radiation</button>
|
||||
<input class="input vk-test-custom" id="tts-test-custom-1" placeholder="custom 1" />
|
||||
<button class="vk-chip vk-chip-off" data-test-custom="1" type="button">play</button>
|
||||
<input class="input vk-test-custom" id="tts-test-custom-2" placeholder="custom 2" />
|
||||
<button class="vk-chip vk-chip-off" data-test-custom="2" type="button">play</button>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="toasts" class="vk-toasts"></div>
|
||||
|
||||
<script src="icons.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user