Eine API, um Audio mit Openai's Whisper Large V3 zu transkribieren! Angetrieben von ? Transformatoren, Optimum & Flash-Attn
Merkmale:
Basierend auf wahnsinnig schnellem Flüster -CLI -Projekt. Schauen Sie sich es an, wenn Sie dieses Projekt lokal einrichten oder den Hintergrund von Wahnsinns-Schnauzen verstehen möchten.
Dieses Projekt konzentriert sich auf die Bereitstellung einer einsetzbaren Blazing Fast Whisper -API mit Docker auf der Cloud -Infrastruktur mit GPUs für skalierbare Produktionswendungsfälle.
Mit fly.io neuer GPU -Service -Start habe ich die Fly -Konfigurationsdatei so eingerichtet, dass sie einfach auf Fly -Maschinen bereitgestellt werden! Sie können dies jedoch in jeder anderen VM -Umgebung bereitstellen, die GPUs und Docker unterstützt.
Hier sind einige Benchmarks, die wir auf Nvidia A100 - 80 GB und Fly.io GPU Infra gelaufen sind?
| Optimierungstyp | Zeit zum Transkriben (150 Minuten Audio) |
|---|---|
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 ) | ~ 2 ( 1 min 38 Sek. ) |
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + diarization ) | ~ 2 ( 3 min 16 Sek. ) |
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + fly machine startup ) | ~ 2 ( 1 min 58 Sek. ) |
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + diarization + fly machine startup ) | ~ 2 ( 3 min 36 Sek. ) |
Die geschätzte Startzeit für die Fliegenmaschine mit GPU und das Laden des Modells beträgt ca. ~ 20 Sekunden. Der Rest der Zeit wird für die tatsächliche Berechnung ausgegeben.
yoeven/insanely-fast-whisper-api:latest
Docker Hub: Yoeven/Wahnsinnige, whisper-api
app -Namen in der fly.toml um, wenn Sie möchtenimage = 'yoeven/insanely-fast-whisper-api:latest' in fly.toml Nur wenn du das Bild aus der Dockerfile wieder aufbauen willstInstallieren Sie Fly CLI, wenn Sie es noch nicht haben
Ich muss dies nur ausführen, wenn Sie eine neue Fly -App starten
fly launch Fly wird auffordern: Would you like to copy its configuration to the new app? (y/N) . Ja ( y ), um die Konfiguration aus dem Repo zu kopieren.
Fly wird auffordern: Do you want to tweak these settings before proceeding wenn Sie nichts anpassen können? Die meisten der erforderlichen Einstellungen sind bereits in der fly.toml -Datei konfiguriert. Kein n , um fortzufahren und bereitzustellen.
Wenn Sie das erste Mal einsetzen, dauert es einige Zeit, da das Bild riesig ist. Nachfolgende Bereitstellungen werden viel schneller sein.
Führen Sie Folgendes aus, wenn Sie eine Sprecherdiarisierung oder ein Auth -Token einrichten möchten, um Ihre API zu sichern:
fly secrets set ADMIN_KEY= < your_token > HF_TOKEN= < your_hf_key > Laufen Sie fly secrets list um zu überprüfen, ob die Geheimnisse vorhanden sind.
Um das umarmende Gesichts -Token für die Diarisierung der Sprecher zu erhalten, müssen Sie Folgendes tun:
pyannote/segmentation-3.0 Benutzerbedingungenpyannote/speaker-diarization-3.1 Benutzerbedingungenhf.co/settings/tokens .Ihre API sollte ungefähr so aussehen:
https://insanely-fast-whisper-api.fly.dev
Führen Sie fly logs -a insanely-fast-whisper-api um Protokolle in Echtzeit Ihres Fliegengeräts anzuzeigen.
Da es sich um eine Dockerized -App handelt, können Sie sie für jeden Cloud -Anbieter bereitstellen, der Docker und GPUs mit einigen Konfigurationsverbots unterstützt.
Jigsawstack bietet eine Reihe leistungsstarker APIs für verschiedene Anwendungsfälle und hält die Kosten niedrig. Dieses Projekt ist hier als vollständig verwaltete API mit verbesserter Cloud -Skalierbarkeit für Kosteneffizienz und hohe Fahrt erhältlich. Melden Sie sich hier kostenlos an!
Wenn Sie das Umgebungsgeheimnis ADMIN_KEY eingerichtet hatten. Sie müssen x-admin-api-key im Kopfzeile mit dem Wert des zuvor festgelegten Schlüssels übergeben.
Wenn die Basis -URL in der Fliege bereitgestellt wird, sollte sie ungefähr so aussehen:
https://{app_name}.fly.dev/{path}
Abhängig vom Cloud -Anbieter, für den Sie bereitstellen, ist die Basis -URL unterschiedlich.
/Audio in Text transkribieren oder übersetzen
| Name | Wert |
|---|---|
| URL (erforderlich) | URL von Audio |
| Aufgabe | transcribe , Standards: translate transcribe |
| Sprache | None , en , andere Sprachen Standard: None automatische Sprache erkennt die Sprache |
| batch_size | Anzahl der parallelen Chargen, die Sie berechnen möchten. Reduzieren Sie, wenn Sie OOMs gegenüberstehen. Standard: 64 |
| Zeitstempel | chunk , word Standard: chunk |
| Diarse_audio | Durchdaten Sie die Audioclips von Lautsprecher. Sie müssen hf_token festlegen. Standard: false |
| Webhook | Webhook POST -Anruf nach Abschluss oder Fehler. Standard: None |
| webhook.url | URL, um den Webhook zu senden |
| webhook.header | Header mit dem Webhook zum Senden |
| is_async | Führen Sie die Aufgabe im Hintergrund aus und sendet Ergebnisse an Webhook -URL. true , false Standard: false |
| Managed_task_id | Benutzerdefinierte Aufgaben -ID zur Verweise auf die laufende Aufgabe. Standardeinstellung: uuid() v4 will be generated for each transcription task |
/tasksHolen Sie sich alle aktiven Transkriptionsaufgaben, sowohl asynchronen Hintergrundaufgaben als auch laufende Aufgaben
/status/{task_id}Erhalten Sie den Status einer Aufgabe, erledigte Aufgaben werden aus der Liste entfernt, die einen Fehler aufnehmen kann
/cancel/{task_id} Asynchronen Hintergrundaufgabe abbrechen. Nur Transkriptionsjobs, die mit is_async Set auf true erstellt wurden, können abgesagt werden.
# clone the repo
$ git clone https://github.com/jigsawstack/insanely-fast-whisper-api.git
# change the working directory
$ cd insanely-fast-whisper-api
# install torch
$ pip3 install torch torchvision torchaudio
# upgrade wheel and install required packages for FlashAttention
$ pip3 install -U wheel && pip install ninja packaging
# install FlashAttention
$ pip3 install flash-attn --no-build-isolation
# generate updated requirements.txt if you want to use other management tools (Optional)
$ poetry export --output requirements.txt
# get the path of python
$ which python3
# setup virtual environment
$ poetry env use /full/path/to/python
# install the requirements
$ poetry install
# run the app
$ uvicorn app.app:app --reload Fliegenmaschinen werden von der zweiten aufgeladen und können bis zu 15 Minuten im Leerlauf dauern, bevor es sich entscheidet, es selbst zu schließen. Sie können die Maschine schalten, wenn Sie mit der API fertig sind, um Kosten zu sparen. Sie können dies tun, indem Sie eine POST an den folgenden Endpunkt senden:
https://api.machines.dev/v1/apps/<app_name>/machines/<machine_id>/stop
Autorisierungsheader:
Authorization Bearer <fly_token>
Lear mehr hier
Dieses Projekt ist Teil von Jigsawstack - einer Reihe leistungsstarker und entwicklerfreundlicher APIs für verschiedene Anwendungsfälle und gleichzeitig die Kosten niedrig. Melden Sie sich hier kostenlos an!