API bauen
1. Vorbereitung von OpenWhisper
Stellen Sie sicher, dass Ihre OpenWhisper-Installation auf der VM mit der IP-Adresse 192.168.10.217 läuft und über den Port 7860 erreichbar ist. Da OpenWhisper auf Gradio basiert, sollte die Weboberfläche unter http://192.168.10.217:7860 zugänglich sein.
2. Einrichtung eines API-Dienstes für OpenWhisper
Um OpenWhisper in OpenWebUI zu integrieren, benötigen Sie einen API-Dienst, der die Funktionen von OpenWhisper über eine RESTful API bereitstellt. Ein Beispiel hierfür ist das openedai-speech Projekt, das eine OpenAI-kompatible API für TTS bereitstellt.
Schritte zur Einrichtung von openedai-speech:
a. Repository klonen:
Schritt 2: Benötigte Pakete installieren
Falls noch nicht geschehen, installiere Flask oder FastAPI:
pip install flask fastapi uvicorn pydantic
Schritt 3: API-Skript erstellen
Erstelle eine Datei whisper_api.py im Verzeichnis Whisper-Web-UI:
from fastapi import FastAPI, File, UploadFile
import whisper
import uvicorn
import os
app = FastAPI()
model = whisper.load_model("base") # Oder "medium", "large", je nach Leistung
@app.post("/v1/audio/transcriptions")
async def transcribe_audio(file: UploadFile = File(...)):
audio_path = f"temp/{file.filename}"
os.makedirs("temp", exist_ok=True)
with open(audio_path, "wb") as buffer:
buffer.write(await file.read())
result = model.transcribe(audio_path)
os.remove(audio_path)
return {"text": result["text"]}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=5000)
Schritt 4: API starten
Starte den API-Server mit:
python whisper_api.py
Nun läuft die API unter http://192.168.10.217:5000.
3. OpenWebUI mit Whisper verbinden
Nun muss OpenWebUI so konfiguriert werden, dass es diese Whisper-API nutzt.
Admin-Oberfläche von OpenWebUI öffnen:
http://192.168.10.210:8080/admin
Zu den STT-Einstellungen gehen
Folgende Werte eintragen:
API Base URL: http://192.168.10.217:5000/v1
API Key: Nicht notwendig (oder einen Dummy-Key verwenden)
Speech-to-Text Model: Whisper-Base, Whisper-Medium etc.
Speichern und testen.
Zusätzliche Hinweise
Falls die Ports durch Firewalls blockiert sind, öffne Port 5000 auf der Whisper-VM mit:
sudo ufw allow 5000/tcp
Lösung: Fehlende API-Routen hinzufügen
Öffne deine whisper_api.py und füge diese fehlenden Routen hinzu:
from fastapi import FastAPI, File, UploadFile
import whisper
import uvicorn
import os
app = FastAPI()
model = whisper.load_model("base") # Wähle das gewünschte Modell
# OpenAI-kompatible Endpunkte
@app.get("/v1/models")
def get_models():
return {
"object": "list",
"data": [
{
"id": "whisper-1",
"object": "model",
"created": 1677610602,
"owned_by": "local",
}
]
}
@app.get("/v1/api/tags") # Route, die OpenWebUI erwartet
def get_tags():
return {"tags": ["whisper", "stt", "speech"]}
@app.get("/v1/api/version") # Falls OpenWebUI nach der API-Version fragt
def get_version():
return {"version": "1.0"}
@app.post("/v1/audio/transcriptions")
async def transcribe_audio(file: UploadFile = File(...)):
audio_path = f"temp/{file.filename}"
os.makedirs("temp", exist_ok=True)
with open(audio_path, "wb") as buffer:
buffer.write(await file.read())
result = model.transcribe(audio_path)
os.remove(audio_path)
return {
"text": result["text"],
"model": "whisper-1",
"language": result["language"],
}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=5000)