update with multilingual option

This commit is contained in:
makaveli10
2024-01-11 08:17:56 +00:00
parent 71a062b726
commit 647c576e6a
3 changed files with 33 additions and 12 deletions
+13 -3
View File
@@ -3,11 +3,15 @@ from whisper_live.server import TranscriptionServer
if __name__ == "__main__": if __name__ == "__main__":
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--backend', type=str, default='tensorrt', help='Backends from ["tensorrt", "faster_whisper"]') parser.add_argument('--port', type=int, default=9090, help="Websocket port to run the server on.")
parser.add_argument('--backend', type=str, default='faster_whisper', help='Backends from ["tensorrt", "faster_whisper"]')
parser.add_argument('--whisper_tensorrt_path', parser.add_argument('--whisper_tensorrt_path',
type=str, type=str,
default="/root/TensorRT-LLM/examples/whisper/whisper_small_en", default=None,
help='Whisper TensorRT model path') help='Whisper TensorRT model path')
parser.add_argument('--trt_multilingual',
action="store_true",
help='Boolean only for TensorRT model. True if multilingual.')
args = parser.parse_args() args = parser.parse_args()
if args.backend == "tensorrt": if args.backend == "tensorrt":
@@ -15,4 +19,10 @@ if __name__ == "__main__":
raise ValueError("Please Provide a valid tensorrt model path") raise ValueError("Please Provide a valid tensorrt model path")
server = TranscriptionServer() server = TranscriptionServer()
server.run("0.0.0.0", port=6006, backend=args.backend, whisper_tensorrt_path=args.whisper_tensorrt_path) server.run(
"0.0.0.0",
port=6006,
backend=args.backend,
whisper_tensorrt_path=args.whisper_tensorrt_path,
multilingual=args.trt_multilingual
)
+13 -5
View File
@@ -68,7 +68,7 @@ class TranscriptionServer:
return wait_time / 60 return wait_time / 60
def recv_audio(self, websocket, backend="tensorrt", whisper_tensorrt_path=None): def recv_audio(self, websocket, backend="tensorrt", whisper_tensorrt_path=None, multilingual=False):
""" """
Receive audio chunks from a client in an infinite loop. Receive audio chunks from a client in an infinite loop.
@@ -118,7 +118,7 @@ class TranscriptionServer:
self.backend = "tensorrt" self.backend = "tensorrt"
client = ServeClientTensorRT( client = ServeClientTensorRT(
websocket, websocket,
multilingual=options["multilingual"], multilingual=multilingual,
language=options["language"], language=options["language"],
task=options["task"], task=options["task"],
client_uid=options["uid"], client_uid=options["uid"],
@@ -200,7 +200,7 @@ class TranscriptionServer:
del websocket del websocket
break break
def run(self, host, port=9090, backend="tensorrt", whisper_tensorrt_path=None): def run(self, host, port=9090, backend="tensorrt", whisper_tensorrt_path=None, multilingual=False):
""" """
Run the transcription server. Run the transcription server.
@@ -212,7 +212,8 @@ class TranscriptionServer:
functools.partial( functools.partial(
self.recv_audio, self.recv_audio,
backend=backend, backend=backend,
whisper_tensorrt_path=whisper_tensorrt_path whisper_tensorrt_path=whisper_tensorrt_path,
multilingual=multilingual
), ),
host, host,
port port
@@ -369,7 +370,14 @@ class ServeClientTensorRT(ServeClientBase):
self.language = language if multilingual else "en" self.language = language if multilingual else "en"
self.task = task self.task = task
self.eos = False self.eos = False
self.transcriber = WhisperTRTLLM(model_path, False, "assets", device="cuda") self.transcriber = WhisperTRTLLM(
model_path,
assets_dir="assets",
device="cuda",
is_multilingual=multilingual,
language=self.language,
task=self.task
)
# threading # threading
self.trans_thread = threading.Thread(target=self.speech_to_text) self.trans_thread = threading.Thread(target=self.speech_to_text)
+7 -4
View File
@@ -181,7 +181,10 @@ class WhisperTRTLLM(object):
engine_dir, engine_dir,
debug_mode=False, debug_mode=False,
assets_dir=None, assets_dir=None,
device=None device=None,
is_multilingual=False,
language="en",
task="transcribe"
): ):
world_size = 1 world_size = 1
runtime_rank = tensorrt_llm.mpi_rank() runtime_rank = tensorrt_llm.mpi_rank()
@@ -198,10 +201,10 @@ class WhisperTRTLLM(object):
# tokenizer_dir=assets_dir) # tokenizer_dir=assets_dir)
self.device = device self.device = device
self.tokenizer = get_tokenizer( self.tokenizer = get_tokenizer(
False, is_multilingual,
num_languages=self.encoder.num_languages, num_languages=self.encoder.num_languages,
language="en", language=language,
task="transcribe", task=task,
) )
self.filters = mel_filters(self.device, self.encoder.n_mels, assets_dir) self.filters = mel_filters(self.device, self.encoder.n_mels, assets_dir)