mirror of
https://github.com/open-webui/open-webui
synced 2025-04-05 05:10:46 +00:00
🤩 Added custom openai tts models and role variables
This commit is contained in:
parent
e92311b4eb
commit
761c66a8d8
@ -43,6 +43,8 @@ from config import (
|
|||||||
DEVICE_TYPE,
|
DEVICE_TYPE,
|
||||||
AUDIO_OPENAI_API_BASE_URL,
|
AUDIO_OPENAI_API_BASE_URL,
|
||||||
AUDIO_OPENAI_API_KEY,
|
AUDIO_OPENAI_API_KEY,
|
||||||
|
AUDIO_OPENAI_API_MODEL,
|
||||||
|
AUDIO_OPENAI_API_SPEAKER
|
||||||
)
|
)
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@ -60,6 +62,8 @@ app.add_middleware(
|
|||||||
|
|
||||||
app.state.OPENAI_API_BASE_URL = AUDIO_OPENAI_API_BASE_URL
|
app.state.OPENAI_API_BASE_URL = AUDIO_OPENAI_API_BASE_URL
|
||||||
app.state.OPENAI_API_KEY = AUDIO_OPENAI_API_KEY
|
app.state.OPENAI_API_KEY = AUDIO_OPENAI_API_KEY
|
||||||
|
app.state.OPENAI_API_MODEL = AUDIO_OPENAI_API_MODEL
|
||||||
|
app.state.OPENAI_API_SPEAKER = AUDIO_OPENAI_API_SPEAKER
|
||||||
|
|
||||||
# setting device type for whisper model
|
# setting device type for whisper model
|
||||||
whisper_device_type = DEVICE_TYPE if DEVICE_TYPE and DEVICE_TYPE == "cuda" else "cpu"
|
whisper_device_type = DEVICE_TYPE if DEVICE_TYPE and DEVICE_TYPE == "cuda" else "cpu"
|
||||||
@ -72,6 +76,8 @@ SPEECH_CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
|||||||
class OpenAIConfigUpdateForm(BaseModel):
|
class OpenAIConfigUpdateForm(BaseModel):
|
||||||
url: str
|
url: str
|
||||||
key: str
|
key: str
|
||||||
|
model: str
|
||||||
|
speaker: str
|
||||||
|
|
||||||
|
|
||||||
@app.get("/config")
|
@app.get("/config")
|
||||||
@ -79,6 +85,8 @@ async def get_openai_config(user=Depends(get_admin_user)):
|
|||||||
return {
|
return {
|
||||||
"OPENAI_API_BASE_URL": app.state.OPENAI_API_BASE_URL,
|
"OPENAI_API_BASE_URL": app.state.OPENAI_API_BASE_URL,
|
||||||
"OPENAI_API_KEY": app.state.OPENAI_API_KEY,
|
"OPENAI_API_KEY": app.state.OPENAI_API_KEY,
|
||||||
|
"OPENAI_API_MODEL": app.state.OPENAI_API_MODEL,
|
||||||
|
"OPENAI_API_SPEAKER": app.state.OPENAI_API_SPEAKER
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -91,11 +99,15 @@ async def update_openai_config(
|
|||||||
|
|
||||||
app.state.OPENAI_API_BASE_URL = form_data.url
|
app.state.OPENAI_API_BASE_URL = form_data.url
|
||||||
app.state.OPENAI_API_KEY = form_data.key
|
app.state.OPENAI_API_KEY = form_data.key
|
||||||
|
app.state.OPENAI_API_MODEL = form_data.model
|
||||||
|
app.state.OPENAI_API_SPEAKER = form_data.speaker
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"status": True,
|
"status": True,
|
||||||
"OPENAI_API_BASE_URL": app.state.OPENAI_API_BASE_URL,
|
"OPENAI_API_BASE_URL": app.state.OPENAI_API_BASE_URL,
|
||||||
"OPENAI_API_KEY": app.state.OPENAI_API_KEY,
|
"OPENAI_API_KEY": app.state.OPENAI_API_KEY,
|
||||||
|
"OPENAI_API_MODEL": app.state.OPENAI_API_MODEL,
|
||||||
|
"OPENAI_API_SPEAKER": app.state.OPENAI_API_SPEAKER,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -574,6 +574,8 @@ IMAGE_GENERATION_MODEL = os.getenv("IMAGE_GENERATION_MODEL", "")
|
|||||||
|
|
||||||
AUDIO_OPENAI_API_BASE_URL = os.getenv("AUDIO_OPENAI_API_BASE_URL", OPENAI_API_BASE_URL)
|
AUDIO_OPENAI_API_BASE_URL = os.getenv("AUDIO_OPENAI_API_BASE_URL", OPENAI_API_BASE_URL)
|
||||||
AUDIO_OPENAI_API_KEY = os.getenv("AUDIO_OPENAI_API_KEY", OPENAI_API_KEY)
|
AUDIO_OPENAI_API_KEY = os.getenv("AUDIO_OPENAI_API_KEY", OPENAI_API_KEY)
|
||||||
|
AUDIO_OPENAI_API_MODEL = os.getenv("AUDIO_OPENAI_API_MODEL", "tts-1")
|
||||||
|
AUDIO_OPENAI_API_SPEAKER = os.getenv("AUDIO_OPENAI_API_SPEAKER", "alloy")
|
||||||
|
|
||||||
####################################
|
####################################
|
||||||
# LiteLLM
|
# LiteLLM
|
||||||
|
@ -30,6 +30,8 @@ export const getAudioConfig = async (token: string) => {
|
|||||||
type OpenAIConfigForm = {
|
type OpenAIConfigForm = {
|
||||||
url: string;
|
url: string;
|
||||||
key: string;
|
key: string;
|
||||||
|
model: string;
|
||||||
|
speaker: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const updateAudioConfig = async (token: string, payload: OpenAIConfigForm) => {
|
export const updateAudioConfig = async (token: string, payload: OpenAIConfigForm) => {
|
||||||
@ -95,7 +97,8 @@ export const transcribeAudio = async (token: string, file: File) => {
|
|||||||
export const synthesizeOpenAISpeech = async (
|
export const synthesizeOpenAISpeech = async (
|
||||||
token: string = '',
|
token: string = '',
|
||||||
speaker: string = 'alloy',
|
speaker: string = 'alloy',
|
||||||
text: string = ''
|
text: string = '',
|
||||||
|
OpenAIModel: string = 'tts-1'
|
||||||
) => {
|
) => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
@ -106,7 +109,7 @@ export const synthesizeOpenAISpeech = async (
|
|||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
model: 'tts-1',
|
model: OpenAIModel,
|
||||||
input: text,
|
input: text,
|
||||||
voice: speaker
|
voice: speaker
|
||||||
})
|
})
|
||||||
|
@ -239,7 +239,8 @@ export const generateOpenAIChatCompletion = async (
|
|||||||
export const synthesizeOpenAISpeech = async (
|
export const synthesizeOpenAISpeech = async (
|
||||||
token: string = '',
|
token: string = '',
|
||||||
speaker: string = 'alloy',
|
speaker: string = 'alloy',
|
||||||
text: string = ''
|
text: string = '',
|
||||||
|
model: string = 'tts-1'
|
||||||
) => {
|
) => {
|
||||||
let error = null;
|
let error = null;
|
||||||
|
|
||||||
@ -250,7 +251,7 @@ export const synthesizeOpenAISpeech = async (
|
|||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
model: 'tts-1',
|
model: model,
|
||||||
input: text,
|
input: text,
|
||||||
voice: speaker
|
voice: speaker
|
||||||
})
|
})
|
||||||
|
@ -223,7 +223,8 @@
|
|||||||
const res = await synthesizeOpenAISpeech(
|
const res = await synthesizeOpenAISpeech(
|
||||||
localStorage.token,
|
localStorage.token,
|
||||||
$settings?.audio?.speaker,
|
$settings?.audio?.speaker,
|
||||||
sentence
|
sentence,
|
||||||
|
$settings?.audio?.OpenAIModel
|
||||||
).catch((error) => {
|
).catch((error) => {
|
||||||
toast.error(error);
|
toast.error(error);
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
let voices = [];
|
let voices = [];
|
||||||
let speaker = '';
|
let speaker = '';
|
||||||
|
let models = [];
|
||||||
|
let OpenAIModel = '';
|
||||||
|
|
||||||
const getOpenAIVoices = () => {
|
const getOpenAIVoices = () => {
|
||||||
voices = [
|
voices = [
|
||||||
@ -38,6 +40,10 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getOpenAIVoicesModel = () => {
|
||||||
|
models = [{ name: 'tts-1' }, { name: 'tts-1-hd' }];
|
||||||
|
};
|
||||||
|
|
||||||
const getWebAPIVoices = () => {
|
const getWebAPIVoices = () => {
|
||||||
const getVoicesLoop = setInterval(async () => {
|
const getVoicesLoop = setInterval(async () => {
|
||||||
voices = await speechSynthesis.getVoices();
|
voices = await speechSynthesis.getVoices();
|
||||||
@ -78,12 +84,16 @@
|
|||||||
if (TTSEngine === 'openai') {
|
if (TTSEngine === 'openai') {
|
||||||
const res = await updateAudioConfig(localStorage.token, {
|
const res = await updateAudioConfig(localStorage.token, {
|
||||||
url: OpenAIUrl,
|
url: OpenAIUrl,
|
||||||
key: OpenAIKey
|
key: OpenAIKey,
|
||||||
|
model: OpenAIModel,
|
||||||
|
speaker: speaker,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res) {
|
if (res) {
|
||||||
OpenAIUrl = res.OPENAI_API_BASE_URL;
|
OpenAIUrl = res.OPENAI_API_BASE_URL;
|
||||||
OpenAIKey = res.OPENAI_API_KEY;
|
OpenAIKey = res.OPENAI_API_KEY;
|
||||||
|
OpenAIModel = res.OPENAI_API_MODEL;
|
||||||
|
speaker = res.OPENAI_API_SPEAKER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -98,9 +108,11 @@
|
|||||||
STTEngine = settings?.audio?.STTEngine ?? '';
|
STTEngine = settings?.audio?.STTEngine ?? '';
|
||||||
TTSEngine = settings?.audio?.TTSEngine ?? '';
|
TTSEngine = settings?.audio?.TTSEngine ?? '';
|
||||||
speaker = settings?.audio?.speaker ?? '';
|
speaker = settings?.audio?.speaker ?? '';
|
||||||
|
OpenAIModel = settings?.audio?.OpenAIModel ?? '';
|
||||||
|
|
||||||
if (TTSEngine === 'openai') {
|
if (TTSEngine === 'openai') {
|
||||||
getOpenAIVoices();
|
getOpenAIVoices();
|
||||||
|
getOpenAIVoicesModel();
|
||||||
} else {
|
} else {
|
||||||
getWebAPIVoices();
|
getWebAPIVoices();
|
||||||
}
|
}
|
||||||
@ -111,6 +123,8 @@
|
|||||||
if (res) {
|
if (res) {
|
||||||
OpenAIUrl = res.OPENAI_API_BASE_URL;
|
OpenAIUrl = res.OPENAI_API_BASE_URL;
|
||||||
OpenAIKey = res.OPENAI_API_KEY;
|
OpenAIKey = res.OPENAI_API_KEY;
|
||||||
|
OpenAIModel = res.OPENAI_API_MODEL;
|
||||||
|
speaker = res.OPENAI_API_SPEAKER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -126,7 +140,8 @@
|
|||||||
audio: {
|
audio: {
|
||||||
STTEngine: STTEngine !== '' ? STTEngine : undefined,
|
STTEngine: STTEngine !== '' ? STTEngine : undefined,
|
||||||
TTSEngine: TTSEngine !== '' ? TTSEngine : undefined,
|
TTSEngine: TTSEngine !== '' ? TTSEngine : undefined,
|
||||||
speaker: speaker !== '' ? speaker : undefined
|
speaker: speaker !== '' ? speaker : undefined,
|
||||||
|
OpenAIModel: OpenAIModel !== '' ? OpenAIModel : undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
dispatch('save');
|
dispatch('save');
|
||||||
@ -215,6 +230,7 @@
|
|||||||
if (e.target.value === 'openai') {
|
if (e.target.value === 'openai') {
|
||||||
getOpenAIVoices();
|
getOpenAIVoices();
|
||||||
speaker = 'alloy';
|
speaker = 'alloy';
|
||||||
|
OpenAIModel = 'tts-1';
|
||||||
} else {
|
} else {
|
||||||
getWebAPIVoices();
|
getWebAPIVoices();
|
||||||
speaker = '';
|
speaker = '';
|
||||||
@ -307,6 +323,25 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Model')}</div>
|
||||||
|
<div class="flex w-full">
|
||||||
|
<div class="flex-1">
|
||||||
|
<input
|
||||||
|
list="model-list"
|
||||||
|
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
|
||||||
|
bind:value={OpenAIModel}
|
||||||
|
placeholder="Select a model"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<datalist id="model-list">
|
||||||
|
{#each models as OpenAIMode}
|
||||||
|
<option value={OpenAIMode.name} />
|
||||||
|
{/each}
|
||||||
|
</datalist>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "ضبط الخطوات",
|
"Set Steps": "ضبط الخطوات",
|
||||||
"Set Title Auto-Generation Model": "قم بتعيين نموذج إنشاء العنوان تلقائيًا",
|
"Set Title Auto-Generation Model": "قم بتعيين نموذج إنشاء العنوان تلقائيًا",
|
||||||
"Set Voice": "ضبط الصوت",
|
"Set Voice": "ضبط الصوت",
|
||||||
|
"Set Model": "ضبط النموذج",
|
||||||
"Settings": "الاعدادات",
|
"Settings": "الاعدادات",
|
||||||
"Settings saved successfully!": "تم حفظ الاعدادات بنجاح",
|
"Settings saved successfully!": "تم حفظ الاعدادات بنجاح",
|
||||||
"Share": "كشاركة",
|
"Share": "كشاركة",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Задай Стъпки",
|
"Set Steps": "Задай Стъпки",
|
||||||
"Set Title Auto-Generation Model": "Задай Модел за Автоматично Генериране на Заглавие",
|
"Set Title Auto-Generation Model": "Задай Модел за Автоматично Генериране на Заглавие",
|
||||||
"Set Voice": "Задай Глас",
|
"Set Voice": "Задай Глас",
|
||||||
|
"Set Model": "Задай Модел",
|
||||||
"Settings": "Настройки",
|
"Settings": "Настройки",
|
||||||
"Settings saved successfully!": "Настройките са запазени успешно!",
|
"Settings saved successfully!": "Настройките са запазени успешно!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "পরবর্তী ধাপসমূহ",
|
"Set Steps": "পরবর্তী ধাপসমূহ",
|
||||||
"Set Title Auto-Generation Model": "শিরোনাম অটোজেনারেশন মডেন নির্ধারণ করুন",
|
"Set Title Auto-Generation Model": "শিরোনাম অটোজেনারেশন মডেন নির্ধারণ করুন",
|
||||||
"Set Voice": "কন্ঠস্বর নির্ধারণ করুন",
|
"Set Voice": "কন্ঠস্বর নির্ধারণ করুন",
|
||||||
|
"Set Model": "মডেল নির্ধারণ করুন",
|
||||||
"Settings": "সেটিংসমূহ",
|
"Settings": "সেটিংসমূহ",
|
||||||
"Settings saved successfully!": "সেটিংগুলো সফলভাবে সংরক্ষিত হয়েছে",
|
"Settings saved successfully!": "সেটিংগুলো সফলভাবে সংরক্ষিত হয়েছে",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Estableix Passos",
|
"Set Steps": "Estableix Passos",
|
||||||
"Set Title Auto-Generation Model": "Estableix Model d'Auto-Generació de Títol",
|
"Set Title Auto-Generation Model": "Estableix Model d'Auto-Generació de Títol",
|
||||||
"Set Voice": "Estableix Veu",
|
"Set Voice": "Estableix Veu",
|
||||||
|
"Set Model": "Estableix Model",
|
||||||
"Settings": "Configuracions",
|
"Settings": "Configuracions",
|
||||||
"Settings saved successfully!": "Configuracions guardades amb èxit!",
|
"Settings saved successfully!": "Configuracions guardades amb èxit!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Schritte festlegen",
|
"Set Steps": "Schritte festlegen",
|
||||||
"Set Title Auto-Generation Model": "Modell für automatische Titelgenerierung festlegen",
|
"Set Title Auto-Generation Model": "Modell für automatische Titelgenerierung festlegen",
|
||||||
"Set Voice": "Stimme festlegen",
|
"Set Voice": "Stimme festlegen",
|
||||||
|
"Set Model": "Modell festlegen",
|
||||||
"Settings": "Einstellungen",
|
"Settings": "Einstellungen",
|
||||||
"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!",
|
"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!",
|
||||||
"Share": "Teilen",
|
"Share": "Teilen",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Set Steps so many steps",
|
"Set Steps": "Set Steps so many steps",
|
||||||
"Set Title Auto-Generation Model": "Set Title Auto-Generation Model very auto-generate",
|
"Set Title Auto-Generation Model": "Set Title Auto-Generation Model very auto-generate",
|
||||||
"Set Voice": "Set Voice so speak",
|
"Set Voice": "Set Voice so speak",
|
||||||
|
"Set Model": "Set Model so speak",
|
||||||
"Settings": "Settings much settings",
|
"Settings": "Settings much settings",
|
||||||
"Settings saved successfully!": "Settings saved successfully! Very success!",
|
"Settings saved successfully!": "Settings saved successfully! Very success!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "",
|
"Set Steps": "",
|
||||||
"Set Title Auto-Generation Model": "",
|
"Set Title Auto-Generation Model": "",
|
||||||
"Set Voice": "",
|
"Set Voice": "",
|
||||||
|
"Set Model": "",
|
||||||
"Settings": "",
|
"Settings": "",
|
||||||
"Settings saved successfully!": "",
|
"Settings saved successfully!": "",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "",
|
"Set Steps": "",
|
||||||
"Set Title Auto-Generation Model": "",
|
"Set Title Auto-Generation Model": "",
|
||||||
"Set Voice": "",
|
"Set Voice": "",
|
||||||
|
"Set Model": "",
|
||||||
"Settings": "",
|
"Settings": "",
|
||||||
"Settings saved successfully!": "",
|
"Settings saved successfully!": "",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Establecer Pasos",
|
"Set Steps": "Establecer Pasos",
|
||||||
"Set Title Auto-Generation Model": "Establecer modelo de generación automática de títulos",
|
"Set Title Auto-Generation Model": "Establecer modelo de generación automática de títulos",
|
||||||
"Set Voice": "Establecer la voz",
|
"Set Voice": "Establecer la voz",
|
||||||
|
"Set Model": "Establecer el modelo",
|
||||||
"Settings": "Configuración",
|
"Settings": "Configuración",
|
||||||
"Settings saved successfully!": "¡Configuración guardada exitosamente!",
|
"Settings saved successfully!": "¡Configuración guardada exitosamente!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "تنظیم گام\u200cها",
|
"Set Steps": "تنظیم گام\u200cها",
|
||||||
"Set Title Auto-Generation Model": "تنظیم مدل تولید خودکار عنوان",
|
"Set Title Auto-Generation Model": "تنظیم مدل تولید خودکار عنوان",
|
||||||
"Set Voice": "تنظیم صدا",
|
"Set Voice": "تنظیم صدا",
|
||||||
|
"Set Model": "تنظیم مدل",
|
||||||
"Settings": "تنظیمات",
|
"Settings": "تنظیمات",
|
||||||
"Settings saved successfully!": "تنظیمات با موفقیت ذخیره شد!",
|
"Settings saved successfully!": "تنظیمات با موفقیت ذخیره شد!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Définir les étapes",
|
"Set Steps": "Définir les étapes",
|
||||||
"Set Title Auto-Generation Model": "Définir le modèle de génération automatique de titre",
|
"Set Title Auto-Generation Model": "Définir le modèle de génération automatique de titre",
|
||||||
"Set Voice": "Définir la voix",
|
"Set Voice": "Définir la voix",
|
||||||
|
"Set Model": "Configurer le modèle",
|
||||||
"Settings": "Paramètres",
|
"Settings": "Paramètres",
|
||||||
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Définir les étapes",
|
"Set Steps": "Définir les étapes",
|
||||||
"Set Title Auto-Generation Model": "Définir le modèle de génération automatique de titre",
|
"Set Title Auto-Generation Model": "Définir le modèle de génération automatique de titre",
|
||||||
"Set Voice": "Définir la voix",
|
"Set Voice": "Définir la voix",
|
||||||
|
"Set Model": "Définir le modèle",
|
||||||
"Settings": "Paramètres",
|
"Settings": "Paramètres",
|
||||||
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
"Settings saved successfully!": "Paramètres enregistrés avec succès !",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Imposta passaggi",
|
"Set Steps": "Imposta passaggi",
|
||||||
"Set Title Auto-Generation Model": "Imposta modello di generazione automatica del titolo",
|
"Set Title Auto-Generation Model": "Imposta modello di generazione automatica del titolo",
|
||||||
"Set Voice": "Imposta voce",
|
"Set Voice": "Imposta voce",
|
||||||
|
"Set Model": "Imposta modello",
|
||||||
"Settings": "Impostazioni",
|
"Settings": "Impostazioni",
|
||||||
"Settings saved successfully!": "Impostazioni salvate con successo!",
|
"Settings saved successfully!": "Impostazioni salvate con successo!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "ステップを設定",
|
"Set Steps": "ステップを設定",
|
||||||
"Set Title Auto-Generation Model": "タイトル自動生成モデルを設定",
|
"Set Title Auto-Generation Model": "タイトル自動生成モデルを設定",
|
||||||
"Set Voice": "音声を設定",
|
"Set Voice": "音声を設定",
|
||||||
|
"Set Model": "モデルを設定",
|
||||||
"Settings": "設定",
|
"Settings": "設定",
|
||||||
"Settings saved successfully!": "設定が正常に保存されました!",
|
"Settings saved successfully!": "設定が正常に保存されました!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "ნაბიჯების დაყენება",
|
"Set Steps": "ნაბიჯების დაყენება",
|
||||||
"Set Title Auto-Generation Model": "სათაურის ავტომატური გენერაციის მოდელის დაყენება",
|
"Set Title Auto-Generation Model": "სათაურის ავტომატური გენერაციის მოდელის დაყენება",
|
||||||
"Set Voice": "ხმის დაყენება",
|
"Set Voice": "ხმის დაყენება",
|
||||||
|
"Set Model": "მოდელის დაყენება",
|
||||||
"Settings": "ხელსაწყოები",
|
"Settings": "ხელსაწყოები",
|
||||||
"Settings saved successfully!": "პარამეტრები წარმატებით განახლდა!",
|
"Settings saved successfully!": "პარამეტრები წარმატებით განახლდა!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "단계 설정",
|
"Set Steps": "단계 설정",
|
||||||
"Set Title Auto-Generation Model": "제목 자동 생성 모델 설정",
|
"Set Title Auto-Generation Model": "제목 자동 생성 모델 설정",
|
||||||
"Set Voice": "음성 설정",
|
"Set Voice": "음성 설정",
|
||||||
|
"Set Model": "모델 설정",
|
||||||
"Settings": "설정",
|
"Settings": "설정",
|
||||||
"Settings saved successfully!": "설정이 성공적으로 저장되었습니다!",
|
"Settings saved successfully!": "설정이 성공적으로 저장되었습니다!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Stel Stappen in",
|
"Set Steps": "Stel Stappen in",
|
||||||
"Set Title Auto-Generation Model": "Stel Titel Auto-Generatie Model in",
|
"Set Title Auto-Generation Model": "Stel Titel Auto-Generatie Model in",
|
||||||
"Set Voice": "Stel Stem in",
|
"Set Voice": "Stel Stem in",
|
||||||
|
"Set Model": "Stel die model op",
|
||||||
"Settings": "Instellingen",
|
"Settings": "Instellingen",
|
||||||
"Settings saved successfully!": "Instellingen succesvol opgeslagen!",
|
"Settings saved successfully!": "Instellingen succesvol opgeslagen!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Ustaw kroki",
|
"Set Steps": "Ustaw kroki",
|
||||||
"Set Title Auto-Generation Model": "Ustaw model automatycznego generowania tytułów",
|
"Set Title Auto-Generation Model": "Ustaw model automatycznego generowania tytułów",
|
||||||
"Set Voice": "Ustaw głos",
|
"Set Voice": "Ustaw głos",
|
||||||
|
"Set Model": "Ustaw model",
|
||||||
"Settings": "Ustawienia",
|
"Settings": "Ustawienia",
|
||||||
"Settings saved successfully!": "Ustawienia zapisane pomyślnie!",
|
"Settings saved successfully!": "Ustawienia zapisane pomyślnie!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Definir Etapas",
|
"Set Steps": "Definir Etapas",
|
||||||
"Set Title Auto-Generation Model": "Definir Modelo de Geração Automática de Título",
|
"Set Title Auto-Generation Model": "Definir Modelo de Geração Automática de Título",
|
||||||
"Set Voice": "Definir Voz",
|
"Set Voice": "Definir Voz",
|
||||||
|
"Set Model": "Definir Modelo",
|
||||||
"Settings": "Configurações",
|
"Settings": "Configurações",
|
||||||
"Settings saved successfully!": "Configurações salvas com sucesso!",
|
"Settings saved successfully!": "Configurações salvas com sucesso!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Definir Etapas",
|
"Set Steps": "Definir Etapas",
|
||||||
"Set Title Auto-Generation Model": "Definir Modelo de Geração Automática de Título",
|
"Set Title Auto-Generation Model": "Definir Modelo de Geração Automática de Título",
|
||||||
"Set Voice": "Definir Voz",
|
"Set Voice": "Definir Voz",
|
||||||
|
"Set Model": "Definir Modelo",
|
||||||
"Settings": "Configurações",
|
"Settings": "Configurações",
|
||||||
"Settings saved successfully!": "Configurações salvas com sucesso!",
|
"Settings saved successfully!": "Configurações salvas com sucesso!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Установить шаги",
|
"Set Steps": "Установить шаги",
|
||||||
"Set Title Auto-Generation Model": "Установить модель автогенерации заголовков",
|
"Set Title Auto-Generation Model": "Установить модель автогенерации заголовков",
|
||||||
"Set Voice": "Установить голос",
|
"Set Voice": "Установить голос",
|
||||||
|
"Set Model": "Установить модель",
|
||||||
"Settings": "Настройки",
|
"Settings": "Настройки",
|
||||||
"Settings saved successfully!": "Настройки успешно сохранены!",
|
"Settings saved successfully!": "Настройки успешно сохранены!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Ange steg",
|
"Set Steps": "Ange steg",
|
||||||
"Set Title Auto-Generation Model": "Ange modell för automatisk generering av titel",
|
"Set Title Auto-Generation Model": "Ange modell för automatisk generering av titel",
|
||||||
"Set Voice": "Ange röst",
|
"Set Voice": "Ange röst",
|
||||||
|
"Set Model": "Ställ in modell",
|
||||||
"Settings": "Inställningar",
|
"Settings": "Inställningar",
|
||||||
"Settings saved successfully!": "Inställningar sparades framgångsrikt!",
|
"Settings saved successfully!": "Inställningar sparades framgångsrikt!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Adımları Ayarla",
|
"Set Steps": "Adımları Ayarla",
|
||||||
"Set Title Auto-Generation Model": "Otomatik Başlık Oluşturma Modelini Ayarla",
|
"Set Title Auto-Generation Model": "Otomatik Başlık Oluşturma Modelini Ayarla",
|
||||||
"Set Voice": "Ses Ayarla",
|
"Set Voice": "Ses Ayarla",
|
||||||
|
"Set Model": "Model Ayarla",
|
||||||
"Settings": "Ayarlar",
|
"Settings": "Ayarlar",
|
||||||
"Settings saved successfully!": "Ayarlar başarıyla kaydedildi!",
|
"Settings saved successfully!": "Ayarlar başarıyla kaydedildi!",
|
||||||
"Share": "Paylaş",
|
"Share": "Paylaş",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Встановити кроки",
|
"Set Steps": "Встановити кроки",
|
||||||
"Set Title Auto-Generation Model": "Встановити модель автогенерації заголовків",
|
"Set Title Auto-Generation Model": "Встановити модель автогенерації заголовків",
|
||||||
"Set Voice": "Встановити голос",
|
"Set Voice": "Встановити голос",
|
||||||
|
"Set Model": "Встановити модель",
|
||||||
"Settings": "Налаштування",
|
"Settings": "Налаштування",
|
||||||
"Settings saved successfully!": "Налаштування успішно збережено!",
|
"Settings saved successfully!": "Налаштування успішно збережено!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "Đặt Số Bước",
|
"Set Steps": "Đặt Số Bước",
|
||||||
"Set Title Auto-Generation Model": "Đặt tiêu đề tự động",
|
"Set Title Auto-Generation Model": "Đặt tiêu đề tự động",
|
||||||
"Set Voice": "Đặt Giọng nói",
|
"Set Voice": "Đặt Giọng nói",
|
||||||
|
"Set Model": "Thiết lập mô hình",
|
||||||
"Settings": "Cài đặt",
|
"Settings": "Cài đặt",
|
||||||
"Settings saved successfully!": "Cài đặt đã được lưu thành công!",
|
"Settings saved successfully!": "Cài đặt đã được lưu thành công!",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "设置步骤",
|
"Set Steps": "设置步骤",
|
||||||
"Set Title Auto-Generation Model": "设置标题自动生成模型",
|
"Set Title Auto-Generation Model": "设置标题自动生成模型",
|
||||||
"Set Voice": "设置声音",
|
"Set Voice": "设置声音",
|
||||||
|
"Set Model": "设置模型",
|
||||||
"Settings": "设置",
|
"Settings": "设置",
|
||||||
"Settings saved successfully!": "设置已保存",
|
"Settings saved successfully!": "设置已保存",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -350,6 +350,7 @@
|
|||||||
"Set Steps": "設定步數",
|
"Set Steps": "設定步數",
|
||||||
"Set Title Auto-Generation Model": "設定自動生成標題用模型",
|
"Set Title Auto-Generation Model": "設定自動生成標題用模型",
|
||||||
"Set Voice": "設定語音",
|
"Set Voice": "設定語音",
|
||||||
|
"Set Model": "設定模型",
|
||||||
"Settings": "設定",
|
"Settings": "設定",
|
||||||
"Settings saved successfully!": "成功儲存設定",
|
"Settings saved successfully!": "成功儲存設定",
|
||||||
"Share": "",
|
"Share": "",
|
||||||
|
@ -102,6 +102,7 @@ type AudioSettings = {
|
|||||||
STTEngine?: string;
|
STTEngine?: string;
|
||||||
TTSEngine?: string;
|
TTSEngine?: string;
|
||||||
speaker?: string;
|
speaker?: string;
|
||||||
|
OpenAIModel?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type TitleSettings = {
|
type TitleSettings = {
|
||||||
|
Loading…
Reference in New Issue
Block a user