diff --git a/.gitignore b/.gitignore index 88a5edd..1ae0b93 100644 --- a/.gitignore +++ b/.gitignore @@ -130,4 +130,5 @@ dmypy.json .idea _docs -assets \ No newline at end of file +assets +.vscode \ No newline at end of file diff --git a/src/subsai/cli.py b/src/subsai/cli.py index 58db2d1..77c8d7b 100644 --- a/src/subsai/cli.py +++ b/src/subsai/cli.py @@ -124,7 +124,7 @@ def main(): "string)") parser.add_argument('-f', '--format', '--subtitles-format', default='srt', help=f"Output subtitles format, available " - f"formats {available_subs_formats()}") + f"formats {available_subs_formats(include_extensions=False)}") parser.add_argument('-df', '--destination-folder', default=None, help='The directory where the subtitles will be stored, default to the same folder where ' 'the media file(s) is stored.') diff --git a/src/subsai/main.py b/src/subsai/main.py index b709601..14f8833 100644 --- a/src/subsai/main.py +++ b/src/subsai/main.py @@ -142,11 +142,9 @@ def available_translation_languages(model: Union[str, TranslationModel]) -> list :return: list of available languages """ if type(model) == str: - translation_model = Tools.create_translation_model(model) - langs = translation_model.available_languages() + langs = Tools.create_translation_model(model).available_languages() else: langs = model.available_languages() - del translation_model return langs @staticmethod diff --git a/src/subsai/models/faster_whisper_model.py b/src/subsai/models/faster_whisper_model.py index e26ab7b..744686a 100644 --- a/src/subsai/models/faster_whisper_model.py +++ b/src/subsai/models/faster_whisper_model.py @@ -200,6 +200,25 @@ class FasterWhisperModel(AbstractModel): 'options': None, 'default': "\"'.。,,!!??::”)]}、" }, + 'vad_filter': { + 'type': bool, + 'description': 'If True, use the integrated Silero VAD model to filter out parts of the audio without speech.', + 'options': None, + 'default': False + }, + 'vad_parameters': { + 'type': dict, + 'description': 'Parameters for splitting long audios into speech chunks using silero VAD.', + 'options': None, + 'default': { + 'threshold': 0.5, + 'min_speech_duration_ms': 250, + 'max_speech_duration_s': float('inf'), + 'min_silence_duration_ms': 2000, + 'window_size_samples': 1024, + 'speech_pad_ms': 400 + } + }, } def __init__(self, model_config): diff --git a/src/subsai/utils.py b/src/subsai/utils.py index 18a7bea..0995216 100644 --- a/src/subsai/utils.py +++ b/src/subsai/utils.py @@ -48,11 +48,20 @@ def available_translation_models() -> list: return models -def available_subs_formats(): +def available_subs_formats(include_extensions=True): """ Returns available subtitle formats from :attr:`pysubs2.FILE_EXTENSION_TO_FORMAT_IDENTIFIER` + :param include_extensions: include the dot separator in file extensions + :return: list of subtitle formats """ - return list(FILE_EXTENSION_TO_FORMAT_IDENTIFIER.keys()) + + extensions = list(FILE_EXTENSION_TO_FORMAT_IDENTIFIER.keys()) + + if include_extensions: + return extensions + else: + # remove the '.' separator from extension names + return [ext.split('.')[1] for ext in extensions]