SOUND / Whisper
Whisper
Robustes Spracherkennungsmodell via OpenAI Whisper.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
sudo docker run --rm \
--name rk3588-whisper \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-whisper:latest \
python3 web_service.pyREST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl -X POST "http://127.0.0.1:8000/api/models/whisper/task" -F "file=@/home/user/audio/long_podcast.wav" -F "language=zh"
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/whisper/predict",
files={"file": open("/home/user/audio/test_en.wav", "rb")},
data={"language": "en"},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
Modelldetails
reComputer RKSchnellstart
1. Docker installieren
Fuehren Sie die folgenden Befehle auf dem Entwicklungsboard aus, um Docker zu installieren:
# Installationsskript herunterladen
curl -fsSL https://get.docker.com -o get-docker.sh
# Mit Aliyun-Mirror-Source installieren
sudo sh get-docker.sh --mirror Aliyun
# Docker starten und Autostart beim Booten aktivieren
sudo systemctl enable docker
sudo systemctl start docker2. Projekt ausfuehren (Ein Befehl, Dual-Mode-Vorschau)
Dieses Projekt unterstuetzt den Zugriff ueber Web-Browser. Das Programm stellt automatisch eine Weboberflaeche fuer die Spracherkennung bereit.
Schritt A: Images pullen
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-whisper:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-whisper:latestSchritt B: Mit einem Klick ausfuehren
Fuer RK3588:
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-whisper:latest \
python3 web_service.pyZugriff ueber: http://<Board_IP>:8000
Fuer RK3576:
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-whisper:latest \
python3 web_service.pyZugriff ueber: http://<Board_IP>:8000
🔌 API-Dokumentation
Dieses Projekt bietet RESTful-Schnittstellen fuer ASR-Aufgaben und unterstuetzt synchrone und asynchrone Transkription von Audiodateien.
1. Synchrone Transkriptionsschnittstelle (Kurze Audiodateien)
Endpunkt: POST /api/models/whisper/predict
Geeignet fuer Audiodateien unter 20 Sekunden.
Anfrageparameter (Multipart/Form-Data):
file: (Erforderlich) Zu transkribierende Audiodatei (z. B. .wav, .mp3).language: (Optional) Zielsprachcode (z. B.en,zh). Wenn abweichend vom aktuellen Modell, wird der Tokenizer im laufenden Betrieb gewechselt.
Verwendungsbeispiele:
curl -X POST "http://127.0.0.1:8000/api/models/whisper/predict" \
-F "file=@/home/user/audio/test_en.wav" \
-F "language=en"Antwortformat (JSON):
{
"status": "success",
"data": {
"text": "Hello world, this is a test.",
"language": "en",
"duration": 3.5,
"inference_time": 0.8
}
}2. Asynchrone Transkriptionsschnittstelle (Lange Audiodateien)
Endpunkt: POST /api/models/whisper/task
Erstellt eine asynchrone Aufgabe zur Verarbeitung laengerer Audio-/Videodateien.
Verwendungsbeispiele:
curl -X POST "http://127.0.0.1:8000/api/models/whisper/task" \
-F "file=@/home/user/audio/long_podcast.wav" \
-F "language=zh"Antwortformat (JSON):
{
"status": "success",
"data": {
"task_id": "29c7b932-a77f-480c-a18b-8a958c7911c3",
"message": "Task created successfully. Poll /api/models/whisper/task/{task_id} for status."
}
}3. Aufgabenstatusabfrage
Endpunkt: GET /api/models/whisper/task/{task_id}
Verwendungsbeispiele:
curl "http://127.0.0.1:8000/api/models/whisper/task/29c7b932-a77f-480c-a18b-8a958c7911c3"4. Systemkonfigurationsschnittstelle (Config)
Wird verwendet, um Modelle und Sprachen dynamisch zu wechseln.
Aktuellen Systemstatus abrufen
- Endpunkt:
GET /api/system/status - Antwort:
{"status": "success", "data": {"model_size": "base", "language": "en", "max_tokens": 12, "rknn_lite_available": true}}
Systemkonfiguration aktualisieren (Hot-Swap)
- Endpunkt:
POST /api/system/config - Anfrageparameter (Form-Data):
model_size=base,language=zh - Antwort:
{"status": "success", "message": "Successfully loaded base model."}
🛠️ Entwicklerhandbuch (Produktionsempfehlungen)
Codebeschreibung
web_service.py:- Web-API: Integriert FastAPI, unterstuetzt Audio-Upload, asynchrone Aufgabenwarteschlangen und Modell-Hot-Swapping.
- RKNN-Inferenz: Kapselt die RKNN-Initialisierung sowohl fuer Encoder- als auch Decoder-Modelle. Implementiert eine autoregressive Generierungsschleife.
py_utils/whisper_utils.py:- Audioverarbeitung: Berechnet Log-Mel-Spektrogramme, die mit der OpenAI-Implementierung abgestimmt sind.
- Tokenizer: Behandelt BPE-Tokenisierung und Vokabularverwaltung.
Modelle aendern
- Legen Sie die trainierten und konvertierten
.rknnEncoder- und Decoder-Modelle immodel/-Verzeichnis ab. - Der Dienst laedt Modelle automatisch basierend auf dem Groessenparameter (z. B.
whisper_encoder_base_20s.rknn). Stellen Sie sicher, dass die Dateinamenskonventionen eingehalten werden.