هذا المشروع هو تطبيق نسخ في الوقت الفعلي يستخدم نموذج Openai Whisper لتحويل إدخال الكلام إلى إخراج النص. يمكن استخدامه لنسخ كل من إدخال الصوت المباشر من الميكروفون والملفات الصوتية المسجلة مسبقًا.
bash scripts/setup.sh
pip install whisper-live
يدعم الخادم اثنين من الخلفية faster_whisper
و tensorrt
. إذا كان تشغيل tensorrt
الخلفي اتبع 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
للتحكم في عدد مؤشرات الترابط المستخدمة بواسطة OpenMP ، يمكنك تعيين متغير بيئة OMP_NUM_THREADS
. هذا مفيد لإدارة موارد وحدة المعالجة المركزية وضمان أداء ثابت. إذا لم يتم تحديدها ، يتم تعيين OMP_NUM_THREADS
على 1
بشكل افتراضي. يمكنك تغيير هذا باستخدام وسيطة --omp_num_threads
:
python3 run_server.py --port 9090
--backend faster_whisper
--omp_num_threads 4
بشكل افتراضي ، عند تشغيل الخادم دون تحديد نموذج ، سيقوم الخادم بتسوية نموذج همس جديد لكل اتصال عميل. هذا له ميزة ، يمكن للخادم استخدام أحجام طرازات مختلفة ، استنادًا إلى حجم النموذج المطلوب للعميل. من ناحية أخرى ، فهذا يعني أيضًا أنه يتعين عليك الانتظار حتى يتم تحميل النموذج على اتصال العميل وسوف تكون قد زادت (v) استخدام RAM.
عند تقديم نموذج Tensorrt مخصص باستخدام -trt
أو نموذج مخصص Faster_Whisper باستخدام خيار -fw
، سيقوم الخادم بدلاً من ذلك بتسهيل الطراز المخصص مرة واحدة فقط ثم إعادة استخدامه لجميع اتصالات العميل.
إذا كنت لا تريد هذا ، فقم بتعيين --no_single_model
.
lang
: لغة صوت الإدخال ، قابلة للتطبيق فقط إذا كان يستخدم نموذجًا متعدد اللغات.translate
: إذا تم ضبطها على True
، فترجم من أي لغة إلى en
.model
: حجم النموذج الهمس.use_vad
: ما إذا كنت تستخدم Voice Activity Detection
على الخادم.save_output_recording
: اضبط على TRUE لحفظ إدخال الميكروفون كملف .wav
أثناء النسخ المباشر. هذا الخيار مفيد لتسجيل جلسات التشغيل أو التحليل اللاحق. الإعدادات الافتراضية إلى False
.output_recording_filename
: يحدد مسار ملف .wav
حيث سيتم حفظ إدخال الميكروفون إذا تم ضبط save_output_recording
على True
.max_clients
: يحدد الحد الأقصى لعدد العملاء الذي يجب أن يسمح به الخادم. الافتراضات إلى 4.max_connection_time
: الحد الأقصى لوقت الاتصال لكل عميل في ثوان. الإعدادات الافتراضية إلى 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
)
يتصل بالخادم الذي يعمل على مضيف محلي في المنفذ 9090. باستخدام نموذج متعدد اللغات ، سيتم اكتشاف لغة النسخ تلقائيًا. يمكنك أيضًا استخدام خيار اللغة لتحديد اللغة المستهدفة للنسخ ، في هذه الحالة ، الإنجليزية ("EN"). يجب ضبط خيار الترجمة على True
إذا أردنا الترجمة من لغة المصدر إلى اللغة الإنجليزية False
إذا كنا نرغب في النسخ بلغة المصدر.
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 "
وحدة المعالجة المركزية
docker run -it -p 9090:9090 ghcr.io/collabora/whisperlive-cpu:latest
ملاحظة : بشكل افتراضي ، نستخدم حجم النموذج "الصغير". لإنشاء صورة Docker لحجم نموذج مختلف ، قم بتغيير الحجم في server.py ثم إنشاء صورة Docker.
نحن متاحون لمساعدتك في كل من مشاريع الذكاء الاصطناعى المصدر والملكية. يمكنك الوصول إلينا عبر موقع Collabora أو [email protected] و [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 }
}