Files
audio2text/start.sh
zikai 00e2a95fb7 Initial commit: audio2text 双语字幕生成服务
- 音频/视频转双语(英/中)SRT 字幕,Docker 容器化,CPU 开发/GPU 生产同一份代码
- faster-whisper ASR(词级时间戳) + 断句时间戳重算 + NLLB 翻译(模型不共驻)
- 分片上传(断点续传) + SQLite 持久化 + 主页/历史/日志页面
- 历史页文件名搜索;缓存定时清理(默认保留7天,可配置)
- 双 Dockerfile(cpu/gpu) + setup/start/stop 脚本
2026-07-06 06:54:19 +00:00

56 lines
1.8 KiB
Bash
Executable File
Raw Permalink 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.

#!/usr/bin/env bash
# 启动 audio2text 容器(幂等:已在跑则跳过)。
# CPU dev直接跑 audio2text:cpu
# GPU prod检测到 audio2text:gpu 镜像且 --gpus 可用时走 GPU 模式
set -euo pipefail
cd "$(dirname "$0")"
ROOT="$(pwd)"
CONTAINER="audio2text"
PORT="${AUDIO2TEXT_PORT:-8000}"
# 已在运行则跳过
if docker ps --format '{{.Names}}' | grep -qx "$CONTAINER"; then
echo "audio2text 已在运行:$(docker port $CONTAINER $PORT 2>/dev/null || echo "$PORT")"
exit 0
fi
# 清理已退出的同名容器
docker rm -f "$CONTAINER" >/dev/null 2>&1 || true
# 选镜像:优先 gpu回退 cpu
GPU_ARGS=()
IMAGE="audio2text:cpu"
if docker image inspect audio2text:gpu >/dev/null 2>&1; then
if command -v nvidia-smi >/dev/null 2>&1; then
IMAGE="audio2text:gpu"
GPU_ARGS=(--gpus all)
echo "检测到 GPU 镜像 + nvidia-smi使用 GPU 模式。"
else
echo "有 GPU 镜像但本机无 nvidia-smi回退 CPU 镜像。"
fi
fi
# 数据卷:上传/中间产物/输出 + 模型缓存(跨容器复用,避免重下模型)
mkdir -p "$ROOT/data/uploads" "$ROOT/data/.work" "$ROOT/data/outputs" "$ROOT/models"
echo "启动容器(镜像 $IMAGE,端口 ${PORT}..."
docker run -d --name "$CONTAINER" \
"${GPU_ARGS[@]}" \
-p "${PORT}:8000" \
-v "$ROOT/data:/data" \
-v "$ROOT/models:/models" \
-v "$ROOT/config.yaml:/app/config.yaml:ro" \
-e CONFIG_PATH=/app/config.yaml \
--restart unless-stopped \
"$IMAGE"
echo
echo "audio2text 已启动:"
echo " - 主页(上传 + 最近任务http://127.0.0.1:${PORT}/"
echo " - 历史任务http://127.0.0.1:${PORT}/history"
echo " - 日志页: http://127.0.0.1:${PORT}/logs"
echo " - API 文档http://127.0.0.1:${PORT}/docs"
echo " - 容器日志docker logs -f $CONTAINER"
echo " - 停止: ./stop.sh"