mirror of
https://github.com/zenlm/zen-translator.git
synced 2026-07-27 06:11:29 +00:00
114 lines
3.2 KiB
Makefile
114 lines
3.2 KiB
Makefile
# Zen Translator Makefile
|
|
# Real-time multimodal translation with voice cloning and lip sync
|
|
|
|
SHELL := /bin/bash
|
|
PYTHON := python3
|
|
UV := uv
|
|
VENV := .venv
|
|
MODEL_DIR := ./models
|
|
|
|
.PHONY: all install dev clean test lint format serve train download help
|
|
|
|
all: install download
|
|
|
|
## Installation
|
|
|
|
install: venv ## Install production dependencies
|
|
$(UV) pip install -e .
|
|
|
|
dev: venv ## Install development dependencies
|
|
$(UV) pip install -e ".[all]"
|
|
$(UV) pip install git+https://github.com/huggingface/transformers
|
|
|
|
venv: ## Create virtual environment
|
|
$(UV) venv $(VENV)
|
|
@echo "Virtual environment created at $(VENV)"
|
|
@echo "Activate with: source $(VENV)/bin/activate"
|
|
|
|
## Model Downloads
|
|
|
|
download: download-qwen3-omni download-cosyvoice ## Download all models
|
|
|
|
download-qwen3-omni: ## Download Qwen3-Omni (30B)
|
|
@echo "Downloading Qwen3-Omni-30B-A3B-Instruct..."
|
|
$(UV) run hf download Qwen/Qwen3-Omni-30B-A3B-Instruct --local-dir $(MODEL_DIR)/qwen3-omni
|
|
|
|
download-cosyvoice: ## Download CosyVoice 2.0
|
|
@echo "Downloading CosyVoice 2.0..."
|
|
$(UV) run hf download FunAudioLLM/CosyVoice2-0.5B --local-dir $(MODEL_DIR)/cosyvoice
|
|
|
|
download-quantized: ## Download quantized models (smaller)
|
|
@echo "Downloading quantized Qwen3-Omni AWQ..."
|
|
$(UV) run hf download cpatonn/Qwen3-Omni-30B-A3B-Instruct-AWQ-4bit --local-dir $(MODEL_DIR)/qwen3-omni-4bit
|
|
|
|
## Running
|
|
|
|
serve: ## Start the translation server
|
|
$(UV) run zen-serve --host 0.0.0.0 --port 8000
|
|
|
|
serve-dev: ## Start server with auto-reload
|
|
$(UV) run zen-serve --host 0.0.0.0 --port 8000 --reload
|
|
|
|
translate: ## Translate a file (use: make translate FILE=input.mp4)
|
|
$(UV) run zen-translate $(FILE) -o output.mp4
|
|
|
|
## Training
|
|
|
|
train-identity: ## Train Zen identity
|
|
$(UV) run zen-translate train --type identity --output ./outputs/identity
|
|
|
|
train-anchor: ## Train news anchor adaptation
|
|
$(UV) run zen-translate train --type anchor --output ./outputs/anchor
|
|
|
|
dataset-build: ## Build news anchor training dataset
|
|
$(UV) run zen-translate dataset build --output ./data/news_anchors --channels cnn,bbc,nhk,dw
|
|
|
|
dataset-list: ## List available news channels
|
|
$(UV) run zen-translate dataset list
|
|
|
|
swift-train: ## Run ms-swift training (after train-identity generates config)
|
|
swift sft --config ./outputs/identity/train_config.yaml
|
|
|
|
## Development
|
|
|
|
test: ## Run tests
|
|
$(UV) run pytest tests/ -v --cov=zen_translator
|
|
|
|
lint: ## Run linter
|
|
$(UV) run ruff check src/ tests/
|
|
|
|
format: ## Format code
|
|
$(UV) run ruff format src/ tests/
|
|
|
|
typecheck: ## Run type checker
|
|
$(UV) run mypy src/
|
|
|
|
## Docker
|
|
|
|
docker-build: ## Build Docker image
|
|
docker build -t zenlm/zen-translator:latest .
|
|
|
|
docker-run: ## Run Docker container
|
|
docker run -p 8000:8000 --gpus all zenlm/zen-translator:latest
|
|
|
|
## Cleanup
|
|
|
|
clean: ## Clean build artifacts
|
|
rm -rf build/ dist/ *.egg-info
|
|
find . -type d -name __pycache__ -exec rm -rf {} +
|
|
find . -type f -name "*.pyc" -delete
|
|
|
|
clean-models: ## Remove downloaded models
|
|
rm -rf $(MODEL_DIR)/*
|
|
|
|
clean-all: clean clean-models ## Clean everything
|
|
rm -rf $(VENV)
|
|
|
|
## Help
|
|
|
|
help: ## Show this help
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
|
|
|
# Default target
|
|
.DEFAULT_GOAL := help
|