mirror of
https://github.com/QuentinFuxa/WhisperLiveKit.git
synced 2026-03-07 22:33:36 +00:00
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
try:
|
|
from whisperlivekit.whisper_streaming_custom.whisper_online import backend_factory, warmup_asr
|
|
except ImportError:
|
|
from .whisper_streaming_custom.whisper_online import backend_factory, warmup_asr
|
|
from argparse import Namespace
|
|
|
|
|
|
class TranscriptionEngine:
|
|
_instance = None
|
|
_initialized = False
|
|
|
|
def __new__(cls, *args, **kwargs):
|
|
if cls._instance is None:
|
|
cls._instance = super().__new__(cls)
|
|
return cls._instance
|
|
|
|
def __init__(self, **kwargs):
|
|
if TranscriptionEngine._initialized:
|
|
return
|
|
|
|
defaults = {
|
|
"host": "localhost",
|
|
"port": 8000,
|
|
"warmup_file": None,
|
|
"confidence_validation": False,
|
|
"diarization": False,
|
|
"min_chunk_size": 0.5,
|
|
"model": "tiny",
|
|
"model_cache_dir": None,
|
|
"model_dir": None,
|
|
"lan": "auto",
|
|
"task": "transcribe",
|
|
"backend": "faster-whisper",
|
|
"vac": False,
|
|
"vac_chunk_size": 0.04,
|
|
"buffer_trimming": "segment",
|
|
"buffer_trimming_sec": 15,
|
|
"log_level": "DEBUG",
|
|
"ssl_certfile": None,
|
|
"ssl_keyfile": None,
|
|
"transcription": True,
|
|
"vad": True,
|
|
}
|
|
|
|
config_dict = {**defaults, **kwargs}
|
|
|
|
if 'no_transcription' in kwargs:
|
|
config_dict['transcription'] = not kwargs['no_transcription']
|
|
if 'no_vad' in kwargs:
|
|
config_dict['vad'] = not kwargs['no_vad']
|
|
|
|
config_dict.pop('no_transcription', None)
|
|
config_dict.pop('no_vad', None)
|
|
|
|
if 'language' in kwargs:
|
|
config_dict['lan'] = kwargs['language']
|
|
config_dict.pop('language', None)
|
|
|
|
self.args = Namespace(**config_dict)
|
|
|
|
self.asr = None
|
|
self.tokenizer = None
|
|
self.diarization = None
|
|
|
|
if self.args.transcription:
|
|
self.asr, self.tokenizer = backend_factory(self.args)
|
|
warmup_asr(self.asr, self.args.warmup_file)
|
|
|
|
if self.args.diarization:
|
|
from whisperlivekit.diarization.diarization_online import DiartDiarization
|
|
self.diarization = DiartDiarization()
|
|
|
|
TranscriptionEngine._initialized = True
|