Skip to content

Commit

Permalink
refactor: apply safe automatic ruff lint fixes
Browse files Browse the repository at this point in the history
Not manually checked. Generated with:
uv run ruff check tests/ TTS/ notebooks/ recipes/ --fix
  • Loading branch information
eginhard committed Jan 16, 2025
1 parent 2e4fbb6 commit f67f0a1
Show file tree
Hide file tree
Showing 138 changed files with 690 additions and 820 deletions.
77 changes: 38 additions & 39 deletions TTS/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import tempfile
import warnings
from pathlib import Path
from typing import Optional, Union

from torch import nn

Expand All @@ -22,15 +21,15 @@ def __init__(
self,
model_name: str = "",
*,
model_path: Optional[str] = None,
config_path: Optional[str] = None,
vocoder_name: Optional[str] = None,
vocoder_path: Optional[str] = None,
vocoder_config_path: Optional[str] = None,
encoder_path: Optional[str] = None,
encoder_config_path: Optional[str] = None,
speakers_file_path: Optional[str] = None,
language_ids_file_path: Optional[str] = None,
model_path: str | None = None,
config_path: str | None = None,
vocoder_name: str | None = None,
vocoder_path: str | None = None,
vocoder_config_path: str | None = None,
encoder_path: str | None = None,
encoder_config_path: str | None = None,
speakers_file_path: str | None = None,
language_ids_file_path: str | None = None,
progress_bar: bool = True,
gpu: bool = False,
) -> None:
Expand Down Expand Up @@ -77,8 +76,8 @@ def __init__(
super().__init__()
self.manager = ModelManager(models_file=self.get_models_file_path(), progress_bar=progress_bar)
self.config = load_config(config_path) if config_path else None
self.synthesizer: Optional[Synthesizer] = None
self.voice_converter: Optional[Synthesizer] = None
self.synthesizer: Synthesizer | None = None
self.voice_converter: Synthesizer | None = None
self.model_name = ""

self.vocoder_path = vocoder_path
Expand Down Expand Up @@ -156,8 +155,8 @@ def list_models() -> list[str]:
return ModelManager(models_file=TTS.get_models_file_path(), progress_bar=False).list_models()

def download_model_by_name(
self, model_name: str, vocoder_name: Optional[str] = None
) -> tuple[Optional[Path], Optional[Path], Optional[Path], Optional[Path], Optional[Path]]:
self, model_name: str, vocoder_name: str | None = None
) -> tuple[Path | None, Path | None, Path | None, Path | None, Path | None]:
model_path, config_path, model_item = self.manager.download_model(model_name)
if "fairseq" in model_name or (model_item is not None and isinstance(model_item["model_url"], list)):
# return model directory if there are multiple files
Expand All @@ -176,7 +175,7 @@ def download_model_by_name(
vocoder_path, vocoder_config_path, _ = self.manager.download_model(vocoder_name)
return model_path, config_path, vocoder_path, vocoder_config_path, None

def load_model_by_name(self, model_name: str, vocoder_name: Optional[str] = None, *, gpu: bool = False) -> None:
def load_model_by_name(self, model_name: str, vocoder_name: str | None = None, *, gpu: bool = False) -> None:
"""Load one of the 🐸TTS models by name.
Args:
Expand All @@ -185,7 +184,7 @@ def load_model_by_name(self, model_name: str, vocoder_name: Optional[str] = None
"""
self.load_tts_model_by_name(model_name, vocoder_name, gpu=gpu)

def load_vc_model_by_name(self, model_name: str, vocoder_name: Optional[str] = None, *, gpu: bool = False) -> None:
def load_vc_model_by_name(self, model_name: str, vocoder_name: str | None = None, *, gpu: bool = False) -> None:
"""Load one of the voice conversion models by name.
Args:
Expand All @@ -205,7 +204,7 @@ def load_vc_model_by_name(self, model_name: str, vocoder_name: Optional[str] = N
use_cuda=gpu,
)

def load_tts_model_by_name(self, model_name: str, vocoder_name: Optional[str] = None, *, gpu: bool = False) -> None:
def load_tts_model_by_name(self, model_name: str, vocoder_name: str | None = None, *, gpu: bool = False) -> None:
"""Load one of 🐸TTS models by name.
Args:
Expand Down Expand Up @@ -261,11 +260,11 @@ def load_tts_model_by_path(self, model_path: str, config_path: str, *, gpu: bool

def _check_arguments(
self,
speaker: Optional[str] = None,
language: Optional[str] = None,
speaker_wav: Optional[str] = None,
emotion: Optional[str] = None,
speed: Optional[float] = None,
speaker: str | None = None,
language: str | None = None,
speaker_wav: str | None = None,
emotion: str | None = None,
speed: float | None = None,
**kwargs,
) -> None:
"""Check if the arguments are valid for the model."""
Expand All @@ -284,11 +283,11 @@ def _check_arguments(
def tts(
self,
text: str,
speaker: Optional[str] = None,
language: Optional[str] = None,
speaker_wav: Optional[str] = None,
emotion: Optional[str] = None,
speed: Optional[float] = None,
speaker: str | None = None,
language: str | None = None,
speaker_wav: str | None = None,
emotion: str | None = None,
speed: float | None = None,
split_sentences: bool = True,
**kwargs,
):
Expand Down Expand Up @@ -333,10 +332,10 @@ def tts(
def tts_to_file(
self,
text: str,
speaker: Optional[str] = None,
language: Optional[str] = None,
speaker_wav: Optional[str] = None,
emotion: Optional[str] = None,
speaker: str | None = None,
language: str | None = None,
speaker_wav: str | None = None,
emotion: str | None = None,
speed: float = 1.0,
pipe_out=None,
file_path: str = "output.wav",
Expand Down Expand Up @@ -388,7 +387,7 @@ def tts_to_file(
def voice_conversion(
self,
source_wav: str,
target_wav: Union[str, list[str]],
target_wav: str | list[str],
):
"""Voice conversion with FreeVC. Convert source wav to target speaker.
Expand All @@ -406,7 +405,7 @@ def voice_conversion(
def voice_conversion_to_file(
self,
source_wav: str,
target_wav: Union[str, list[str]],
target_wav: str | list[str],
file_path: str = "output.wav",
pipe_out=None,
) -> str:
Expand All @@ -430,9 +429,9 @@ def tts_with_vc(
self,
text: str,
*,
language: Optional[str] = None,
speaker_wav: Union[str, list[str]],
speaker: Optional[str] = None,
language: str | None = None,
speaker_wav: str | list[str],
speaker: str | None = None,
split_sentences: bool = True,
):
"""Convert text to speech with voice conversion.
Expand Down Expand Up @@ -473,10 +472,10 @@ def tts_with_vc_to_file(
self,
text: str,
*,
language: Optional[str] = None,
speaker_wav: Union[str, list[str]],
language: str | None = None,
speaker_wav: str | list[str],
file_path: str = "output.wav",
speaker: Optional[str] = None,
speaker: str | None = None,
split_sentences: bool = True,
pipe_out=None,
) -> str:
Expand Down
5 changes: 2 additions & 3 deletions TTS/bin/compute_embeddings.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import os
import sys
from argparse import RawTextHelpFormatter
from typing import Optional

import torch
from tqdm import tqdm
Expand All @@ -16,7 +15,7 @@
from TTS.utils.generic_utils import ConsoleFormatter, setup_logger


def parse_args(arg_list: Optional[list[str]]) -> argparse.Namespace:
def parse_args(arg_list: list[str] | None) -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="""Compute embedding vectors for each audio file in a dataset and store them keyed by `{dataset_name}#{file_path}` in a .pth file\n\n"""
"""
Expand Down Expand Up @@ -185,7 +184,7 @@ def compute_embeddings(
print("Speaker embeddings saved at:", mapping_file_path)


def main(arg_list: Optional[list[str]] = None):
def main(arg_list: list[str] | None = None):
setup_logger("TTS", level=logging.INFO, stream=sys.stdout, formatter=ConsoleFormatter())
args = parse_args(arg_list)

Expand Down
6 changes: 2 additions & 4 deletions TTS/bin/compute_statistics.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import argparse
import glob
import logging
import os
import sys
from typing import Optional

import numpy as np
from tqdm import tqdm
Expand All @@ -18,7 +16,7 @@
from TTS.utils.generic_utils import ConsoleFormatter, setup_logger


def parse_args(arg_list: Optional[list[str]]) -> tuple[argparse.Namespace, list[str]]:
def parse_args(arg_list: list[str] | None) -> tuple[argparse.Namespace, list[str]]:
parser = argparse.ArgumentParser(description="Compute mean and variance of spectrogtram features.")
parser.add_argument("config_path", type=str, help="TTS config file path to define audio processin parameters.")
parser.add_argument("out_path", type=str, help="save path (directory and filename).")
Expand All @@ -31,7 +29,7 @@ def parse_args(arg_list: Optional[list[str]]) -> tuple[argparse.Namespace, list[
return parser.parse_known_args(arg_list)


def main(arg_list: Optional[list[str]] = None):
def main(arg_list: list[str] | None = None):
"""Run preprocessing process."""
setup_logger("TTS", level=logging.INFO, stream=sys.stderr, formatter=ConsoleFormatter())
args, overrides = parse_args(arg_list)
Expand Down
5 changes: 2 additions & 3 deletions TTS/bin/extract_tts_spectrograms.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import logging
import sys
from pathlib import Path
from typing import Optional

import numpy as np
import torch
Expand All @@ -27,7 +26,7 @@
use_cuda = torch.cuda.is_available()


def parse_args(arg_list: Optional[list[str]]) -> argparse.Namespace:
def parse_args(arg_list: list[str] | None) -> argparse.Namespace:
parser = argparse.ArgumentParser()
parser.add_argument("--config_path", type=str, help="Path to config file for training.", required=True)
parser.add_argument("--checkpoint_path", type=str, help="Model file to be restored.", required=True)
Expand Down Expand Up @@ -244,7 +243,7 @@ def extract_spectrograms(
f.write(f"{data[0] / data[1]}.npy\n")


def main(arg_list: Optional[list[str]] = None) -> None:
def main(arg_list: list[str] | None = None) -> None:
setup_logger("TTS", level=logging.INFO, stream=sys.stdout, formatter=ConsoleFormatter())
args = parse_args(arg_list)
config = load_config(args.config_path)
Expand Down
5 changes: 2 additions & 3 deletions TTS/bin/find_unique_phonemes.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import multiprocessing
import sys
from argparse import RawTextHelpFormatter
from typing import Optional

from tqdm.contrib.concurrent import process_map

Expand All @@ -21,7 +20,7 @@ def compute_phonemes(item: dict) -> set[str]:
return set(ph)


def parse_args(arg_list: Optional[list[str]]) -> argparse.Namespace:
def parse_args(arg_list: list[str] | None) -> argparse.Namespace:
parser = argparse.ArgumentParser(
description="""Find all the unique characters or phonemes in a dataset.\n\n"""
"""
Expand All @@ -35,7 +34,7 @@ def parse_args(arg_list: Optional[list[str]]) -> argparse.Namespace:
return parser.parse_args(arg_list)


def main(arg_list: Optional[list[str]] = None) -> None:
def main(arg_list: list[str] | None = None) -> None:
setup_logger("TTS", level=logging.INFO, stream=sys.stdout, formatter=ConsoleFormatter())
global phonemizer
args = parse_args(arg_list)
Expand Down
5 changes: 2 additions & 3 deletions TTS/bin/synthesize.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import logging
import sys
from argparse import RawTextHelpFormatter
from typing import Optional

# pylint: disable=redefined-outer-name, unused-argument
from TTS.utils.generic_utils import ConsoleFormatter, setup_logger
Expand Down Expand Up @@ -135,7 +134,7 @@
"""


def parse_args(arg_list: Optional[list[str]]) -> argparse.Namespace:
def parse_args(arg_list: list[str] | None) -> argparse.Namespace:
"""Parse arguments."""
parser = argparse.ArgumentParser(
description=description.replace(" ```\n", ""),
Expand Down Expand Up @@ -311,7 +310,7 @@ def parse_args(arg_list: Optional[list[str]]) -> argparse.Namespace:
return args


def main(arg_list: Optional[list[str]] = None) -> None:
def main(arg_list: list[str] | None = None) -> None:
"""Entry point for `tts` command line interface."""
args = parse_args(arg_list)
stream = sys.stderr if args.pipe_out else sys.stdout
Expand Down
17 changes: 6 additions & 11 deletions TTS/bin/train_encoder.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import logging
import os
Expand Down Expand Up @@ -219,10 +218,8 @@ def train(model, optimizer, scheduler, criterion, data_loader, eval_data_loader,

if global_step % c.print_step == 0:
print(
" | > Step:{} Loss:{:.5f} GradNorm:{:.5f} "
"StepTime:{:.2f} LoaderTime:{:.2f} AvGLoaderTime:{:.2f} LR:{:.6f}".format(
global_step, loss.item(), grad_norm, step_time, loader_time, avg_loader_time, current_lr
),
f" | > Step:{global_step} Loss:{loss.item():.5f} GradNorm:{grad_norm:.5f} "
f"StepTime:{step_time:.2f} LoaderTime:{loader_time:.2f} AvGLoaderTime:{avg_loader_time:.2f} LR:{current_lr:.6f}",
flush=True,
)

Expand All @@ -236,10 +233,8 @@ def train(model, optimizer, scheduler, criterion, data_loader, eval_data_loader,

print("")
print(
">>> Epoch:{} AvgLoss: {:.5f} GradNorm:{:.5f} "
"EpochTime:{:.2f} AvGLoaderTime:{:.2f} ".format(
epoch, tot_loss / len(data_loader), grad_norm, epoch_time, avg_loader_time
),
f">>> Epoch:{epoch} AvgLoss: {tot_loss / len(data_loader):.5f} GradNorm:{grad_norm:.5f} "
f"EpochTime:{epoch_time:.2f} AvGLoaderTime:{avg_loader_time:.2f} ",
flush=True,
)
# evaluation
Expand All @@ -249,7 +244,7 @@ def train(model, optimizer, scheduler, criterion, data_loader, eval_data_loader,
print("\n\n")
print("--> EVAL PERFORMANCE")
print(
" | > Epoch:{} AvgLoss: {:.5f} ".format(epoch, eval_loss),
f" | > Epoch:{epoch} AvgLoss: {eval_loss:.5f} ",
flush=True,
)
# save the best checkpoint
Expand Down Expand Up @@ -311,7 +306,7 @@ def main(args): # pylint: disable=redefined-outer-name
scheduler = None

num_params = count_parameters(model)
print("\n > Model has {} parameters".format(num_params), flush=True)
print(f"\n > Model has {num_params} parameters", flush=True)

if use_cuda:
model = model.cuda()
Expand Down
3 changes: 1 addition & 2 deletions TTS/bin/train_vocoder.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
import os
import sys
from dataclasses import dataclass, field
from typing import Optional

from trainer import Trainer, TrainerArgs

Expand All @@ -18,7 +17,7 @@ class TrainVocoderArgs(TrainerArgs):
config_path: str = field(default=None, metadata={"help": "Path to the config file."})


def main(arg_list: Optional[list[str]] = None):
def main(arg_list: list[str] | None = None):
"""Run `tts` model training directly by a `config.json` file."""
setup_logger("TTS", level=logging.INFO, stream=sys.stdout, formatter=ConsoleFormatter())

Expand Down
4 changes: 2 additions & 2 deletions TTS/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def register_config(model_name: str) -> Coqpit:
return config_class


def _process_model_name(config_dict: Dict) -> str:
def _process_model_name(config_dict: dict) -> str:
"""Format the model name as expected. It is a band-aid for the old `vocoder` model names.
Args:
Expand All @@ -68,7 +68,7 @@ def _process_model_name(config_dict: Dict) -> str:
return model_name


def load_config(config_path: Union[str, os.PathLike[Any]]) -> Coqpit:
def load_config(config_path: str | os.PathLike[Any]) -> Coqpit:
"""Import `json` or `yaml` files as TTS configs. First, load the input file as a `dict` and check the model name
to find the corresponding Config class. Then initialize the Config.
Expand Down
Loading

0 comments on commit f67f0a1

Please sign in to comment.