Use generated short id for llm asr tts

This commit is contained in:
Xin Wang
2026-02-12 19:05:50 +08:00
parent 14991af1bf
commit 28ca003662
6 changed files with 98 additions and 27 deletions

View File

@@ -9,8 +9,29 @@ from contextlib import contextmanager
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from app.db import Base, engine, DATABASE_URL
from app.id_generator import short_id
from app.models import Voice, Assistant, KnowledgeBase, Workflow, LLMModel, ASRModel, KnowledgeDocument
VOICE_MODEL = "FunAudioLLM/CosyVoice2-0.5B"
SEED_VOICE_IDS = {
"alex": short_id("tts"),
"david": short_id("tts"),
"bella": short_id("tts"),
"claire": short_id("tts"),
}
SEED_LLM_IDS = {
"deepseek_chat": short_id("llm"),
"glm_4": short_id("llm"),
"embedding_3_small": short_id("llm"),
}
SEED_ASR_IDS = {
"sensevoice_small": short_id("asr"),
"telespeech_asr": short_id("asr"),
}
def ensure_db_dir():
"""确保 SQLite 数据目录存在。"""
@@ -105,15 +126,51 @@ def init_default_data():
# 参考: https://docs.siliconflow.cn/cn/api-reference/audio/create-speech
voices = [
# 男声 (Male Voices)
Voice(id="alex", name="Alex", vendor="OpenAI Compatible", gender="Male", language="en",
description="Steady male voice.", is_system=True),
Voice(id="david", name="David", vendor="OpenAI Compatible", gender="Male", language="en",
description="Cheerful male voice.", is_system=True),
Voice(
id=SEED_VOICE_IDS["alex"],
name="Alex",
vendor="OpenAI Compatible",
gender="Male",
language="en",
description="Steady male voice.",
model=VOICE_MODEL,
voice_key=f"{VOICE_MODEL}:alex",
is_system=True,
),
Voice(
id=SEED_VOICE_IDS["david"],
name="David",
vendor="OpenAI Compatible",
gender="Male",
language="en",
description="Cheerful male voice.",
model=VOICE_MODEL,
voice_key=f"{VOICE_MODEL}:david",
is_system=True,
),
# 女声 (Female Voices)
Voice(id="bella", name="Bella", vendor="OpenAI Compatible", gender="Female", language="en",
description="Passionate female voice.", is_system=True),
Voice(id="claire", name="Claire", vendor="OpenAI Compatible", gender="Female", language="en",
description="Gentle female voice.", is_system=True),
Voice(
id=SEED_VOICE_IDS["bella"],
name="Bella",
vendor="OpenAI Compatible",
gender="Female",
language="en",
description="Passionate female voice.",
model=VOICE_MODEL,
voice_key=f"{VOICE_MODEL}:bella",
is_system=True,
),
Voice(
id=SEED_VOICE_IDS["claire"],
name="Claire",
vendor="OpenAI Compatible",
gender="Female",
language="en",
description="Gentle female voice.",
model=VOICE_MODEL,
voice_key=f"{VOICE_MODEL}:claire",
is_system=True,
),
]
seed_if_empty(db, Voice, voices, "✅ 默认声音数据已初始化 (OpenAI Compatible CosyVoice 2.0)")
@@ -144,14 +201,14 @@ def init_default_assistants():
prompt="你是一个友好的AI助手请用简洁清晰的语言回答用户的问题。",
language="zh",
voice_output_enabled=True,
voice="anna",
voice=SEED_VOICE_IDS["bella"],
speed=1.0,
hotwords=[],
tools=["current_time"],
interruption_sensitivity=500,
config_mode="platform",
llm_model_id="deepseek-chat",
asr_model_id="paraformer-v2",
llm_model_id=SEED_LLM_IDS["deepseek_chat"],
asr_model_id=SEED_ASR_IDS["sensevoice_small"],
),
Assistant(
id="customer_service",
@@ -162,7 +219,7 @@ def init_default_assistants():
prompt="你是一个专业的客服人员,耐心解答客户问题,提供优质的服务体验。",
language="zh",
voice_output_enabled=True,
voice="bella",
voice=SEED_VOICE_IDS["claire"],
speed=1.0,
hotwords=["客服", "投诉", "咨询"],
tools=["current_time"],
@@ -178,7 +235,7 @@ def init_default_assistants():
prompt="You are a friendly English tutor. Help users practice English conversation and explain grammar points clearly.",
language="en",
voice_output_enabled=True,
voice="alex",
voice=SEED_VOICE_IDS["alex"],
speed=1.0,
hotwords=["grammar", "vocabulary", "practice"],
tools=["current_time"],
@@ -257,7 +314,7 @@ def init_default_llm_models():
with db_session() as db:
llm_models = [
LLMModel(
id="deepseek-chat",
id=SEED_LLM_IDS["deepseek_chat"],
user_id=1,
name="DeepSeek Chat",
vendor="OpenAI Compatible",
@@ -270,7 +327,7 @@ def init_default_llm_models():
enabled=True,
),
LLMModel(
id="glm-4",
id=SEED_LLM_IDS["glm_4"],
user_id=1,
name="GLM-4",
vendor="ZhipuAI",
@@ -283,7 +340,7 @@ def init_default_llm_models():
enabled=True,
),
LLMModel(
id="text-embedding-3-small",
id=SEED_LLM_IDS["embedding_3_small"],
user_id=1,
name="Embedding 3 Small",
vendor="OpenAI Compatible",
@@ -302,7 +359,7 @@ def init_default_asr_models():
with db_session() as db:
asr_models = [
ASRModel(
id="FunAudioLLM/SenseVoiceSmall",
id=SEED_ASR_IDS["sensevoice_small"],
user_id=1,
name="FunAudioLLM/SenseVoiceSmall",
vendor="OpenAI Compatible",
@@ -316,7 +373,7 @@ def init_default_asr_models():
enabled=True,
),
ASRModel(
id="TeleAI/TeleSpeechASR",
id=SEED_ASR_IDS["telespeech_asr"],
user_id=1,
name="TeleAI/TeleSpeechASR",
vendor="OpenAI Compatible",