|
import os |
|
import subprocess |
|
from typing import IO, Union |
|
|
|
from modules.speaker import Speaker, speaker_mgr |
|
|
|
|
|
def get_datasets_dir(): |
|
""" |
|
列出 ./datasets/data_* 文件夹 |
|
""" |
|
dataset_path = "./datasets" |
|
dataset_list = os.listdir(dataset_path) |
|
dataset_list = [ |
|
d for d in dataset_list if os.path.isdir(os.path.join(dataset_path, d)) |
|
] |
|
dataset_list = [d for d in dataset_list if d.startswith("data_")] |
|
return dataset_list |
|
|
|
|
|
def get_datasets_listfile(): |
|
datasets = get_datasets_dir() |
|
listfiles = [] |
|
for d in datasets: |
|
dir_path = os.path.join("./datasets", d) |
|
files = os.listdir(dir_path) |
|
for f in files: |
|
if f.endswith(".list"): |
|
listfiles.append(os.path.join(dir_path, f)) |
|
return listfiles |
|
|
|
|
|
def run_speaker_ft( |
|
batch_size: int, epochs: int, train_text: bool, data_path: str, init_speaker: str |
|
): |
|
command = ["python3", "-m", "modules.finetune.train_speaker"] |
|
command += [ |
|
f"--batch_size={batch_size}", |
|
f"--epochs={epochs}", |
|
f"--data_path={data_path}", |
|
] |
|
if train_text: |
|
command.append("--train_text") |
|
if init_speaker: |
|
command.append(f"--init_speaker={init_speaker}") |
|
process = subprocess.Popen( |
|
command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=1 |
|
) |
|
|
|
return process |
|
|