SOUND / Whisper
Whisper
reComputer RK3576
Robuust spraakherkenningsmodel via OpenAI Whisper.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.
sudo docker run --rm \
--name rk3576-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/rk3576-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 RKArmbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.
Snel 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.