feat(voice): add admin-configurable elevenlabs tts
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
<a class="nav-link" href="#routes"><span class="nav-bullet"></span>Маршрутизация</a>
|
||||
<a class="nav-link" href="#ivr"><span class="nav-bullet"></span>IVR</a>
|
||||
<a class="nav-link" href="#voiceNameCollection"><span class="nav-bullet"></span>Voice AI</a>
|
||||
<a class="nav-link" href="#voiceTtsConfig"><span class="nav-bullet"></span>Voice TTS</a>
|
||||
<a class="nav-link" href="#asterisk"><span class="nav-bullet"></span>Asterisk</a>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -326,6 +327,143 @@
|
||||
<pre id="voiceNameConfigOutput" class="output">Raw payload voice name collection появится здесь.</pre>
|
||||
</article>
|
||||
|
||||
<article class="panel reveal" id="voiceTtsConfig">
|
||||
<h2>Voice AI: TTS</h2>
|
||||
<p class="hint">Выберите провайдера и голоса для RU и KZ. Для ElevenLabs в поле голоса хранится voice ID, для Brian уже есть готовый preset.</p>
|
||||
<pre id="voiceTtsSummary" class="output">Сводка по voice TTS появится здесь.</pre>
|
||||
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
Активный провайдер
|
||||
<select id="voiceTtsProvider">
|
||||
<option value="yandex">Yandex SpeechKit</option>
|
||||
<option value="elevenlabs">ElevenLabs</option>
|
||||
<option value="openai">OpenAI</option>
|
||||
</select>
|
||||
</label>
|
||||
<div class="hint">RU и KZ можно настроить отдельно, а провайдер переключать из админки без правки env.</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label>Yandex</label>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
RU preset
|
||||
<select id="voiceTtsYandexRuVoicePreset"></select>
|
||||
</label>
|
||||
<label>
|
||||
RU voice
|
||||
<input id="voiceTtsYandexRuVoice" placeholder="jane" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
KZ preset
|
||||
<select id="voiceTtsYandexKzVoicePreset"></select>
|
||||
</label>
|
||||
<label>
|
||||
KZ voice
|
||||
<input id="voiceTtsYandexKzVoice" placeholder="amira" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label>ElevenLabs</label>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
RU preset
|
||||
<select id="voiceTtsElevenRuVoicePreset"></select>
|
||||
</label>
|
||||
<label>
|
||||
RU voice ID
|
||||
<input id="voiceTtsElevenRuVoice" placeholder="nPczCjzI2devNBz1zQrb" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
RU model
|
||||
<input id="voiceTtsElevenRuModel" placeholder="eleven_v3" />
|
||||
</label>
|
||||
<label>
|
||||
RU language_code
|
||||
<input id="voiceTtsElevenRuLanguageCode" placeholder="ru" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
KZ preset
|
||||
<select id="voiceTtsElevenKzVoicePreset"></select>
|
||||
</label>
|
||||
<label>
|
||||
KZ voice ID
|
||||
<input id="voiceTtsElevenKzVoice" placeholder="nPczCjzI2devNBz1zQrb" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
KZ model
|
||||
<input id="voiceTtsElevenKzModel" placeholder="eleven_v3" />
|
||||
</label>
|
||||
<label>
|
||||
KZ language_code
|
||||
<input id="voiceTtsElevenKzLanguageCode" placeholder="kk" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<label>OpenAI</label>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
RU preset
|
||||
<select id="voiceTtsOpenAiRuVoicePreset"></select>
|
||||
</label>
|
||||
<label>
|
||||
RU voice
|
||||
<input id="voiceTtsOpenAiRuVoice" placeholder="alloy" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
RU model
|
||||
<input id="voiceTtsOpenAiRuModel" placeholder="gpt-4o-mini-tts" />
|
||||
</label>
|
||||
<label>
|
||||
RU language_code
|
||||
<input id="voiceTtsOpenAiRuLanguageCode" placeholder="ru" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
KZ preset
|
||||
<select id="voiceTtsOpenAiKzVoicePreset"></select>
|
||||
</label>
|
||||
<label>
|
||||
KZ voice
|
||||
<input id="voiceTtsOpenAiKzVoice" placeholder="alloy" />
|
||||
</label>
|
||||
</div>
|
||||
<div class="inline-form split-two">
|
||||
<label>
|
||||
KZ model
|
||||
<input id="voiceTtsOpenAiKzModel" placeholder="gpt-4o-mini-tts" />
|
||||
</label>
|
||||
<label>
|
||||
KZ language_code
|
||||
<input id="voiceTtsOpenAiKzLanguageCode" placeholder="kz" />
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="actions compact-actions">
|
||||
<button id="loadVoiceTtsConfigBtn" class="btn ghost">Загрузить настройки</button>
|
||||
<button id="saveVoiceTtsConfigBtn" class="btn">Сохранить настройки</button>
|
||||
<button id="resetVoiceTtsConfigBtn" class="btn ghost">Сбросить форму к текущим</button>
|
||||
</div>
|
||||
<pre id="voiceTtsConfigOutput" class="output">Raw payload voice TTS появится здесь.</pre>
|
||||
</article>
|
||||
|
||||
<article class="panel reveal" id="asterisk">
|
||||
<h2>Мост Asterisk</h2>
|
||||
<p class="hint">Диагностика AMI-подключения, пересланных bridge-событий и ручного повтора.</p>
|
||||
|
||||
Reference in New Issue
Block a user