Spaces:
Running
Running
from argparse import Namespace | |
import os | |
from modules.whisper.faster_whisper_inference import FasterWhisperInference | |
from modules.whisper.whisper_Inference import WhisperInference | |
from modules.whisper.insanely_fast_whisper_inference import InsanelyFastWhisperInference | |
from modules.whisper.whisper_base import WhisperBase | |
class WhisperFactory: | |
def create_whisper_inference( | |
whisper_type: str, | |
model_dir: str, | |
output_dir: str, | |
args: Namespace | |
) -> "WhisperBase": | |
""" | |
Create a whisper inference class based on the provided whisper_type. | |
Parameters | |
---------- | |
whisper_type: str | |
The repository name of whisper inference to use. Supported values are: | |
- "faster-whisper" from | |
- "whisper" | |
- insanely-fast-whisper", "insanely_fast_whisper", "insanelyfastwhisper", | |
"insanely-faster-whisper", "insanely_faster_whisper", "insanelyfasterwhisper" | |
model_dir: str | |
The directory path where the whisper model is located. | |
output_dir: str | |
The directory path where the output files will be saved. | |
args: Any | |
Additional arguments to be passed to the whisper inference object. | |
Returns | |
------- | |
WhisperBase | |
An instance of the appropriate whisper inference class based on the whisper_type. | |
""" | |
# Temporal fix of the bug : https://github.com/jhj0517/Whisper-WebUI/issues/144 | |
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True' | |
whisper_type = whisper_type.lower().strip() | |
faster_whisper_typos = ["faster_whisper", "faster-whisper", "fasterwhisper"] | |
whisper_typos = ["whisper"] | |
insanely_fast_whisper_typos = [ | |
"insanely_fast_whisper", "insanely-fast-whisper", "insanelyfastwhisper", | |
"insanely_faster_whisper", "insanely-faster-whisper", "insanelyfasterwhisper" | |
] | |
if whisper_type in faster_whisper_typos: | |
return FasterWhisperInference(model_dir, output_dir, args) | |
elif whisper_type in whisper_typos: | |
return WhisperInference(model_dir, output_dir, args) | |
elif whisper_type in insanely_fast_whisper_typos: | |
return InsanelyFastWhisperInference(model_dir, output_dir, args) | |
else: | |
return FasterWhisperInference(model_dir, output_dir, args) | |