|
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) |
|
|
|
shift |
|
while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do |
|
PARQUET_FILES+=("$1") |
|
shift |
|
done |
|
FILE_TYPE="parquet" |
|
;; |
|
--jsonl_files) |
|
|
|
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 & |
|
|
|
|
|
PID=$! |
|
echo "启动进程 PID: $PID 处理文件: $FILENAME 使用 $DEVICE" |
|
|
|
|
|
sleep 5 |
|
done |
|
|
|
echo "所有处理进程已启动,日志文件保存在 $OUTPUT_DIR 目录" |
|
echo "使用 'ps aux | grep utilitie.py' 命令查看运行状态" |
|
echo "使用 'nvidia-smi' 命令监控GPU使用情况" |
|
|
|
|
|
wait |
|
echo "所有处理已完成" |