Π ΡΡΡΠΊΠΈΠΉ | δΈζ | English
Whisper.cpp HTTP-ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠ΅ΡΠΈ (ASR), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ API, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ΅ Ρ OpenAI-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π³ΠΈΠ±ΠΊΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ»ΠΎΠ². Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π½Π° whisper.cpp server.
- Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
- Whisper.cpp API-ΡΠ΅ΡΠ²Π΅Ρ
- OpenAI-like API-ΡΠ΅ΡΠ²Π΅Ρ
- Π‘ΡΡΠ»ΠΊΠΈ
Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ Whisper.cpp ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Π² Π΄Π²Π΅ ΡΡΠ°Π΄ΠΈΠΈ, ΡΠ½Π°ΡΠ°Π»Π° Π±Π΅ΡΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ
ΠΎΠ±ΡΠ°Π· nvidia/cuda:12.5.1-devel-ubuntu22.04, Π² Π½ΡΠΌ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π±ΠΈΠ½Π°ΡΠ½ΠΈΠΊΠΎΠ² server ΠΈ quantize, Π΄Π°Π»Π΅Π΅ Π½Π°
Π²ΡΠΎΡΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ nvidia/cuda:12.5.1-runtime-ubuntu22.04, Π² Π½Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ
ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ΅.
ΠΠΎ ΠΈΠ΄Π΅Π΅ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° nvidia/cuda Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ 12.1 ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ, Π½ΠΎ Ρ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ».
ΠΠΎΡΡΠΎΠΌΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΊΠ°ΡΡΠΎΡΠΊΠ° Ρ GPU, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ CUDA ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΠ²Π΅ΠΆΠΈΠΉ CUDA Π΄ΡΠ°ΠΉΠ²Π΅Ρ.
Π ΡΠ°ΠΊ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ:
- ΠΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΠ° ΠΎΡ Nvidia >= GTX 10xx (ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³)
- CUDA >= 12.5 (Ρ ΠΎΡΡ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΈ Π½Π° 12.1 Π²ΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΠΊ)
- Docker
- Docker Compose
- Nvidia Docker Runtime
ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ΅ Linux-ΠΌΠ°ΡΠΈΠ½Ρ ΠΊ Π·Π°ΠΏΡΡΠΊΡ Π½Π΅ΠΉΡΠΎΡΠ΅ΡΠ΅ΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ CUDA, Docker ΠΈ Nvidia Docker Runtime Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² ΠΌΠΎΠ΅ΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ "ΠΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Linux ΠΊ Π·Π°ΠΏΡΡΠΊΡ ΠΈ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΉΡΠΎΡΠ΅ΡΠ΅ΠΉ? (+ Docker)".
-
Π‘ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π² ΠΊΠΎΡΠ΅Π½Ρ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ:
git clone https://github.com/EvilFreelancer/docker-whisper-server.git cd docker-whisper-server -
Π‘ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Docker Compose ΠΈΠ· ΡΠ°Π±Π»ΠΎΠ½Π°:
cp docker-compose.dist.yml docker-compose.yml
ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Intel Arc Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡ:
x-shared-logs: &shared-logs
logging:
driver: "json-file"
options:
max-size: "10k"
services:
whisper-intel:
restart: "unless-stopped"
build:
context: ./whisper
dockerfile: Dockerfile.intel
args:
- WHISPER_VERSION=v1.7.4
devices:
- /dev/dri
volumes:
- ./models:/app/models
ports:
- "127.0.0.1:9000:9000"
environment:
WHISPER_MODEL: large-v3-turbo
WHISPER_MODEL_QUANTIZATION: q4_0
<<: *shared-logs-
Π‘ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ OpenAI-like API ΡΠ΅ΡΠ²Π΅ΡΠ°:
cp config.dist.yml config.yml
-
Π‘ΠΎΠ±Π΅ΡΡΠΌ Docker-ΠΎΠ±ΡΠ°Π·Ρ:
docker-compose build
-
ΠΠ°ΠΏΡΡΡΠΈΠΌ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ:
docker-compose up -d
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ docker-compose.yml Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π²Π΅ΡΡΠΈΡ whisper.cpp, ΠΏΠΎΡΡΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡ
ΡΠΎΠΌΠ° ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠ· Π²Π΅ΡΠΊΠΈ master ΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ base, ΠΊΠΎΡΠΎΡΠ°Ρ
Π±ΡΠ΄Π΅Ρ ΠΊΠ²Π°Π½ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° Π΄ΠΎ q4_0 ΠΈ Π·Π°ΠΏΡΡΠ΅Π½Π° Π½Π° 1 ΡΠ΄ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π² 4 ΠΏΠΎΡΠΎΠΊΠ°.
whisper:
restart: "unless-stopped"
build:
context: ./whisper
args:
# Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ: ΡΠ΅Π³, Π²Π΅ΡΠΊΡ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ
# https://github.com/ggerganov/whisper.cpp
- WHISPER_VERSION=master
volumes:
- ./models:/app/models
ports:
- "127.0.0.1:9000:9000"
environment:
WHISPER_MODEL: base
WHISPER_MODEL_QUANTIZATION: q4_0
WHISPER_PROCESSORS: 1
WHISPER_THREADS: 4Π‘Π΅ΡΠ²ΠΈΡ whisper-swagger ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π²ΡΠ΅Ρ
Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ².
whisper-swagger:
restart: "unless-stopped"
image: swaggerapi/swagger-ui:v5.17.14
ports:
- "127.0.0.1:9010:8080"
volumes:
- ./whisper/openapi.yaml:/openapi.yaml
environment:
SWAGGER_JSON: /openapi.yamlΠΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://localhost:9010 Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
Π’ΡΠ°Π½ΡΠΊΡΠΈΠ±ΠΈΡΡΠ΅ΠΌ Π°ΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ»:
curl http://localhost:9000/inference \
-H "Content-Type: multipart/form-data" \
-F file="@./assets/audio.mp3" \
-F language="auto" \
-F response_format="json"ΠΠΌΠ΅ΡΡΠΎ language="auto" (Π°Π²ΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Π°ΡΠ΄ΠΈΠΎ) Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½ΡΠΆΠ½ΡΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ language="ru".
ΠΠΌΠ΅ΡΡΠΎ response_format="json" ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π²Π΅ΡΠ½ΡΡΡ ΡΡΠ±ΡΠΈΡΡΡ response_format="srt" ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ
ΡΠ΅ΠΊΡΡ response_format="text".
Π‘ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Whisper:
curl http://localhost:9000/load \
-H "Content-Type: multipart/form-data" \
-F model="<path-to-model-file-in-docker-container>"ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
| Name | Default | Description |
|---|---|---|
WHISPER_MODEL |
base | ΠΠΎΠ΄Π΅Π»Ρ Whisper, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
WHISPER_MODEL_PATH |
/app/models/ggml-${WHISPER_MODEL}.bin | ΠΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ Whisper ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
WHISPER_MODEL_QUANTIZATION |
Π£ΡΠΎΠ²Π΅Π½Ρ ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΡΡ) |
Π Π°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
| Name | Default | Description |
|---|---|---|
WHISPER_THREADS |
4 | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° |
WHISPER_PROCESSORS |
1 | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° |
WHISPER_HOST |
0.0.0.0 | IP-Π°Π΄ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠΌΡ Ρ ΠΎΡΡΠ° Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° |
WHISPER_PORT |
9000 | ΠΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° Π΄Π»Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ |
WHISPER_INFERENCE_PATH |
/inference | ΠΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° |
WHISPER_PUBLIC_PATH |
ΠΡΡΡ ΠΊ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ | |
WHISPER_REQUEST_PATH |
ΠΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² | |
WHISPER_OV_E_DEVICE |
CPU | Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ OpenViBE Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ |
WHISPER_OFFSET_T |
0 | ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ |
WHISPER_OFFSET_N |
0 | ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Π΄Π»Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ |
WHISPER_DURATION |
0 | ΠΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π°ΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ»Π° Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ |
WHISPER_MAX_CONTEXT |
-1 | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° |
WHISPER_MAX_LEN |
0 | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° |
WHISPER_BEST_OF |
2 | Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡ "Π»ΡΡΡΠΈΠΉ ΠΈΠ· N" Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° |
WHISPER_BEAM_SIZE |
-1 | Π Π°Π·ΠΌΠ΅Ρ beam Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° |
WHISPER_AUDIO_CTX |
0 | ΠΡΠ΄ΠΈΠΎΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Π½ΡΠ° |
WHISPER_WORD_THOLD |
0.01 | ΠΠΎΡΠΎΠ³ ΡΠ»ΠΎΠ² Π΄Π»Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ |
WHISPER_ENTROPY_THOLD |
2.40 | ΠΠΎΡΠΎΠ³ ΡΠ½ΡΡΠΎΠΏΠΈΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ |
WHISPER_LOGPROB_THOLD |
-1.00 | ΠΠΎΡΠΎΠ³ Π»ΠΎΠ³Π°ΡΠΈΡΠΌΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ |
WHISPER_LANGUAGE |
en | ΠΠΎΠ΄ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ |
WHISPER_PROMPT |
ΠΠ°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠΌΡ | |
WHISPER_DTW |
ΠΡΡΠΈΡΠ»ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΎΠΊΠ΅Π½ΠΎΠ² | |
WHISPER_CONVERT |
true | ΠΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π°ΡΠ΄ΠΈΠΎ Π² WAV, ΡΡΠ΅Π±ΡΠ΅Ρ ffmpeg Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ |
WHISPER_SPLIT_ON_WORD |
false | Π Π°Π·Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎ ΡΠ»ΠΎΠ²Ρ, Π° Π½Π΅ ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Ρ |
WHISPER_DEBUG_MODE |
false | ΠΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ |
WHISPER_TRANSLATE |
false | ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ |
WHISPER_DIARIZE |
false | ΠΠΈΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅ΡΠ΅ΠΎ Π°ΡΠ΄ΠΈΠΎ |
WHISPER_TINYDIARIZE |
false | ΠΠΊΠ»ΡΡΠΈΡΡ tinydiarize (ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ tdrz) |
WHISPER_NO_FALLBACK |
false | ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ temperature fallback ΠΏΡΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ |
WHISPER_PRINT_SPECIAL |
false | ΠΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ |
WHISPER_PRINT_COLORS |
false | ΠΠ΅ΡΠ°ΡΠ°ΡΡ ΡΠ²Π΅ΡΠ° |
WHISPER_PRINT_REALTIME |
false | ΠΠ΅ΡΠ°ΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ |
WHISPER_PRINT_PROGRESS |
false | ΠΠ΅ΡΠ°ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ |
WHISPER_NO_TIMESTAMPS |
false | ΠΠ΅ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ |
WHISPER_DETECT_LANGUAGE |
false | ΠΡΠΉΡΠΈ ΠΏΠΎΡΠ»Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° |
ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ WHISPER_MODEL_QUANTIZATION:
q2_k ΠΈΠ»ΠΈ 10
q3_k ΠΈΠ»ΠΈ 11
q4_0 ΠΈΠ»ΠΈ 2
q4_1 ΠΈΠ»ΠΈ 3
q4_k ΠΈΠ»ΠΈ 12
q5_0 ΠΈΠ»ΠΈ 8
q5_1 ΠΈΠ»ΠΈ 9
q5_k ΠΈΠ»ΠΈ 13
q6_k ΠΈΠ»ΠΈ 14
q8_0 ΠΈΠ»ΠΈ 7
Π ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΊΡΠΈΠΏΡ
entrypoint.sh Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΠΈΠ΄Π° qX_X.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΊΠ²Π°Π½ΡΠΈΠ·Π°ΡΠΈΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° whisper.cpp.
ΠΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΡΡΠΊΡ Π²ΠΎΠΊΡΡΠ³ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Whisper.cpp ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΠΎ ΡΠ΅ΡΠΈ. ΠΠ½ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
server:
restart: "unless-stopped"
build:
context: ./server
volumes:
- ./config.yml/app/config.yaml
ports:
- "127.0.0.1:5000:5000"ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ config.yml, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
models:
base:
owned_by: organization-owner
endpoints:
- base_url: http://whisper:9000/inference
#tiny:
# owned_by: organization-tiny-owner
# endpoints:
# - base_url: http://whisper01:9000/inference
# - base_url: https://user:pass@remote-server:9000/inferenceΠ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π°Π΄ΡΠ΅ΡΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΡΠΎΡΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ Π·Π°ΠΏΡΠΎΡ ΠΏΠ΅ΡΠ΅Π½Π°Π²ΠΈΡΡΡ Π½Π° Π½Π΅Π³ΠΎ.
Π ΠΊΠΎΠ½ΡΠΈΠ³Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ
models:
base:
owned_by: organization-owner
endpoints:
- base_url: http://whisper1:9000/inference
gpu: 0
- base_url: http://whisper2:9001/inference
gpu: 1Π’ΠΎΠ³Π΄Π° ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ ΡΠ΅ΡΠ²Π΅Ρ whisper1 ΠΈΠ»ΠΈ whisper2 Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ. Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΊΠ°ΡΡΠ°ΠΌΠΈ Nvidia. ΠΡΠ»ΠΈ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Intel Arc ΠΈΠ»ΠΈ Amd, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΡΠΊΠΈ Π² server/Dockerfile Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠ΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ².
Π ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ gpu, ΡΠΎ Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ, ΡΠΎ Π·Π°ΠΏΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ.
Π‘Π΅ΡΠ²ΠΈΡ server-swagger ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π²ΡΠ΅Ρ
Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ².
server-swagger:
restart: "unless-stopped"
image: swaggerapi/swagger-ui:v5.17.14
ports:
- "127.0.0.1:5010:8080"
volumes:
- ./server/openapi.yaml:/openapi.yaml
environment:
SWAGGER_JSON: /openapi.yamlΠΠΎΡΠ»Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://localhost:5010 Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
ΠΡΠΎΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ°Π½ΡΠΊΡΠΈΠΏΡΠΈΠΈ Π°ΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ»Π° Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
ΠΠ΅ΡΠΎΠ΄: POST
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°:
- file (ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ): ΠΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠ°Π½ΡΠΊΡΠΈΠΏΡΠΈΠΈ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ
ΡΠΎΡΠΌΠ°ΡΡ:
flac,mp3,mp4,mpeg,mpga,m4a,ogg,wav, ΠΈΠ»ΠΈwebm. - model (ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ): ID ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΡΠ°Π½ΡΠΊΡΠΈΠΏΡΠΈΠΈ.
- language (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ): Π―Π·ΡΠΊ Π°ΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ»Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ISO-639-1. ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ.
- prompt (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ): ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΡΠ°Π½ΡΠΊΡΠΈΠΏΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π°ΡΠ΄ΠΈΠΎ.
- response_format (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ): Π€ΠΎΡΠΌΠ°Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠ°Π½ΡΠΊΡΠΈΠΏΡΠΈΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
json,text,srt,verbose_jsonΠΈvtt. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:json. - temperature (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ): Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΡΠ±ΠΎΡΠΊΠΈ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ
0Π΄ΠΎ1. ΠΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ0.8, ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ, Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ0.2, ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ. ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅0, ΠΌΠΎΠ΄Π΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π΄ΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΏΠΎΡΠΎΠ³ΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°:
curl http://localhost:5000/audio/transcriptions \
-H "Content-Type: multipart/form-data" \
-F file="@./assets/audio.mp3" \
-F model="base" \
-F language="auto" \
-F response_format="json"ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°:
{
"text": "This is the transcription of the audio."
}ΠΡΠΎΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π°ΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ»Π° Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ ΡΠ·ΡΠΊ.
Π Π°Π±ΠΎΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ°ΠΊ /audio/transcriptions ΡΠΎΠ»ΡΠΊΠΎ language=en ΠΈ Π΅Π³ΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΌΠ΅Π½ΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°:
curl http://localhost:5000/audio/transcriptions \
-H "Content-Type: multipart/form-data" \
-F file="@./assets/audio.mp3" \
-F model="base" \
-F response_format="json"ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°:
{
"text": "This is the translated transcription of the audio."
}ΠΡΠΎΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
ΠΠ΅ΡΠΎΠ΄: GET
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°:
curl http://localhost:5000/modelsΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°:
{
"object": "list",
"data": [
{
"id": "base",
"object": "model",
"created": 1686935002,
"owned_by": "organization-owner"
}
]
}ΠΡΠΎΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ΅ΡΠΎΠ΄: GET
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΡΠΈ:
- model (ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ): ID ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ°:
curl http://localhost:5000/models/baseΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°:
{
"id": "base",
"object": "model",
"created": 1686935002,
"owned_by": "organization-owner"
}Whisper.cpp
- https://github.com/ggerganov/whisper.cpp
- https://github.com/ggerganov/whisper.cpp/tree/master/examples/server
OpenAI-like API
- https://platform.openai.com/docs/api-reference/audio/createTranscription
- https://platform.openai.com/docs/api-reference/audio/createTranslation
- https://platform.openai.com/docs/api-reference/models/list
- https://platform.openai.com/docs/api-reference/models/retrieve
ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ MIT. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π² ΡΠ°ΠΉΠ»Π΅ LICENSE.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΠ²ΠΎΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ΅, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
[Pavel Rykov]. (2024). Whisper.cpp API Webserver in Docker. GitHub. https://github.com/EvilFreelancer/docker-whisper-server
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ BibTeX:
@misc{pavelrykov2024whisperapi,
author = {Pavel Rykov},
title = {Whisper.cpp API Webserver in Docker},
year = {2024},
url = {https://github.com/EvilFreelancer/docker-whisper-server}
}

