Files
audio2text/config.example.yaml
audio2text dev a6b5c7231c perf: ASR GPU 利用率优化 — batch_size 16→32 + beam_size 5→2
faster-whisper 的 GPU 利用率呈尖刺波(峰=批量解码满载,谷=CPU 提取 Mel
特征 + 处理结果时 GPU 空闲),平均利用率低。瓶颈不在算力而在 CPU/GPU
未重叠。

- batch_size 16→32:拉长单次 GPU 解码时间,相对掩盖 CPU 特征提取间隙,
  尖刺变宽变平,平均利用率上升。turbo FP16 仅 ~1.6GB,3090 24G 充裕。
- beam_size 5→2:turbo 模型鲁棒,候选数 5→2 大幅减少解码步数,让 GPU
  峰更密、间隙更短。保留 1 个候选做歧义发音保险,质量损失小。
- beam_size 从硬编码提到 config 可调,CPU/CPU 模板/GPU/示例 四份配置对齐
- /health 增加 asr_beam_size,模型加载日志同步输出 batch+beam

word_timestamps 保留 True:segmenter 强依赖词级时间戳做精确断句,
关闭会触发匀速估算退化路径,得不偿失。
2026-07-06 22:28:37 +08:00

65 lines
3.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 devtiny.en + int8Whisper 同系列最小,英文专用,~39M
# GPU prodlarge-v3-turbo + float168x 速度,质量接近 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: 32BatchedInferencePipeline 批量解码音频块,拉长单次 GPU 解码掩盖 CPU 特征提取间隙)
beam_size: 5 # CPU: 5默认| GPU: 2turbo 鲁棒可降,候选数↓解码步数↓,加速明显质量损失小)
translation:
# CPU devHelsinki-NLP/opus-mt-en-zh~300MB2GB 内存可跑)
# GPU prodfacebook/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"