Download run_multiple_process.sh from kevinwang676/RWKV-TTS: direct link, hf CLI and curl.
- Browser
- Download file 3.4 kB
-
https://huggingface.co/kevinwang676/RWKV-TTS/resolve/main/run_multiple_process.sh
- Command line
-
hf download hf://kevinwang676/RWKV-TTS/run_multiple_process.sh
-
curl -L -o run_multiple_process.sh https://huggingface.co/kevinwang676/RWKV-TTS/resolve/main/run_multiple_process.sh
3.4 kB
| export PYTHONPATH=/home/yueyulin/github/CosyVoice:/home/yueyulin/github/CosyVoice/third_party/Matcha-TTS/:/home/yueyulin/github/RWKVTTS | |
| # 设置默认参数 | |
| LANGUAGE="zh" | |
| OUTPUT_DIR="/home/yueyulin/data/speech_corpus" | |
| COSY_MODEL_DIR="/home/yueyulin/models/CosyVoice2-0.5B/" | |
| PROMPTS_DIR="extract_data/prompts/zh" | |
| DEVICE="cuda:0" | |
| PARQUET_FILES=() | |
| JSONL_FILES=() | |
| FILE_TYPE="" # 用于标记文件类型 | |
| is_cross_lingual="" | |
| is_instructed="" | |
| # 解析命令行参数 | |
| while [[ $# -gt 0 ]]; do | |
| case $1 in | |
| --language) | |
| LANGUAGE="$2" | |
| shift 2 | |
| ;; | |
| --output_dir) | |
| OUTPUT_DIR="$2" | |
| shift 2 | |
| ;; | |
| --cosy_model_dir) | |
| COSY_MODEL_DIR="$2" | |
| shift 2 | |
| ;; | |
| --prompts_dir) | |
| PROMPTS_DIR="$2" | |
| shift 2 | |
| ;; | |
| --parquet_files) | |
| # 接收多个parquet文件路径 | |
| shift | |
| while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do | |
| PARQUET_FILES+=("$1") | |
| shift | |
| done | |
| FILE_TYPE="parquet" | |
| ;; | |
| --jsonl_files) | |
| # 接收多个jsonl文件路径 | |
| shift | |
| while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do | |
| JSONL_FILES+=("$1") | |
| shift | |
| done | |
| FILE_TYPE="jsonl" | |
| ;; | |
| --device) | |
| DEVICE="$2" | |
| shift 2 | |
| ;; | |
| --cross_lingual) | |
| is_cross_lingual="--is_cross_lingual" | |
| shift | |
| ;; | |
| --instructed) | |
| is_instructed="--is_instructed" | |
| shift | |
| ;; | |
| *) | |
| echo "未知参数: $1" | |
| exit 1 | |
| ;; | |
| esac | |
| done | |
| # 检查是否提供了文件 | |
| if [ "$FILE_TYPE" == "parquet" ]; then | |
| if [ ${#PARQUET_FILES[@]} -eq 0 ]; then | |
| echo "错误: 未指定parquet文件,请使用 --parquet_files 参数" | |
| exit 1 | |
| fi | |
| FILES=("${PARQUET_FILES[@]}") | |
| FILE_ARG="--parquet_files" | |
| echo "将处理 ${#FILES[@]} 个parquet文件" | |
| elif [ "$FILE_TYPE" == "jsonl" ]; then | |
| if [ ${#JSONL_FILES[@]} -eq 0 ]; then | |
| echo "错误: 未指定jsonl文件,请使用 --jsonl_files 参数" | |
| exit 1 | |
| fi | |
| FILES=("${JSONL_FILES[@]}") | |
| FILE_ARG="--jsonl_files" | |
| echo "将处理 ${#FILES[@]} 个jsonl文件" | |
| else | |
| echo "错误: 请使用 --parquet_files 或 --jsonl_files 参数指定输入文件" | |
| exit 1 | |
| fi | |
| echo "运行参数:" | |
| echo "语言: $LANGUAGE" | |
| echo "输出目录: $OUTPUT_DIR" | |
| echo "模型目录: $COSY_MODEL_DIR" | |
| echo "提示词目录: $PROMPTS_DIR" | |
| echo "设备: $DEVICE" | |
| echo "文件类型: $FILE_TYPE" | |
| # 确保输出目录存在 | |
| mkdir -p $OUTPUT_DIR | |
| # 启动处理进程,每个文件一个进程 | |
| for ((i=0; i<${#FILES[@]}; i++)); do | |
| FILE="${FILES[$i]}" | |
| FILENAME=$(basename "$FILE") | |
| echo "处理文件 $FILENAME 使用 $DEVICE" | |
| # 在后台启动进程 | |
| nohup python data/utils/utilitie.py \ | |
| --task generate_speech_tokens \ | |
| --language $LANGUAGE \ | |
| $is_cross_lingual \ | |
| $FILE_ARG "$FILE" \ | |
| --output_dir $OUTPUT_DIR \ | |
| --cosy_model_dir $COSY_MODEL_DIR \ | |
| --prompts_dir $PROMPTS_DIR \ | |
| $is_instructed \ | |
| --device "$DEVICE" > "$OUTPUT_DIR/log_${FILENAME%.*}.log" 2>&1 & | |
| # 记录进程ID | |
| PID=$! | |
| echo "启动进程 PID: $PID 处理文件: $FILENAME 使用 $DEVICE" | |
| # 等待一点时间确保进程启动 | |
| sleep 5 | |
| done | |
| echo "所有处理进程已启动,日志文件保存在 $OUTPUT_DIR 目录" | |
| echo "使用 'ps aux | grep utilitie.py' 命令查看运行状态" | |
| echo "使用 'nvidia-smi' 命令监控GPU使用情况" | |
| # 等待所有后台进程完成 | |
| wait | |
| echo "所有处理已完成" |