このプロジェクトは、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
デフォルトでは、モデルを指定せずにサーバーを実行すると、サーバーはクライアント接続ごとに新しいささやきモデルをインスタンス化します。これには、クライアントの要求されたモデルサイズに基づいて、サーバーが異なるモデルサイズを使用できるという利点があります。一方、それはまた、モデルがクライアント接続時にロードされるのを待つ必要があり、(V)RAMの使用が増加することを意味します。
-trt
またはカスタムFaster_Whisperモデルを使用してカスタムTensortモデルを-fw
オプションを使用して提供する場合、サーバーはカスタムモデルを1回インスタンス化し、すべてのクライアント接続に対して再利用します。
これが必要ない場合は、 --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のローカルホストで実行されているサーバーに接続します。多言語モデルを使用して、転写の言語が自動的に検出されます。言語オプションを使用して、転写のターゲット言語、この場合は英語( "en")を指定することもできます。ソース言語からFalse
に変換したい場合は、ソース言語で転写したい場合は、翻訳オプションをTrue
に設定する必要があります。
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のWebサイトまたは[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 }
}