이 프로젝트는 OpenAI Whisper 모델을 사용하여 음성 입력을 텍스트 출력으로 변환하는 실시간 전사 애플리케이션입니다. 마이크와 사전 녹음 된 오디오 파일에서 실시간 오디오 입력을 전사하는 데 사용할 수 있습니다.
bash scripts/setup.sh
pip install whisper-live
이 서버는 2 개의 백엔드 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 모델을 인스턴스화합니다. 이는 서버가 클라이언트의 요청 된 모델 크기에 따라 다른 모델 크기를 사용할 수 있다는 이점이 있습니다. 반면에, 클라이언트 연결시 모델이로드 될 때까지 기다려야하며 (v) RAM 사용이 증가 할 것임을 의미합니다.
-trt
또는 -fw
옵션을 사용하여 사용자 정의 Tensorrt 모델을 사용하면 서버는 사용자 정의 모델을 한 번만 인스턴스화 한 다음 모든 클라이언트 연결에 대해 재사용합니다.
이것을 원하지 않으면 --no_single_model
설정하십시오.
lang
: 입력 오디오의 언어는 다국어 모델을 사용하는 경우에만 적용됩니다.translate
: True
로 설정되면 모든 언어에서 en
으로 번역하십시오.model
: 속삭임 모델 크기.use_vad
: 서버에서 Voice Activity Detection
사용 여부.save_output_recording
: 실시간 전사 중에 마이크 입력을 .wav
파일로 저장하도록 true로 설정하십시오. 이 옵션은 나중에 재생 또는 분석을 위해 세션을 녹음하는 데 도움이됩니다. 기본값으로 False
.output_recording_filename
: save_output_recording
True
로 설정되면 마이크 입력이 저장되는 .wav
파일 경로를 지정합니다.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의 LocalHost에서 실행되는 서버에 연결됩니다. 다국어 모델을 사용하면 전사 언어가 자동으로 감지됩니다. 언어 옵션을 사용하여 전사의 대상 언어,이 경우 영어 ( "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 "
CPU
docker run -it -p 9090:9090 ghcr.io/collabora/whisperlive-cpu:latest
참고 : 기본적으로 "작은"모델 크기를 사용합니다. 다른 모델 크기에 대한 Docker 이미지를 빌드하려면 Server.py의 크기를 변경 한 다음 Docker 이미지를 작성하십시오.
오픈 소스 및 독점 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 }
}