SOUND / Whisper
Whisper
Robuust spraakherkenningsmodel via OpenAI Whisper.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
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
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
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))
Modeldetails
reComputer RKSnel Starten
1. Installeer Docker
Voer de volgende commando's uit op het ontwikkelbord om Docker te installeren:
# Download installation script
curl -fsSL https://get.docker.com -o get-docker.sh
# Install using Aliyun mirror source
sudo sh get-docker.sh --mirror Aliyun
# Start Docker and enable auto-start on boot
sudo systemctl enable docker
sudo systemctl start docker2. Start het Project (Eén commando, dual-mode preview)
Dit project is toegankelijk via Webbrowser. Het programma serveert automatisch een webinterface voor spraakherkenning.
Stap A: Pull Images
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:latestStap B: Start met één klik
Voor 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.pyToegang via: http://<Board_IP>:8000
Voor 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.pyToegang via: http://<Board_IP>:8000
🔌 API Documentatie
Dit project biedt RESTful-interfaces voor ASR-taken, ter ondersteuning van synchrone en asynchrone transcriptie van audiobestanden.
1. Synchrone Transcriptie-interface (Korte Audio)
Endpoint: POST /api/models/whisper/predict
Geschikt voor audiobestanden korter dan 20 seconden.
Verzoekparameters (Multipart/Form-Data):
file: (Vereist) Audiobestand dat getranscribeerd moet worden (bijv. .wav, .mp3).language: (Optioneel) Doeltaalcode (bijv.en,zh). Indien verschillend van het huidige model, wordt de tokenizer hot-swapped.
Gebruiksvoorbeelden:
curl -X POST "http://127.0.0.1:8000/api/models/whisper/predict" \
-F "file=@/home/user/audio/test_en.wav" \
-F "language=en"Responsformaat (JSON):
{
"status": "success",
"data": {
"text": "Hello world, this is a test.",
"language": "en",
"duration": 3.5,
"inference_time": 0.8
}
}2. Asynchrone Transcriptie-interface (Lange Audio)
Endpoint: POST /api/models/whisper/task
Maakt een asynchrone taak aan voor het verwerken van langere audio-/videobestanden.
Gebruiksvoorbeelden:
curl -X POST "http://127.0.0.1:8000/api/models/whisper/task" \
-F "file=@/home/user/audio/long_podcast.wav" \
-F "language=zh"Responsformaat (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. Taakstatus Polling
Endpoint: GET /api/models/whisper/task/{task_id}
Gebruiksvoorbeelden:
curl "http://127.0.0.1:8000/api/models/whisper/task/29c7b932-a77f-480c-a18b-8a958c7911c3"4. Systeemconfiguratie-interface (Config)
Wordt gebruikt om modellen en talen dynamisch te wisselen.
Huidige Systeemstatus Ophalen
- Endpoint:
GET /api/system/status - Response:
{"status": "success", "data": {"model_size": "base", "language": "en", "max_tokens": 12, "rknn_lite_available": true}}
Systeemconfiguratie Bijwerken (Hot-Swap)
- Endpoint:
POST /api/system/config - Verzoekparameters (Form-Data):
model_size=base,language=zh - Response:
{"status": "success", "message": "Successfully loaded base model."}
🛠️ Ontwikkelaarsgids (Productie-aanbevelingen)
Codebeschrijving
web_service.py:- Web API: Integreert FastAPI, ter ondersteuning van audio-upload, asynchrone taakwachtrij en model hot-swapping.
- RKNN Inferentie: Kapselt RKNN-initialisatie in voor zowel Encoder- als Decoder-modellen. Implementeert autoregressieve generatielus.
py_utils/whisper_utils.py:- Audioverwerking: Berekent Log-Mel-spectrogrammen die overeenkomen met de implementatie van OpenAI.
- Tokenizer: Verwerkt BPE-tokenisatie en vocabulairebeheer.
Modellen Wijzigen
- Plaats de getrainde en geconverteerde
.rknnencoder- en decoder-modellen in demodel/map. - De service laadt modellen automatisch op basis van de grootteparameter (bijv.
whisper_encoder_base_20s.rknn). Zorg ervoor dat de naamgevingsconventies voor bestanden worden aangehouden.