โครงการนี้เป็นแอปพลิเคชั่นการถอดความแบบเรียลไทม์ที่ใช้โมเดล 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
สิ่งนี้มีประโยชน์สำหรับการจัดการทรัพยากร CPU และสร้างความมั่นใจว่าประสิทธิภาพที่สอดคล้องกัน หากไม่ได้ระบุ OMP_NUM_THREADS
จะถูกตั้งค่าเป็น 1
โดยค่าเริ่มต้น คุณสามารถเปลี่ยนสิ่งนี้ได้โดยใช้อาร์กิวเมนต์ --omp_num_threads
:
python3 run_server.py --port 9090
--backend faster_whisper
--omp_num_threads 4
โดยค่าเริ่มต้นเมื่อเรียกใช้เซิร์ฟเวอร์โดยไม่ระบุรุ่นเซิร์ฟเวอร์จะสร้างอินสแตนซ์โมเดล Whisper ใหม่สำหรับการเชื่อมต่อไคลเอนต์ทุกครั้ง สิ่งนี้มีข้อได้เปรียบที่เซิร์ฟเวอร์สามารถใช้ขนาดโมเดลที่แตกต่างกันตามขนาดรุ่นที่ร้องขอของลูกค้า ในทางกลับกันก็หมายความว่าคุณต้องรอให้โมเดลโหลดเมื่อเชื่อมต่อไคลเอนต์และคุณจะเพิ่มการใช้งาน RAM (v)
เมื่อให้บริการโมเดล Tensorrt ที่กำหนดเองโดยใช้ -trt
หรือแบบกำหนดเอง Faster_Whisper ที่กำหนดเองโดยใช้ตัวเลือก -fw
เซิร์ฟเวอร์จะแทนที่โมเดลที่กำหนดเองเพียงครั้งเดียวเท่านั้นจากนั้นนำกลับมาใช้ใหม่สำหรับการเชื่อมต่อไคลเอนต์ทั้งหมด
หากคุณไม่ต้องการสิ่งนี้ให้ตั้งค่า --no_single_model
lang
: ภาษาของเสียงอินพุตใช้งานได้เฉพาะในกรณีที่ใช้โมเดลหลายภาษาtranslate
: ถ้าตั้งค่าเป็น True
ให้แปลจากภาษาใด ๆ เป็น en
model
: ขนาดรุ่นกระซิบuse_vad
: จะใช้ Voice Activity Detection
บนเซิร์ฟเวอร์หรือไม่save_output_recording
: ตั้งค่าเป็นจริงเพื่อบันทึกอินพุตไมโครโฟนเป็นไฟล์ .wav
ระหว่างการถอดความสด ตัวเลือกนี้มีประโยชน์สำหรับการบันทึกเซสชันสำหรับการเล่นหรือการวิเคราะห์ในภายหลัง ค่าเริ่มต้นเป็น False
output_recording_filename
: ระบุเส้นทางไฟล์ .wav
ที่จะบันทึกอินพุตไมโครโฟนหาก save_output_recording
ถูกตั้งค่าเป็น True
max_clients
: ระบุจำนวนสูงสุดของไคลเอนต์ที่เซิร์ฟเวอร์ควรอนุญาต ค่าเริ่มต้นเป็น 4max_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
)
มันเชื่อมต่อกับเซิร์ฟเวอร์ที่ทำงานบน localhost ที่พอร์ต 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
หมายเหตุ : โดยค่าเริ่มต้นเราใช้ขนาดรุ่น "เล็ก" ในการสร้างอิมเมจนักเทียบท่าสำหรับขนาดรุ่นที่แตกต่างกันให้เปลี่ยนขนาดใน Server.py จากนั้นสร้างอิมเมจนักเทียบท่า
เราพร้อมที่จะช่วยเหลือคุณทั้งโครงการโอเพ่นซอร์สและโครงการ AI ที่เป็นกรรมสิทธิ์ คุณสามารถติดต่อเราผ่านเว็บไซต์ 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 }
}