初始化提交

This commit is contained in:
lvyulong
2026-06-12 14:59:20 +08:00
parent c1d00901a8
commit 00718f47f3
85 changed files with 15799 additions and 0 deletions

317
config.example.toml Normal file
View File

@@ -0,0 +1,317 @@
[app]
video_source = "pexels" # "pexels" or "pixabay"
# 是否隐藏配置面板
hide_config = false
# Azure TTS V1(edge_tts) 单次流式请求超时时间,单位秒。
# 网络异常、服务端限流或 voice 与文本语言不匹配时edge_tts 可能长期卡住。
# 默认 30 秒可避免 WebUI 任务无反馈;慢网络或代理环境可适当调大。
# 设置为 0 表示禁用超时。
edge_tts_timeout = 30
# 是否校验外部 API 和素材下载的 TLS 证书。
# 默认必须开启,避免 Pexels/Pixabay API key 和下载素材被中间人攻击篡改。
# 只有在企业代理或自签证书环境明确需要时,才临时改为 false。
tls_verify = true
# Pexels API Key
# Register at https://www.pexels.com/api/ to get your API key.
# You can use multiple keys to avoid rate limits.
# For example: pexels_api_keys = ["123adsf4567adf89","abd1321cd13efgfdfhi"]
# 特别注意格式Key 用英文双引号括起来多个Key用逗号隔开
pexels_api_keys = []
# Pixabay API Key
# Register at https://pixabay.com/api/docs/ to get your API key.
# You can use multiple keys to avoid rate limits.
# For example: pixabay_api_keys = ["123adsf4567adf89","abd1321cd13efgfdfhi"]
# 特别注意格式Key 用英文双引号括起来多个Key用逗号隔开
pixabay_api_keys = []
# 支持的提供商 (Supported providers):
# openai
# moonshot (月之暗面)
# azure
# qwen (通义千问)
# deepseek
# gemini
# ollama
# g4f (disabled by default; set enable_g4f=true only after accepting its risks)
# oneapi
# cloudflare
# minimax
# mimo (Xiaomi MiMo)
# ernie (文心一言)
# modelscope (魔搭社区)
# litellm (100+ providers via LiteLLM gateway)
llm_provider = "openai"
########## Pollinations AI Settings
# Visit https://pollinations.ai/ to learn more
# API Key is optional - leave empty for public access
pollinations_api_key = ""
# Default base URL for Pollinations API
pollinations_base_url = "https://pollinations.ai/api/v1"
# Default model for text generation
pollinations_model_name = "openai-fast"
########## Ollama Settings
# No need to set it unless you want to use your own proxy
ollama_base_url = ""
# Check your available models at https://ollama.com/library
ollama_model_name = ""
########## OpenAI API Key
# Get your API key at https://platform.openai.com/api-keys
# 也可以填写兼容 OpenAI Chat Completions 协议的供应商密钥,
# 例如 OpenRouter 这类提供自定义 base_url 的平台。
openai_api_key = ""
# No need to set it unless you want to use your own proxy
# 如果使用兼容 OpenAI 接口的平台,请在这里填写对应的 base_url。
openai_base_url = ""
# Check your available models at https://platform.openai.com/account/limits
# 如果使用兼容供应商,请填写该平台要求的模型 ID。
openai_model_name = "gpt-4o-mini"
########## Moonshot API Key
# Visit https://platform.moonshot.cn/console/api-keys to get your API key.
moonshot_api_key = ""
moonshot_base_url = "https://api.moonshot.cn/v1"
moonshot_model_name = "moonshot-v1-8k"
########## OneAPI API Key
# Visit https://github.com/songquanpeng/one-api to get your API key
oneapi_api_key = ""
oneapi_base_url = ""
oneapi_model_name = ""
########## G4F
# g4f relies on reverse-engineered third-party endpoints and is not recommended
# for production. Prefer official APIs, OpenAI-compatible providers, LiteLLM,
# Ollama, or local inference.
# If you still need it, install the optional dependency with:
# uv sync --extra g4f
enable_g4f = false
# Visit https://github.com/xtekky/gpt4free to get more details
# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py
g4f_model_name = "gpt-3.5-turbo"
########## Azure API Key
# Visit https://learn.microsoft.com/zh-cn/azure/ai-services/openai/ to get more details
# API documentation: https://learn.microsoft.com/zh-cn/azure/ai-services/openai/reference
azure_api_key = ""
azure_base_url = ""
azure_model_name = "gpt-35-turbo" # replace with your model deployment name
azure_api_version = "2024-02-15-preview"
########## Gemini API Key
gemini_api_key = ""
gemini_model_name = "gemini-2.5-flash"
########## Grok API Key
grok_api_key = ""
grok_model_name = "grok-4.3"
grok_base_url = "https://api.x.ai/v1"
########## Qwen API Key
# Visit https://dashscope.console.aliyun.com/apiKey to get your API key
# Visit below links to get more details
# https://tongyi.aliyun.com/qianwen/
# https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction
qwen_api_key = ""
qwen_model_name = "qwen-max"
########## MiniMax API Key
# Visit https://platform.minimax.io to get your API key
# MiniMax API is OpenAI-compatible
# Available models: MiniMax-M2.7 (default), MiniMax-M2.7-highspeed
minimax_api_key = ""
minimax_base_url = "https://api.minimax.io/v1"
minimax_model_name = "MiniMax-M2.7"
########## Xiaomi MiMo API Key
# Xiaomi MiMo API is OpenAI-compatible.
# Visit https://platform.xiaomimimo.com/docs/zh-CN/quick-start/first-api-call to get more details.
mimo_api_key = ""
mimo_base_url = "https://api.xiaomimimo.com/v1"
mimo_model_name = "mimo-v2.5-pro"
# Xiaomi MiMo TTS uses the same API key and base_url as MiMo LLM.
mimo_tts_model_name = "mimo-v2.5-tts"
# Optional natural language style prompt for MiMo TTS.
mimo_tts_style_prompt = "请用自然、清晰、适合短视频旁白的语气朗读。"
########## DeepSeek API Key
# Visit https://platform.deepseek.com/api_keys to get your API key
deepseek_api_key = ""
deepseek_base_url = "https://api.deepseek.com"
deepseek_model_name = "deepseek-chat"
########## ModelScope API Key
# Visit https://modelscope.cn/docs/model-service/API-Inference/intro to get your API key
# And note that you need to bind your Alibaba Cloud account before using the API.
modelscope_api_key = ""
modelscope_base_url = "https://api-inference.modelscope.cn/v1/"
modelscope_model_name = "Qwen/Qwen3-32B"
########## LiteLLM (AI Gateway — 100+ providers)
# LiteLLM routes to any LLM provider via a unified interface.
# Use this for providers not directly supported above: Anthropic (native API),
# AWS Bedrock, Google Vertex AI, Cohere, Mistral, Together AI, etc.
# Visit https://docs.litellm.ai/docs/providers for the full list.
#
# LiteLLM reads provider API keys from environment variables automatically:
# OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, AWS_ACCESS_KEY_ID, etc.
# Set the appropriate env var for your chosen provider before running.
#
# Model name in LiteLLM format: "provider/model-name"
# Examples: "openai/gpt-4o", "anthropic/claude-sonnet-4-20250514",
# "bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0",
# "gemini/gemini-2.5-flash", "ollama/llama3"
litellm_model_name = "openai/gpt-4o-mini"
# Subtitle Provider, "edge" or "whisper"
# If empty, the subtitle will not be generated
subtitle_provider = "edge"
#
# ImageMagick
#
# Once you have installed it, ImageMagick will be automatically detected, except on Windows!
# On Windows, for example "C:\Program Files (x86)\ImageMagick-7.1.1-Q16-HDRI\magick.exe"
# Download from https://imagemagick.org/archive/binaries/ImageMagick-7.1.1-29-Q16-x64-static.exe
# imagemagick_path = "C:\\Program Files (x86)\\ImageMagick-7.1.1-Q16\\magick.exe"
#
# FFMPEG
#
# 通常情况下ffmpeg 会被自动下载,并且会被自动检测到。
# 但是如果你的环境有问题,无法自动下载,可能会遇到如下错误:
# RuntimeError: No ffmpeg exe could be found.
# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.
# 此时你可以手动下载 ffmpeg 并设置 ffmpeg_path下载地址https://www.gyan.dev/ffmpeg/builds/
# Under normal circumstances, ffmpeg is downloaded automatically and detected automatically.
# However, if there is an issue with your environment that prevents automatic downloading, you might encounter the following error:
# RuntimeError: No ffmpeg exe could be found.
# Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.
# In such cases, you can manually download ffmpeg and set the ffmpeg_path, download link: https://www.gyan.dev/ffmpeg/builds/
# ffmpeg_path = "C:\\Users\\harry\\Downloads\\ffmpeg.exe"
#########################################################################################
# 当视频生成成功后API服务提供的视频下载接入点默认为当前服务的地址和监听端口
# 比如 http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4
# 如果你需要使用域名对外提供服务一般会用nginx做代理则可以设置为你的域名
# 比如 https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4
# endpoint="https://xxxx.com"
# When the video is successfully generated, the API service provides a download endpoint for the video, defaulting to the service's current address and listening port.
# For example, http://127.0.0.1:8080/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4
# If you need to provide the service externally using a domain name (usually done with nginx as a proxy), you can set it to your domain name.
# For example, https://xxxx.com/tasks/6357f542-a4e1-46a1-b4c9-bf3bd0df5285/final-1.mp4
# endpoint="https://xxxx.com"
endpoint = ""
# Video material storage location
# material_directory = "" # Indicates that video materials will be downloaded to the default folder, the default folder is ./storage/cache_videos under the current project
# material_directory = "/user/harry/videos" # Indicates that video materials will be downloaded to a specified folder
# material_directory = "task" # Indicates that video materials will be downloaded to the current task's folder, this method does not allow sharing of already downloaded video materials
# 视频素材存放位置
# material_directory = "" #表示将视频素材下载到默认的文件夹,默认文件夹为当前项目下的 ./storage/cache_videos
# material_directory = "/user/harry/videos" #表示将视频素材下载到指定的文件夹中
# material_directory = "task" #表示将视频素材下载到当前任务的文件夹中,这种方式无法共享已经下载的视频素材
material_directory = ""
# Used for state management of the task
enable_redis = false
redis_host = "localhost"
redis_port = 6379
redis_db = 0
redis_password = ""
# 文生视频时的最大并发任务数
max_concurrent_tasks = 5
# 并发任务已满后的最大排队任务数,超过后接口返回 429避免匿名请求无限堆积
max_queued_tasks = 100
[whisper]
# Only effective when subtitle_provider is "whisper"
# Run on GPU with FP16
# model = WhisperModel(model_size, device="cuda", compute_type="float16")
# Run on GPU with INT8
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
# Run on CPU with INT8
# model = WhisperModel(model_size, device="cpu", compute_type="int8")
# recommended model_size: "large-v3"
model_size = "large-v3"
# if you want to use GPU, set device="cuda"
device = "CPU"
compute_type = "int8"
[proxy]
### Use a proxy to access the Pexels API
### Format: "http://<username>:<password>@<proxy>:<port>"
### Example: "http://user:pass@proxy:1234"
### Doc: https://requests.readthedocs.io/en/latest/user/advanced/#proxies
# http = "http://10.10.1.10:3128"
# https = "http://10.10.1.10:1080"
[azure]
# Azure Speech API Key
# Get your API key at https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/SpeechServices
speech_key = ""
speech_region = ""
[siliconflow]
# SiliconFlow API Key
# Get your API key at https://siliconflow.cn
api_key = ""
[ui]
# UI related settings
# 是否隐藏日志信息
# Whether to hide logs in the UI
hide_log = false
# 字幕位置设置 (Subtitle position settings)
# 可选值 (Available values): "top", "center", "bottom", "custom"
# subtitle_position = "custom"
# 自定义位置,表示离顶部的百分比 (0-100),仅当 subtitle_position = "custom" 时生效
# Custom position as percentage from top (0-100), only effective when subtitle_position = "custom"
# custom_position = 70.0
########## Upload-Post (Cross-post to TikTok/Instagram)
# Upload-Post allows you to automatically cross-post generated videos to TikTok and Instagram.
# Visit https://upload-post.com to create an account and get your API key.
# API Documentation: https://docs.upload-post.com
# Enable/disable Upload-Post integration
upload_post_enabled = false
# Your Upload-Post API key
upload_post_api_key = ""
# Your Upload-Post username
upload_post_username = ""
# Platforms to cross-post to (options: "tiktok", "instagram")
upload_post_platforms = ["tiktok", "instagram"]
# Automatically cross-post videos after generation (if false, you'll need to call the API manually)
upload_post_auto_upload = false