Этот проект представляет собой приложение транскрипции в реальном времени, которое использует модель Whisper Openai для преобразования ввода речи в выход текста. Он может быть использован для транскрибирования как живого аудио входа из микрофона, так и предварительно записанных аудиофайлов.
bash scripts/setup.sh
pip install whisper-live
Сервер поддерживает две бэкэнды faster_whisper
и tensorrt
. Если запуск бэкэнда tensorrt
Follow 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
По умолчанию при запуске сервера без указания модели сервер создаст новую модель Whisper для каждого клиентского соединения. Это имеет преимущество в том, что сервер может использовать разные размеры модели, основываясь на запрошенном клиентском размере модели. С другой стороны, это также означает, что вы должны ждать загрузки модели на клиентское соединение, и вы увеличите (v) использование оперативной памяти.
При обслуживании пользовательской модели Tensorrt с использованием модели -trt
или пользовательской модели FASEST_WHISPER с помощью параметра -fw
сервер вместо этого будет создавать только пользовательскую модель один раз, а затем повторно используйте ее для всех клиентских соединений.
Если вы этого не хотите, установите --no_single_model
.
lang
: Язык входного аудио, применимо только при использовании многоязычной модели.translate
: если установить в True
то переведите с любого языка на en
.model
: Whisper Model Size.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
)
Он подключается к серверу, работающему на 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" )
Графический процессор
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 }
}