# OpenTalking 环境变量模板 (environment template) # 复制为 .env 后,只取消注释你实际使用的 provider profile。 # LLM、STT、TTS 是三个独立模块;除非同一厂商明确说明可共用, # 不要默认把一个 provider key 复用到另一个模块。 # 推荐目录布局: # $DIGITAL_HUMAN_HOME/opentalking OpenTalking 源码 # $DIGITAL_HUMAN_HOME/models 所有模型权重 # $DIGITAL_HUMAN_HOME/model-repos 第三方模型源码 checkout # $DIGITAL_HUMAN_HOME/runtimes 第三方 sidecar / preprocess venv # # 改成你自己的部署根目录 # DIGITAL_HUMAN_HOME=/path/to/digital_human # OPENTALKING_HOME=$DIGITAL_HUMAN_HOME/opentalking # OPENTALKING_MODEL_ROOT=$DIGITAL_HUMAN_HOME/models # OPENTALKING_MODEL_REPO_ROOT=$DIGITAL_HUMAN_HOME/model-repos # OPENTALKING_RUNTIME_ROOT=$DIGITAL_HUMAN_HOME/runtimes # ============================================================================= # 0. 服务与运行时基础配置 (Service / Runtime Basics) # ============================================================================= OPENTALKING_API_HOST=0.0.0.0 OPENTALKING_API_PORT=8000 OPENTALKING_WEB_HOST=0.0.0.0 OPENTALKING_WEB_PORT=5173 VITE_BACKEND_PORT=8000 # 头像资产与生成结果目录 (avatar assets / exports)。 OPENTALKING_AVATARS_DIR=./examples/avatars OPENTALKING_EXPORTS_DIR=./data/exports # 自定义形象上传时的可选抠图 provider;仅在上传弹窗勾选“上传时抠除背景”后调用。 # 启用本地 rembg 前先安装:uv pip install --python .venv/bin/python '.[avatar-matting]' OPENTALKING_AVATAR_MATTING_PROVIDER=rembg OPENTALKING_AVATAR_MATTING_DEVICE=cpu # rembg provider 需要预先下载 u2net.onnx,并显式填写模型文件路径。 # 下载:https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net.onnx # MD5:60024c5c889badc19c04ad937298a77b OPENTALKING_AVATAR_MATTING_MODEL_PATH= OPENTALKING_AVATAR_MATTING_TIMEOUT_SEC=60 # WebUI 默认展示的数字人模型;CLI --model 会覆盖该值。 OPENTALKING_DEFAULT_MODEL=mock OPENTALKING_TORCH_DEVICE=auto # Leave empty to auto-detect system ffmpeg, then fall back to imageio-ffmpeg. OPENTALKING_FFMPEG_BIN= OPENTALKING_DEFAULT_FPS=25 OPENTALKING_TTS_SAMPLE_RATE=16000 OPENTALKING_TTS_STREAMING_DECODE=1 # External RTMPS/WHIP output is opt-in and fail-closed. Keep disabled until # the streaming branch and local harness are configured. OPENTALKING_STREAMING_ENABLED=0 # Required when streaming is enabled outside the isolated local test profile. # OPENTALKING_STREAMING_CONTROL_TOKEN= # OPENTALKING_STREAMING_INTERNAL_CONTROL_TOKEN= # OPENTALKING_STREAMING_ALLOW_LOCAL_TARGETS=0 # OPENTALKING_STREAMING_RTMPS_CA_FILE= # OPENTALKING_STREAMING_WHIP_CA_FILE= # OPENTALKING_STREAMING_WHIP_TLS_VERIFY=1 # OPENTALKING_STREAMING_RTMPS_TLS_VERIFY=1 # Test-only; never enable in production: # OPENTALKING_STREAMING_TEST_AUTH_BYPASS=1 # Secret-free output snapshots are short-lived and are marked stale after a worker restart. # OPENTALKING_STREAMING_SNAPSHOT_TTL_SEC=3600 # ============================================================================= # 1. 大语言模型配置 (LLM Provider) # ============================================================================= # 仅用于对话文本生成;不会配置 STT 或 TTS。 OPENTALKING_LLM_PROVIDER=openai_compatible OPENTALKING_LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 OPENTALKING_LLM_API_KEY= OPENTALKING_LLM_MODEL=qwen-flash OPENTALKING_LLM_SYSTEM_PROMPT=You are a friendly digital human assistant. # Agent 知识库检索使用 LightRAG。默认复用上面的 LLM base_url/api_key; # 如果你的 embedding 服务不同,可以单独覆盖下面的 embedding 配置。 OPENTALKING_AGENT_KNOWLEDGE_ROOT=./data/knowledge OPENTALKING_AGENT_LIGHTRAG_QUERY_MODE=hybrid OPENTALKING_AGENT_LIGHTRAG_EMBEDDING_MODEL=text-embedding-v4 OPENTALKING_AGENT_LIGHTRAG_EMBEDDING_DIM=1024 # 默认 false:普通对话检索只使用 LightRAG;设为 true 才恢复 SQLite token/chunk 兜底匹配。 OPENTALKING_AGENT_LIGHTRAG_CHUNK_FALLBACK_ENABLED=false # OPENTALKING_AGENT_LIGHTRAG_ROOT=./data/knowledge/_lightrag # OPENTALKING_AGENT_LIGHTRAG_LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # OPENTALKING_AGENT_LIGHTRAG_LLM_API_KEY= # OPENTALKING_AGENT_LIGHTRAG_LLM_MODEL=qwen-turbo # OPENTALKING_AGENT_LIGHTRAG_EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # OPENTALKING_AGENT_LIGHTRAG_EMBEDDING_API_KEY= # 示例:其他 OpenAI-compatible endpoint。 # OPENTALKING_LLM_BASE_URL=https://api.example.com/openai/v1 # OPENTALKING_LLM_API_KEY= # OPENTALKING_LLM_MODEL=provider-model-name # # 也可指向 Atlas Cloud (OpenAI-compatible 网关,托管 DeepSeek / Qwen 等模型): # https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=opentalking # OPENTALKING_LLM_BASE_URL=https://api.atlascloud.ai/v1 # OPENTALKING_LLM_API_KEY= # OPENTALKING_LLM_MODEL=deepseek-ai/deepseek-v4-pro # Agent 记忆库配置 (Character Memory / Mem0) # 默认使用 Mem0 智能记忆引擎和智能编排;是否在对话中生效由会话/角色的 memory_enabled 控制。 # 当前适配使用 mem0.Memory 开源 SDK,不需要 MEM0_API_KEY。 # 多轮对话总结。建议保持开启;窗口越大,摘要越少,但每次摘要覆盖的上下文越长。 OPENTALKING_MEMORY_SUMMARY_ENABLED=true OPENTALKING_MEMORY_SUMMARY_TURN_WINDOW=8 OPENTALKING_MEMORY_SUMMARY_MAX_ITEMS=3 # Mem0 自身使用的 LLM。OpenAI-compatible 服务可填写对应 base_url。 # OPENTALKING_MEMORY_MEM0_LLM_PROVIDER=openai # OPENTALKING_MEMORY_MEM0_LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # OPENTALKING_MEMORY_MEM0_LLM_API_KEY= # OPENTALKING_MEMORY_MEM0_LLM_MODEL=qwen-flash # Mem0 自身使用的 embedding 模型。通常与上面的 LLM 使用同一个 OpenAI-compatible base_url。 # OPENTALKING_MEMORY_MEM0_EMBEDDER_PROVIDER=openai # OPENTALKING_MEMORY_MEM0_EMBEDDER_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # OPENTALKING_MEMORY_MEM0_EMBEDDER_API_KEY= # OPENTALKING_MEMORY_MEM0_EMBEDDER_MODEL=text-embedding-v4 # ============================================================================= # 2. 语音识别配置 (STT Provider Profiles) # ============================================================================= # 在这里选择默认 STT provider;WebUI 每个 session 仍可覆盖。 # 支持:dashscope、openai_compatible、xiaomi_mimo、sensevoice。 OPENTALKING_STT_DEFAULT_PROVIDER=dashscope OPENTALKING_STT_ENABLED_PROVIDERS=dashscope,sensevoice,openai_compatible,xiaomi_mimo # 2.1 DashScope Paraformer STT(API 语音识别) OPENTALKING_STT_DASHSCOPE_MODEL=paraformer-realtime-v2 OPENTALKING_STT_DASHSCOPE_API_KEY= # 2.2 通用 OpenAI-compatible STT # 仅用于提供 /audio/transcriptions 或兼容行为的服务。 # OPENTALKING_STT_DEFAULT_PROVIDER=openai_compatible # OPENTALKING_STT_OPENAI_BASE_URL=https://api.openai.com/v1 # OPENTALKING_STT_OPENAI_API_KEY= # OPENTALKING_STT_OPENAI_MODEL=whisper-1 # OPENTALKING_STT_OPENAI_RESPONSE_FORMAT=json # OPENTALKING_STT_OPENAI_PROTOCOL=audio_transcriptions # OPENTALKING_STT_OPENAI_AUDIO_FORMAT=wav # 2.3 小米 MiMo STT profile # 小米 MiMo 与通用 OpenAI-compatible 配置有意分离,避免误复用 key/base_url。 # OPENTALKING_STT_DEFAULT_PROVIDER=xiaomi_mimo # OPENTALKING_STT_XIAOMI_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1 # OPENTALKING_STT_XIAOMI_API_KEY= # OPENTALKING_STT_XIAOMI_MODEL=mimo-v2.5-asr # OPENTALKING_STT_XIAOMI_RESPONSE_FORMAT=json # OPENTALKING_STT_XIAOMI_PROTOCOL=chat_completions # OPENTALKING_STT_XIAOMI_AUDIO_FORMAT=wav # 2.4 本地 SenseVoice STT (Local STT) # OPENTALKING_STT_DEFAULT_PROVIDER=sensevoice # OPENTALKING_LOCAL_AUDIO_MODEL_ROOT=$OPENTALKING_MODEL_ROOT/local-audio # OPENTALKING_STT_SENSEVOICE_MODEL=iic/SenseVoiceSmall # OPENTALKING_STT_SENSEVOICE_MODEL_DIR=$OPENTALKING_LOCAL_AUDIO_MODEL_ROOT/iic__SenseVoiceSmall # OPENTALKING_STT_SENSEVOICE_DEVICE=auto # ============================================================================= # 3. 语音合成配置 (TTS Provider Profiles) # ============================================================================= # 在这里选择默认 TTS provider;WebUI 每个 session 仍可覆盖。 # 支持:edge、dashscope、openai_compatible、xiaomi_mimo、local_cosyvoice、 # indextts、cosyvoice、sambert。 OPENTALKING_TTS_DEFAULT_PROVIDER=edge OPENTALKING_TTS_ENABLED_PROVIDERS=edge,dashscope,openai_compatible,xiaomi_mimo,local_cosyvoice,indextts # 3.1 Edge TTS:无需 API key。 OPENTALKING_TTS_EDGE_VOICE=zh-CN-XiaoxiaoNeural # 3.2 DashScope Qwen TTS 实时 API (realtime API) # OPENTALKING_TTS_DEFAULT_PROVIDER=dashscope # OPENTALKING_TTS_DASHSCOPE_MODEL=qwen3-tts-flash-realtime # OPENTALKING_TTS_DASHSCOPE_VOICE=Cherry # OPENTALKING_TTS_DASHSCOPE_API_KEY= # OPENTALKING_TTS_DASHSCOPE_SERVICE_URL=wss://dashscope.aliyuncs.com/api-ws/v1/realtime # OPENTALKING_QWEN_TTS_REUSE_WS=1 # OPENTALKING_QWEN_TTS_LANGUAGE=Chinese # 3.3 通用 OpenAI-compatible TTS # 仅用于提供 /audio/speech 或兼容行为的服务。 # OPENTALKING_TTS_DEFAULT_PROVIDER=openai_compatible # OPENTALKING_TTS_OPENAI_BASE_URL=https://api.openai.com/v1 # OPENTALKING_TTS_OPENAI_API_KEY= # OPENTALKING_TTS_OPENAI_MODEL=gpt-4o-mini-tts # OPENTALKING_TTS_OPENAI_VOICE=alloy # OPENTALKING_TTS_OPENAI_RESPONSE_FORMAT=wav # OPENTALKING_TTS_OPENAI_PROTOCOL=audio_speech # 3.4 小米 MiMo TTS profile # 音色复刻 (voice clone) 复用该 profile,请求时把 model 覆盖为 mimo-v2.5-tts-voiceclone。 # OPENTALKING_TTS_DEFAULT_PROVIDER=xiaomi_mimo # OPENTALKING_TTS_XIAOMI_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1 # OPENTALKING_TTS_XIAOMI_API_KEY= # OPENTALKING_TTS_XIAOMI_MODEL=mimo-v2.5-tts # OPENTALKING_TTS_XIAOMI_VOICE=mimo_default # OPENTALKING_TTS_XIAOMI_RESPONSE_FORMAT=wav # OPENTALKING_TTS_XIAOMI_PROTOCOL=chat_completions # OPENTALKING_TTS_XIAOMI_PROMPT=自然、清晰、口语化的普通话。 # 3.5 本地 CosyVoice TTS (Local TTS) # OPENTALKING_TTS_DEFAULT_PROVIDER=local_cosyvoice # OPENTALKING_LOCAL_AUDIO_MODEL_ROOT=$OPENTALKING_MODEL_ROOT/local-audio # OPENTALKING_TTS_LOCAL_COSYVOICE_MODEL=FunAudioLLM/Fun-CosyVoice3-0.5B-2512 # OPENTALKING_TTS_LOCAL_COSYVOICE_MODEL_DIR=$OPENTALKING_LOCAL_AUDIO_MODEL_ROOT/FunAudioLLM__Fun-CosyVoice3-0.5B-2512 # OPENTALKING_TTS_LOCAL_COSYVOICE_RUNTIME_DIR=$OPENTALKING_MODEL_REPO_ROOT/CosyVoice # OPENTALKING_COSYVOICE_VENV_DIR=$OPENTALKING_RUNTIME_ROOT/cosyvoice/venv # OPENTALKING_TTS_LOCAL_COSYVOICE_SERVICE_URL= # OPENTALKING_TTS_LOCAL_COSYVOICE_DEVICE=auto # 3.6 IndexTTS TTS (provider=indextts; backend=local / OmniRT) # OpenTalking WebUI/API 只暴露 provider=indextts;local/omnirt 只是运行后端,和视频驱动模型 backend 类似。 # backend=local 使用同机 HTTP sidecar,不能把 index-tts 直接装进 OpenTalking 主 .venv。 # OPENTALKING_TTS_DEFAULT_PROVIDER=indextts # OPENTALKING_TTS_INDEXTTS_BACKEND=local # OPENTALKING_LOCAL_AUDIO_MODEL_ROOT=$OPENTALKING_MODEL_ROOT/local-audio # OPENTALKING_TTS_LOCAL_INDEXTTS_MODEL=IndexTeam/IndexTTS-2 # OPENTALKING_TTS_LOCAL_INDEXTTS_MODEL_DIR=$OPENTALKING_LOCAL_AUDIO_MODEL_ROOT/IndexTeam__IndexTTS-2 # OPENTALKING_TTS_LOCAL_INDEXTTS_CFG_PATH=$OPENTALKING_TTS_LOCAL_INDEXTTS_MODEL_DIR/config.yaml # OPENTALKING_TTS_LOCAL_INDEXTTS_SERVICE_URL=http://127.0.0.1:19092/synthesize # OPENTALKING_TTS_LOCAL_INDEXTTS_RUNTIME_DIR=$OPENTALKING_MODEL_REPO_ROOT/index-tts # OPENTALKING_INDEXTTS_VENV_DIR=$OPENTALKING_RUNTIME_ROOT/index-tts/venv # OPENTALKING_TTS_LOCAL_INDEXTTS_PROMPT_AUDIO=$OPENTALKING_LOCAL_AUDIO_MODEL_ROOT/voices/system/indextts-default/prompt.wav # OPENTALKING_TTS_LOCAL_INDEXTTS_DEVICE=auto # OPENTALKING_TTS_LOCAL_INDEXTTS_W2V_BERT_DIR=$OPENTALKING_LOCAL_AUDIO_MODEL_ROOT/facebook__w2v-bert-2.0 # OPENTALKING_TTS_LOCAL_INDEXTTS_MASKGCT_DIR=$OPENTALKING_LOCAL_AUDIO_MODEL_ROOT/amphion__MaskGCT # OPENTALKING_TTS_LOCAL_INDEXTTS_CAMPPLUS_DIR=$OPENTALKING_LOCAL_AUDIO_MODEL_ROOT/funasr__campplus # OPENTALKING_TTS_LOCAL_INDEXTTS_BIGVGAN_DIR=$OPENTALKING_LOCAL_AUDIO_MODEL_ROOT/nvidia__bigvgan_v2_22khz_80band_256x # OPENTALKING_TTS_LOCAL_INDEXTTS_PRELOAD=0 # IndexTTS backend=omnirt 选项 (resident service / token-window streaming) # OpenTalking 仍使用 provider=indextts,只作为 HTTP stream client;IndexTTS 模型加载和 token-window streaming 在 OmniRT 中完成。 # OPENTALKING_TTS_DEFAULT_PROVIDER=indextts # OPENTALKING_TTS_INDEXTTS_BACKEND=omnirt # OPENTALKING_TTS_OMNIRT_INDEXTTS_SERVICE_URL=http://127.0.0.1:9012/v1/text2audio/indextts # OPENTALKING_TTS_OMNIRT_INDEXTTS_MODEL=IndexTeam/IndexTTS-2 # OPENTALKING_TTS_OMNIRT_INDEXTTS_STREAMING=1 # OPENTALKING_TTS_OMNIRT_INDEXTTS_STREAMING_MODE=token_window # OPENTALKING_TTS_OMNIRT_INDEXTTS_MAX_TEXT_TOKENS_PER_SEGMENT=80 # OPENTALKING_TTS_OMNIRT_INDEXTTS_QUICK_STREAMING_TOKENS=4 # OPENTALKING_TTS_OMNIRT_INDEXTTS_INTERVAL_SILENCE_MS=0 # OPENTALKING_TTS_OMNIRT_INDEXTTS_TOKEN_WINDOW_SIZE=40 # OPENTALKING_TTS_OMNIRT_INDEXTTS_TOKEN_WINDOW_HOP=96 # OPENTALKING_TTS_OMNIRT_INDEXTTS_TOKEN_WINDOW_CONTEXT=8 # OPENTALKING_TTS_OMNIRT_INDEXTTS_TOKEN_WINDOW_OVERLAP_MS=60 # ============================================================================= # 4. 数字人运行时与模型后端 (Avatar Runtime / Model Backends) # ============================================================================= # scripts/start_unified.sh --backend/--model 可自动设置这些变量。 # 4.1 OmniRT 后端 (backend) # OMNIRT_ENDPOINT=http://127.0.0.1:9000 # OPENTALKING_OMNIRT_ENDPOINT=http://127.0.0.1:9000 # OPENTALKING_OMNIRT_AUDIO2VIDEO_PATH_TEMPLATE=/v1/audio2video/{model} # OPENTALKING_OMNIRT_VIDEO_CLONE_PATH_TEMPLATE=/v1/avatar/video-clone/{model} # OPENTALKING_OMNIRT_AUDIO2VIDEO_MODELS_PATH=/v1/audio2video/models # 4.2 本地 QuickTalk 后端 (Local backend) # OPENTALKING_DEFAULT_MODEL=quicktalk # OPENTALKING_QUICKTALK_BACKEND=local # OPENTALKING_QUICKTALK_ASSET_ROOT=$OPENTALKING_MODEL_ROOT/quicktalk # OPENTALKING_QUICKTALK_MODEL_BACKEND=auto # OPENTALKING_QUICKTALK_DEVICE=cuda:0 # OPENTALKING_QUICKTALK_HUBERT_DEVICE= # OPENTALKING_QUICKTALK_WORKER_CACHE=1 # OPENTALKING_QUICKTALK_SLICE_LEN=28 # Apple Silicon/MPS defaults to 12 for lower per-chunk latency; Linux CUDA keeps 28. # Set this on Apple Silicon when smooth long-text playback matters more than 25fps motion. # Linux CUDA keeps the model-native 25fps when this is unset. # OPENTALKING_QUICKTALK_FPS=14 # OPENTALKING_QUICKTALK_RENDER_CHUNK_MS=500 # OPENTALKING_QUICKTALK_PREFETCH=1 # OPENTALKING_PREWARM_AVATARS= # 4.3 本地 Wav2Lip 后端 (Local backend) # OPENTALKING_DEFAULT_MODEL=wav2lip # OPENTALKING_WAV2LIP_BACKEND=local # OPENTALKING_WAV2LIP_MODEL_ROOT=$OPENTALKING_MODEL_ROOT/wav2lip # OPENTALKING_WAV2LIP_DEVICE=cuda:0 # OPENTALKING_WAV2LIP_BATCH_SIZE=8 # OPENTALKING_WAV2LIP_MAX_LONG_EDGE=832 # OPENTALKING_WAV2LIP_POSTPROCESS_MODE=easy_improved # 4.4 本地 MuseTalk 后端 (Local backend) # OPENTALKING_DEFAULT_MODEL=musetalk # OPENTALKING_MUSETALK_BACKEND=local # OPENTALKING_MUSETALK_MODEL_ROOT=$OPENTALKING_MODEL_ROOT # OPENTALKING_MUSETALK_REPO=$OPENTALKING_MODEL_REPO_ROOT/MuseTalk # OPENTALKING_MUSETALK_PREPROCESS_ROOT=$OPENTALKING_RUNTIME_ROOT/musetalk-preprocess # OPENTALKING_MUSETALK_PREPROCESS_PYTHON=$OPENTALKING_MUSETALK_PREPROCESS_ROOT/venv/bin/python # OPENTALKING_MUSETALK_DEVICE=cuda:0 # 4.5 FasterLivePortrait via OmniRT # 先单独启动带 FasterLivePortrait runtime 的 OmniRT,再通过上面的 OMNIRT_ENDPOINT 指向它。 # OPENTALKING_DEFAULT_MODEL=fasterliveportrait # ============================================================================= # 5. 高级与兼容配置 (Advanced / Compatibility) # ============================================================================= # 仅当远端服务需要主动拉取上传音频时,才需要 public base URL。 # OPENTALKING_PUBLIC_BASE_URL= # 日志与队列行为 (logging / queue)。 # OPENTALKING_LOG_LEVEL=INFO # OPENTALKING_FLASHTALK_MAX_QUEUE_SIZE=3 # OPENTALKING_FLASHTALK_SLOT_TIMEOUT_SEC=3600 # FlashTalk 运行时调参 (runtime tuning)。 # OPENTALKING_FLASHTALK_FRAME_NUM=33 # OPENTALKING_FLASHTALK_MOTION_FRAMES_NUM=5 # OPENTALKING_FLASHTALK_SAMPLE_STEPS=2 # OPENTALKING_FLASHTALK_SAMPLE_SHIFT=5 # OPENTALKING_FLASHTALK_JPEG_QUALITY=55 # OPENTALKING_FLASHTALK_TTS_BOUNDARY_FADE_MS=18 # OPENTALKING_FLASHTALK_TTS_COALESCE_MIN_CHARS=6 # OPENTALKING_FLASHTALK_TTS_COALESCE_MAX_CHARS=80 # OPENTALKING_FLASHTALK_TTS_TAIL_FADE_MS=80 # OPENTALKING_FLASHTALK_TTS_TRAILING_SILENCE_MS=320 # 旧版 vendor env 名称不推荐用于新部署;/runtime/status 可能会展示它们以便清理。 # DASHSCOPE_API_KEY= # DASHSCOPE_MODEL= # LLM_SYSTEM_PROMPT= # OPENTALKING_STT_PROVIDER= # OPENTALKING_STT_MODEL= # OPENTALKING_STT_API_KEY= # OPENTALKING_TTS_PROVIDER= # OPENTALKING_TTS_MODEL= # OPENTALKING_TTS_API_KEY=