PL ▾
Pobierz klucz API

Serwer Whisper API: Opcje konfiguracji i etap tekstowy

Serwer Whisper API to usługa HTTP, która przyjmuje audio i zwraca transkrypcję. Obsługuje tylko mowę, więc wszystko, co chcesz zrobić z tekstami później, wymaga oddzielnego modelu tekstowego.

Zaktualizowano

Izometryczna ilustracja przepływu audio z serwera do stosu czystych linii tekstu

Kluczowe punkty

  • Whisper to model konwersji mowy na tekst; serwer opakowuje go za pomocą endpointu HTTP.
  • Możesz wynająć endpoint hostowany, uruchomić własny wrapper lub uruchomić lokalny plik binarny.
  • To API jest tylko tekstowe: wykonuje etap po transkrypcji, a nie etap audio.
  • Dwa etapy łączą się za pomocą kilku linijek Pythona przy użyciu SDK OpenAI dwa razy.

Krótka odpowiedź

Whisper to open-source'owy model rozpoznawania mowy opublikowany przez OpenAI. Sam w sobie jest to plik modelu i kod inferencji. Serwer umieszcza przed nim interfejs HTTP, dzięki czemu Twoja aplikacja może wysłać plik audio i otrzymać tekst zamiast wywoływać funkcje Pythona bezpośrednio.

Większość serwerów naśladuje strukturę endpointu transkrypcji OpenAI, POST /v1/audio/transcriptions, który przyjmuje przesyłanie multipart z plikiem audio i nazwą modelu. Ta struktura jest powodem, dla którego ta sama biblioteka klienta może komunikować się z usługą hostowaną, kontenerem na Twojej maszynie lub małym wrapperem napisanym przez kogoś innego.

  • Wejście: plik audio, zwykle mp3, wav, m4a lub podobny.
  • Dane wyjściowe: tekst zwykły lub JSON z segmentami i znacznikami czasu, w zależności od serwera.
  • Nie obejmuje: podsumowań, tłumaczenia na płynną formę, ekstrakcji zadań. Do tego potrzebny jest model językowy.

Trzy sposoby na uzyskanie serwera Whisper

1. Endpoint hostowany

OpenAI oferuje endpoint transkrypcji hostowany, a inni dostawcy sprzedają również transkrypcję opartą na Whisper. Płacisz za użycie, nie zarządzasz sprzętem i wysyłasz swoje audio do infrastruktury kogoś innego. Modele rozliczeń różnią się między dostawcami, a usługi mowy często pobierają opłaty za czas trwania audio, więc sprawdź ich aktualne ceny przed zobowiązaniem się do wolumenu.

2. Wrapper self-hosted

Kilka projektów open-source opakowuje Whisper lub jego reimplementacje w serwerze sieciowym, który naśladuje ścieżkę transkrypcji OpenAI. Uruchamiasz go w Dockerze na maszynie z GPU lub na CPU, jeśli akceptujesz wolniejsze przetwarzanie. Daje to Ci kontrolę nad tym, dokąd idzie audio. Odpowiadasz również za pobieranie modeli, aktualizacje, kolejkowanie i restarty.

3. Lokalny plik binarny

Projekt whisper.cpp to portowanie C i C++ modelu, a jego repozytorium zawiera przykładowy serwer HTTP. Działa na zwykłych laptopach i małych serwerach, co czyni go dobrym wyborem dla prototypu lub dla jednego użytkownika, który transkrybuje kilka nagrań dziennie. Dla zadań wsadowych liczących setki godzin usługa z GPU jest zwykle bardziej praktyczna.

Wybierz na podstawie trzech pytań: dokąd może podróżować audio, ile godzin przetwarzasz miesięcznie i kto będzie utrzymywać usługę. Etap tekstowy opisany poniżej działa tak samo w przypadku każdego z trzech.

Gdzie pasuje tekstowe API LLM po transkrypcji

Surowa transkrypcja Whispera to ściana tekstu. Ma mało podziałów na akapity, nazwy mówiących są brakujące, chyba że dodasz diarizację osobno, a słowa-wypełniacze zostają. Whisper również popełnia błędy w nazwach produktów, żargonie i nazwach własnych. Prawie każdy prawdziwy projekt dodaje drugi etap, który pracuje na tekście.

Typowe zadania drugiego etapu:

  • Napraw interpunkcję, podziel na akapity, usuń błędy początkowe.
  • Stwórz podsumowanie rozmowy lub wykładu w kilku punktach.
  • Wyodrębnij dane strukturalne, takie jak decyzje, nazwy i daty jako JSON.
  • Przepisz materiał mówiony do artykułu, scenariusza lub notatek.
  • Przetłumacz lub zlokalizuj oczyszczony tekst.

Tu wchodzi w grę ta usługa. Jest to tekstowe API kompatybilne z OpenAI z jednym modelem, uncensored, oknem kontekstu o pojemności 100 000 tokenów i strumieniowaniem. Transkrypcja dwugodzinnego wywiadu często mieści się w jednym zapytaniu, więc możesz pominąć logikę dzielenia na fragmenty, którą narzucają mniejsze okna kontekstu. Dla dłuższych materiałów zobacz dokumentację szybkiego startu, aby uzyskać szczegóły zapytania.

Model jest dostrojony do odpowiadania bez odrzuceń treści dla prawnego użytku dorosłych. To ma znaczenie dla potoków transkrypcji, ponieważ źródłowe audio jest nieprzewidywalne: wywiady, podcasty, lektury fikcji i połączenia obsługowe zawierają wulgaryzmy i trudne tematy. Model, który odmawia wyczyszczenia transkrypcji, ponieważ mówiący przeklął, marnuje płatne uruchomienie transkrypcji. Jednym twardym limitem jest to, że nie przyjmuje niczego dotyczącego treści seksualnych z udziałem nieletnich.

Działający potok dwuetapowy

SDK Python OpenAI pozwala tworzyć dwa klienty z różnymi Base URL. Jeden wskazuje na Twój serwer Whisper, drugi na to API. Ustaw zmienne środowiskowe dla swojej usługi transkrypcji; drugi klient używa Base URL dla tej strony.

import os
from openai import OpenAI

# Stage 1: any Whisper-compatible transcription server you run or rent.
stt = OpenAI(base_url=os.environ["STT_BASE_URL"], api_key=os.environ["STT_KEY"])

# Stage 2: the text model.
llm = OpenAI(base_url="https://api.whisperapis.com/v1", api_key=os.environ["LLM_KEY"])

with open("call.mp3", "rb") as f:
    transcript = stt.audio.transcriptions.create(
        model=os.environ["STT_MODEL"],  # the model name your server expects
        file=f,
    )

resp = llm.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "Clean up this transcript: fix punctuation, keep every statement, no commentary."},
        {"role": "user", "content": transcript.text},
    ],
    temperature=0.2,
)
print(resp.choices[0].message.content)

Dwa szczegóły są łatwe do pomyłki. Po pierwsze, nazwa modelu transkrypcji to dowolna, której oczekuje Twój serwer, dlatego pochodzi ona ze zmiennej środowiskowej tutaj. Po drugie, klucz dla API tekstowego jest oddzielny od dowolnego klucza, który posiadasz dla usługi mowy; każdy uwierzytelnia tylko swój własny host.

Jeśli wolisz powłokę, etap tekstowy to zwykłe zapytanie o completion czatu:

curl https://api.whisperapis.com/v1/chat/completions \
  -H "Authorization: Bearer $LLM_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "user", "content": "Summarize this transcript in five bullet points: ..."}
    ]
  }'

Uwierzytelnianie to klucz Bearer w nagłówku Authorization, a endpointy to POST /v1/chat/completions i GET /v1/models. Możesz uzyskać klucz ze strony strona klucza API; nowe konta mogą odebrać kredyt próbny o wartości $0,50 jednym kliknięciem, ważny przez 7 dni i bez karty.

Rzeczy, które psują się w praktyce

Duże pliki audio

Wiele serwerów Whisper ogranicza rozmiar przesyłania, a długie nagrania mogą przekroczyć limit czasu w trakcie zapytania. Podziel audio na kawałki po dziesięć do trzydziestu minut za pomocą narzędzia takiego jak ffmpeg, transkrybuj każdy kawałek, a następnie połącz tekst. Ponieważ API tekstowe akceptuje do 100 000 tokenów, możesz połączyć kawałki i wysłać je jako jeden prompt. Limit ciała zapytania w tym API to 8 MB, co jest znacznie więcej niż potrzebuje każda transkrypcja.

Limity zapytań i współbieżności

Pełny klucz pozwala na 8 równoległych zapytań i 300 zapytań na minutę; klucz próbny pozwala na 2 i 60. Jeśli obsługujesz kolejkę z wieloma instancjami, ogranicz ją do współbieżności Twojego klucza. Przekroczenie limitu zwraca HTTP 429 z kodem rate_limited dla zapytań na minutę lub concurrency dla zbyt dużej liczby naraz. Zapytanie strumieniowe zajmuje slot do momentu zakończenia strumienia, więc zablokowany klient może blokować slot dłużej, niż się spodziewasz. Zmniejsz częstotliwość i spróbuj ponownie; jeśli odpowiedź zawiera nagłówek Retry-After: 5, poczekaj odpowiedni czas.

Błędy transkrypcji, których LLM nie widzi

Jeśli Whisper usłyszał złe słowo, model tekstowy widzi tylko złe słowo. Może nawet wygładzić błąd i sprawić, że będzie wyglądał na zamierzony. Dodaj słownik nazw i terminów do promptu systemowego i powiedz modelowi, aby oznaczał niepewne fragmenty zamiast zgadywać. Dla krytycznych materiałów trzymaj oryginalną transkrypcję obok oczyszczonej.

Halucynowane słowa-wypełniacze

Whisper czasem generuje wymyślony tekst podczas ciszy lub muzyki. Odetnij ciszę przed wysłaniem i poproś drugi etap o oznaczanie zdań, które wydają się niepasujące. Niska temperature, np. 0,2, utrzymuje czyszczenie blisko źródła.

Czego to API nie robi

Nie transkrybuje audio. Nie ma wejścia audio, wyjścia mowy, generowania obrazów ani wideo, embeddingów ani fine-tuningu. To hostowany model tekstowy za endpointem chat completions, uruchamiany przez niezależnego dostawcę, i nie jest oficjalnym API OpenAI ani żadnego innego dostawcy modeli. Jeśli Twój projekt potrzebuje obu połówek, potrzebujesz serwera mowy dla pierwszej i tej usługi dla drugiej.

Prompty nie są używane do trenowania. To jest oddzielne od tego, co twój dostawca mowy robi z audio, więc przeczytaj warunki tego dostawcy osobno.

W przypadku planowania kosztów tekst jest rozliczany za token po $0,15 za milion tokenów wejściowych i $0,50 za milion tokenów wyjściowych, z przedpłaconego kredytu, który nie wygasa. Na stronie z cenami znajdziesz dostępne kwoty doładowań i bonusy. Nieudane lub odrzucone zapytania nie są rozliczane, dzięki czemu pętle ponownych prób nie generują dodatkowych kosztów.

Rozsądny sposób na start

  1. Uruchom serwer kompatybilny z Whisper, hostowany lub lokalny, i upewnij się, że zwraca tekst dla pliku jednominutowego.
  2. Stwórz konto, doładuj kredyt próbny i uruchom powyższą komendę curl z krótką transkrypcją.
  3. Połącz dwóch klientów skryptem Pythona, używając własnego promptu systemowego dla stylu usuwania artefaktów, którego chcesz.
  4. Dodaj kolejkę dopiero po działaniu przepływu pojedynczego pliku i dostosuj jej rozmiar do współbieżności Twojego klucza.

Większość wysiłku idzie w prompt i obsługę audio, nie w kod łączący. Zacznij od jednego nagrania, które dobrze znasz, porównaj wynik z tym, co usłyszałeś, i dostosuj instrukcje przed skalowaniem.

Pytania i odpowiedzi

Czy serwer API Whisper jest taki sam jak API OpenAI?

Nie. Whisper to model, a serwerem jest dowolny program, który udostępnia go przez HTTP. OpenAI uruchamia jedną wersję hostowaną, a wielu ludzi uruchamia własne z użyciem narzędzi open-source, które kopiują tę samą ścieżkę transkrypcji.

Czy to API może transkrybować pliki audio?

Nie. Akceptuje tylko tekst. Użyj usługi do rozpoznawania mowy lub własnego serwera Whisper do etapu audio, a następnie wyślij transkrypcję tutaj.

Jakiej nazwy modelu użyć do kroku tekstowego?

Użyj uncensored jako ID modelu, z adresem URL https://api.whisperapis.com/v1 i swoim kluczem jako tokenem Bearer.

Jak długą transkrypcję mogę wysłać?

Okno kontekstu wynosi 100 000 tokenów, obejmując łącznie prompt i uzupełnienie. To wystarczy na wiele wielogodzinnych nagrań w jednym zapytaniu.

Czy potrzebuję karty, żeby spróbować?

Nie. Nowi użytkownicy mogą odebrać kredyt próbny o wartości $0,50 jednym kliknięciem na stronie klucza API po rejestracji, bez karty.

Twój klucz jest o jeden formularz stąd

Utwórz konto, skopiuj klucz, zmień adres URL. To cała konfiguracja.

Pobierz klucz API