Ce projet est une application de transcription en temps réel qui utilise le modèle Openai Whisper pour convertir l'entrée de la parole en sortie de texte. Il peut être utilisé pour transcrire à la fois les entrées audio en direct de Microphone et des fichiers audio pré-enregistrés.
bash scripts/setup.sh
pip install whisper-live
Le serveur prend en charge deux backends faster_whisper
et tensorrt
. Si l'exécution du backend tensorrt
Suivez Tensorrt_Whisper Readme
python3 run_server.py --port 9090
--backend faster_whisper
# running with custom model
python3 run_server.py --port 9090
--backend faster_whisper
-fw " /path/to/custom/faster/whisper/model "
# Run English only model
python3 run_server.py -p 9090
-b tensorrt
-trt /home/TensorRT-LLM/examples/whisper/whisper_small_en
# Run Multilingual model
python3 run_server.py -p 9090
-b tensorrt
-trt /home/TensorRT-LLM/examples/whisper/whisper_small
-m
Pour contrôler le nombre de threads utilisés par OpenMP, vous pouvez définir la variable d'environnement OMP_NUM_THREADS
. Ceci est utile pour gérer les ressources CPU et assurer des performances cohérentes. S'il n'est pas spécifié, OMP_NUM_THREADS
est défini sur 1
par défaut. Vous pouvez changer cela en utilisant l'argument --omp_num_threads
:
python3 run_server.py --port 9090
--backend faster_whisper
--omp_num_threads 4
Par défaut, lors de l'exécution du serveur sans spécifier un modèle, le serveur instanciera un nouveau modèle Whisper pour chaque connexion client. Cela a l'avantage que le serveur peut utiliser différentes tailles de modèle, en fonction de la taille du modèle demandée par le client. D'un autre côté, cela signifie également que vous devez attendre que le modèle soit chargé sur la connexion du client et que vous aurez une utilisation accrue (v) de RAM.
Lors de la description d'un modèle Tensorrt personnalisé à l'aide du -trt
ou d'un modèle personnalisé Faster_Whisper à l'aide de l'option -fw
, le serveur ne sera à la place que l'instanciation du modèle personnalisé une fois, puis le réutilisera pour toutes les connexions client.
Si vous ne voulez pas cela, définissez --no_single_model
.
lang
: langue de l'audio d'entrée, applicable uniquement si vous utilisez un modèle multilingue.translate
: si défini sur True
, traduire de n'importe quelle langue vers en
.model
: Taille du modèle de chuchotement.use_vad
: s'il faut utiliser Voice Activity Detection
sur le serveur.save_output_recording
: Définissez TRUE pour enregistrer l'entrée de microphone en tant que fichier .wav
pendant la transcription en direct. Cette option est utile pour enregistrer des séances pour la lecture ou l'analyse ultérieure. Par défaut est False
.output_recording_filename
: spécifie le chemin de fichier .wav
où l'entrée de microphone sera enregistrée si save_output_recording
est définie sur True
.max_clients
: Spécifie le nombre maximum de clients que le serveur devrait permettre. Par défaut est 4.max_connection_time
: temps de connexion maximum pour chaque client en secondes. Par défaut à 600. from whisper_live . client import TranscriptionClient
client = TranscriptionClient (
"localhost" ,
9090 ,
lang = "en" ,
translate = False ,
model = "small" , # also support hf_model => `Systran/faster-whisper-small`
use_vad = False ,
save_output_recording = True , # Only used for microphone input, False by Default
output_recording_filename = "./output_recording.wav" , # Only used for microphone input
max_clients = 4 ,
max_connection_time = 600
)
Il se connecte au serveur exécuté sur localhost au port 9090. À l'aide d'un modèle multilingue, la langue pour la transcription sera automatiquement détectée. Vous pouvez également utiliser l'option de langue pour spécifier la langue cible pour la transcription, dans ce cas, l'anglais ("en"). L'option Translate doit être définie sur True
si nous voulons traduire de la langue source en anglais et False
si nous voulons transcrire dans la langue source.
client ( "tests/jfk.wav" )
client ()
client ( rtsp_url = "rtsp://admin:[email protected]/rtsp" )
client ( hls_url = "http://as-hls-ww-live.akamaized.net/pool_904/live/ww/bbc_1xtra/bbc_1xtra.isml/bbc_1xtra-audio%3d96000.norewind.m3u8" )
GPU
docker run -it --gpus all -p 9090:9090 ghcr.io/collabora/whisperlive-gpu:latest
docker run -p 9090:9090 --runtime=nvidia --gpus all --entrypoint /bin/bash -it ghcr.io/collabora/whisperlive-tensorrt
# Build small.en engine
bash build_whisper_tensorrt.sh /app/TensorRT-LLM-examples small.en
# Run server with small.en
python3 run_server.py --port 9090
--backend tensorrt
--trt_model_path " /app/TensorRT-LLM-examples/whisper/whisper_small_en "
Processeur
docker run -it -p 9090:9090 ghcr.io/collabora/whisperlive-cpu:latest
Remarque : Par défaut, nous utilisons la taille du modèle "petite". Pour créer une image Docker pour une taille de modèle différente, modifiez la taille de server.py, puis créez l'image docker.
Nous sommes disponibles pour vous aider avec les projets d'origine open source et propriétaires. Vous pouvez nous joindre via le site Web de Collabora ou [email protected] et [email protected].
@article { Whisper
title = { Robust Speech Recognition via Large-Scale Weak Supervision } ,
url = { https://arxiv.org/abs/2212.04356 } ,
author = { Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya } ,
publisher = { arXiv } ,
year = { 2022 } ,
}
@misc { Silero VAD,
author = { Silero Team } ,
title = { Silero VAD: pre-trained enterprise-grade Voice Activity Detector (VAD), Number Detector and Language Classifier } ,
year = { 2021 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/snakers4/silero-vad} } ,
email = { hello @ silero.ai }
}