|
<!DOCTYPE html> |
|
<html lang="en"> |
|
{{template "views/partials/head" .}} |
|
<script defer src="/static/tts.js"></script> |
|
|
|
<body class="bg-gray-900 text-gray-200"> |
|
<div class="flex flex-col min-h-screen"> |
|
|
|
{{template "views/partials/navbar" .}} |
|
<div class="container mx-auto px-4 flex-grow " x-data="{ component: 'menu' }"> |
|
<div class="mt-12"> |
|
<div class="flex items-center justify-center text-center pb-2"> |
|
<span class="text-3xl font-semibold text-gray-100"> |
|
<i class="fa-solid fa-music"></i> Text to speech/audio |
|
<a href="https://localai.io/features/text-to-audio/" target="_blank" > |
|
<i class="fas fa-circle-info pr-2"></i> |
|
</a> |
|
</span> |
|
|
|
</div> |
|
<div class="text-center font-semibold text-gray-100"> |
|
<div class="flex items-center justify-between"> |
|
|
|
<div x-show="component === 'menu'" id="menu"> |
|
<button @click="component = 'key'" title="Update API key" |
|
class="m-2 float-right inline-block rounded bg-primary px-6 pb-2.5 mb-3 pt-2.5 text-xs font-medium uppercase leading-normal text-white shadow-primary-3 transition duration-150 ease-in-out hover:bg-primary-accent-300 hover:shadow-primary-2 focus:bg-primary-accent-300 focus:shadow-primary-2 focus:outline-none focus:ring-0 active:bg-primary-600 active:shadow-primary-2 dark:shadow-black/30 dark:hover:shadow-dark-strong dark:focus:shadow-dark-strong dark:active:shadow-dark-strong" |
|
>Set API Key🔑</button> |
|
</div> |
|
<form x-show="component === 'key'" id="key"> |
|
<input |
|
type="password" |
|
id="apiKey" |
|
name="apiKey" |
|
placeholder="OpenAI API Key" |
|
x-model.lazy="key" |
|
/> |
|
<button @click="component = 'menu'" type="submit" title="Save API key"> |
|
🔒 |
|
</button> |
|
</form> |
|
|
|
<select x-data="{ link : '' }" x-model="link" x-init="$watch('link', value => window.location = link)" |
|
class="bg-gray-800 text-white border border-gray-600 focus:border-blue-500 focus:ring focus:ring-blue-500 focus:ring-opacity-50 rounded-md shadow-sm p-2 appearance-none" |
|
> |
|
|
|
<option value="" disabled class="text-gray-400" >Select a model</option> |
|
{{ $model:=.Model}} |
|
{{ range .ModelsConfig }} |
|
{{ if eq .Name $model }} |
|
<option value="/tts/{{.Name}}" selected class="bg-gray-700 text-white">{{.Name}}</option> |
|
{{ else }} |
|
<option value="/tts/{{.Name}}" class="bg-gray-700 text-white">{{.Name}}</option> |
|
{{ end }} |
|
{{ end }} |
|
</select> |
|
|
|
</div> |
|
</div> |
|
|
|
<div class="mt-12"> |
|
<input id="tts-model" type="hidden" value="{{.Model}}"> |
|
<form id="tts" action="/tts/{{.Model}}" method="get"> |
|
<input |
|
type="text" |
|
id="input" |
|
name="input" |
|
placeholder="Prompt…" |
|
autocomplete="off" |
|
class="p-2 border rounded w-full bg-gray-600 text-white placeholder-gray-300" |
|
required |
|
/> |
|
</form> |
|
<div class="container max-w-screen-lg mx-auto mt-4 pb-10 flex justify-center"> |
|
<div id="loader" class="my-2 loader" ></div> |
|
</div> |
|
<div class="container max-w-screen-lg mx-auto mt-4 pb-10 flex justify-center"> |
|
<div id="result" class="mx-auto"></div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
{{template "views/partials/footer" .}} |
|
</div> |
|
</body> |
|
</html> |
|
|