- scheduler: ffmpeg 异步线程 + GPU 串行调度 + 模型复用(2N→2 次加载) - pipeline: 阶段拆分(extract/asr/translate),中间数据存 Task 字段 - translate_service: 长度排序批处理,padding 浪费减少 91% - model_manager: ASR/翻译不共驻,BatchedInferencePipeline 批量解码 - 日志分级: INFO=任务流转里程碑,DEBUG=进度详情;默认 INFO - 前端: 日志最新在上+滚动感知+退避轮询;24h 时间;上传中状态显示 - /health: 返回完整 Whisper/NLLB 配置 - upload_service: 单事务 complete + 扩展名白名单 - task_router: 合并 UploadSession 虚拟任务到列表 - Dockerfile: CPU/GPU 独立构建链,deps 缓存稳定 - prefetch_models: 安装时预下载模型权重
64 lines
3.5 KiB
YAML
64 lines
3.5 KiB
YAML
# audio2text 运行时配置模板。
|
||
# 复制为 config.yaml 后填值。所有路径相对容器内 /app。
|
||
#
|
||
# CPU dev / GPU prod 仅靠 asr + translation 两段的 device/model/compute_type/batch_size 切换。
|
||
# 下方注释标注了 CPU(开发)与 GPU(生产)的推荐值对照。
|
||
# 完整对照:CPU 用 ./setup.sh(默认),GPU 用 AUDIO2TEXT_VARIANT=gpu ./setup.sh。
|
||
|
||
server:
|
||
host: 0.0.0.0 # 容器内对外监听(由 docker -p 映射到宿主)
|
||
port: 8000
|
||
workers: 1 # ML 推理为重,固定单 worker 避免显存重复占用
|
||
|
||
storage:
|
||
upload_dir: /data/uploads # 上传视频落盘根目录
|
||
work_dir: /data/.work # 分片会话暂存 + 中间音频
|
||
output_dir: /data/outputs # 生成的 SRT 字幕输出
|
||
chunk_bytes: 1048576 # 1 MiB 服务端流式读缓冲(前端分片大小由前端定)
|
||
chunk_session_ttl_seconds: 300 # 被放弃会话的存活秒数(后台 reaper 据此清理)
|
||
cache_retention_days: 7 # 任务产物保留天数,超期清理(0=禁用)
|
||
cache_cleanup_interval_hours: 24 # 定时清理间隔(启动时跑一次,之后循环)
|
||
|
||
processing:
|
||
delete_original_after_extract: true # 提取音频成功后删除原始视频,省空间
|
||
keep_audio: false # 完成后是否保留中间 wav(默认删,只留字幕)
|
||
|
||
asr:
|
||
# CPU dev:tiny.en + int8(Whisper 同系列最小,英文专用,~39M)
|
||
# GPU prod:large-v3-turbo + float16(8x 速度,质量接近 large-v3,~3GB 显存)
|
||
model: tiny.en # CPU: tiny.en | GPU: large-v3-turbo
|
||
device: cpu # cpu | cuda
|
||
compute_type: int8 # CPU: int8 | GPU: float16
|
||
language: en # 仅英语
|
||
word_timestamps: true # 词级时间戳:让断句精确而非纯匀速估算
|
||
vad_filter: true # 过滤静音段,提升质量与速度
|
||
batch_size: 8 # CPU: 8 | GPU: 16(BatchedInferencePipeline 批量解码音频块)
|
||
|
||
translation:
|
||
# CPU dev:Helsinki-NLP/opus-mt-en-zh(~300MB,2GB 内存可跑)
|
||
# GPU prod:facebook/nllb-200-distilled-1.3B(质量最好,~2.5GB 显存)
|
||
# 注意:model 与 device 必须配套——GPU 模型配 CPU device 会 OOM,反之浪费硬件。
|
||
model: Helsinki-NLP/opus-mt-en-zh # CPU: opus-mt-en-zh | GPU: facebook/nllb-200-distilled-1.3B
|
||
device: cpu # cpu | cuda
|
||
src_lang: eng_Latn # NLLB 语言码:英语
|
||
tgt_lang: zho_Hans # NLLB 语言码:简体中文
|
||
batch_size: 8 # CPU: 8 | GPU: 32(不共驻时显存独占可用大 batch)
|
||
max_length: 256 # 单条翻译最大 token
|
||
sort_by_length: true # 按长度排序后分批,减少 padding 浪费(GPU 收益大)
|
||
|
||
segmentation:
|
||
max_words_per_line: 14 # 单行最多词数,超出按逗号拆
|
||
max_duration_seconds: 7.0 # 单条字幕最长 7 秒
|
||
min_duration_seconds: 1.0 # 单条字幕最短 1 秒(太短则合并)
|
||
max_chars_per_line: 42 # SRT 规范:每行 ≤42 字符
|
||
|
||
logging:
|
||
level: info # debug | info | warning | error(控制台最低级别)
|
||
buffer_size: 2000 # /logs 页面内存缓冲条数
|
||
|
||
docs:
|
||
enabled: true
|
||
username: admin
|
||
password: "CHANGE_ME" # 部署前务必修改;留空则禁用 /docs
|
||
realm: "audio2text docs"
|