Spaces:
Running
Running
from typing import Optional | |
import os | |
from modules.utils.paths import (FASTER_WHISPER_MODELS_DIR, DIARIZATION_MODELS_DIR, OUTPUT_DIR, | |
INSANELY_FAST_WHISPER_MODELS_DIR, WHISPER_MODELS_DIR) | |
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, | |
whisper_model_dir: str = WHISPER_MODELS_DIR, | |
faster_whisper_model_dir: str = FASTER_WHISPER_MODELS_DIR, | |
insanely_fast_whisper_model_dir: str = INSANELY_FAST_WHISPER_MODELS_DIR, | |
diarization_model_dir: str = DIARIZATION_MODELS_DIR, | |
output_dir: str = OUTPUT_DIR, | |
) -> "WhisperBase": | |
""" | |
Create a whisper inference class based on the provided whisper_type. | |
Parameters | |
---------- | |
whisper_type : str | |
The type of Whisper implementation to use. Supported values (case-insensitive): | |
- "faster-whisper": https://github.com/openai/whisper | |
- "whisper": https://github.com/openai/whisper | |
- "insanely-fast-whisper": https://github.com/Vaibhavs10/insanely-fast-whisper | |
whisper_model_dir : str | |
Directory path for the Whisper model. | |
faster_whisper_model_dir : str | |
Directory path for the Faster Whisper model. | |
insanely_fast_whisper_model_dir : str | |
Directory path for the Insanely Fast Whisper model. | |
diarization_model_dir : str | |
Directory path for the diarization model. | |
output_dir : str | |
Directory path where output files will be saved. | |
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=faster_whisper_model_dir, | |
output_dir=output_dir, | |
diarization_model_dir=diarization_model_dir | |
) | |
elif whisper_type in whisper_typos: | |
return WhisperInference( | |
model_dir=whisper_model_dir, | |
output_dir=output_dir, | |
diarization_model_dir=diarization_model_dir | |
) | |
elif whisper_type in insanely_fast_whisper_typos: | |
return InsanelyFastWhisperInference( | |
model_dir=insanely_fast_whisper_model_dir, | |
output_dir=output_dir, | |
diarization_model_dir=diarization_model_dir | |
) | |
else: | |
return FasterWhisperInference( | |
model_dir=faster_whisper_model_dir, | |
output_dir=output_dir, | |
diarization_model_dir=diarization_model_dir | |
) | |