SOUND / YAMNet
YAMNet
reComputer RK3576
YAMNet-audiogebeurtenisclassificatie over 521 AudioSet-klassen op reComputer RK3576 en RK3588.
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 --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yamnet:latestREST API
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "yamnet-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "yamnet-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Modeldetails
Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.
Snel aan de slag
1. Docker installeren
Voer de volgende opdrachten 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. Het project uitvoeren (één opdracht, voorbeeld van beide modi)
Dit project classificeert audio over 521 AudioSet-klassen. De webinterface accepteert geüploade audio of browsermicrofoonopnamen en toont zowel algemene Top-K-voorspellingen als een gebeurtenistijdlijn met een schuivend venster.
Stap A: images ophalen
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yamnet:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yamnet:latestStap B: met één opdracht starten
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:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yamnet:latestOpenen 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:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yamnet:latestOpenen via: http://<Board_IP>:8000
Opnamen uit de browser worden naar de service geüpload, dus toewijzing van het audio-apparaat van de host is niet vereist.
3. Inferentie via de opdrachtregel
python inference.py --platform rk3576 --model_dir model \
--file samples/test.wav --topk 5 --threshold 0.1 --hop_seconds 1Gebruik --platform rk3588 wanneer u vanuit de RK3588-bronmap werkt.
🔌 API-documentatie
De REST-API zet audio om naar mono 16 kHz en analyseert vaste vensters van 3 seconden. De invoerduur is beperkt tot 300 seconden.
1. Interface voor classificatie van audiogebeurtenissen
Endpoint: POST /api/models/yamnet/predict
Aanvraagparameters (Multipart/Form-Data):
file: Verplicht audiobestand. De uploadlimiet is 64 MB.topk: Optioneel aantal hoogst scorende klassen, van 1 tot 20. De standaardwaarde is 5.threshold: Optionele minimale gebeurtenisscore, van 0 tot 1. De standaardwaarde is 0.1.hop_seconds: Optionele afstand tussen opeenvolgende vensters van 3 seconden, van 0.25 tot 3 seconden. De standaardwaarde is 1 seconde.
Gebruiksvoorbeeld:
curl -X POST "http://127.0.0.1:8000/api/models/yamnet/predict" \
-F 'file=@samples/test.wav' \
-F 'topk=5' \
-F 'threshold=0.1' \
-F 'hop_seconds=1'Antwoordformaat (JSON):
{
"success": true,
"model": "yamnet",
"platform": "rk3576",
"inference_time_ms": 76.1,
"result": {
"duration_seconds": 4.5,
"sample_rate": 16000,
"window_seconds": 3.0,
"hop_seconds": 1.0,
"top_class": {"id": 0, "label": "Speech", "score": 0.83},
"predictions": [],
"segments": [],
"events": []
}
}predictions bevat totaalscores, segments de resultaten per venster en events voegt opeenvolgende vensters met dezelfde hoogst scorende klasse samen.
2. Interface voor systeemconfiguratie
Huidige configuratie ophalen
- Endpoint:
GET /api/config - Standaardantwoord:
{"topk": 5, "threshold": 0.1, "hop_seconds": 1.0}
Configuratie bijwerken
curl -X POST "http://127.0.0.1:8000/api/config" \
-H 'Content-Type: application/json' \
-d '{"topk": 10, "threshold": 0.2, "hop_seconds": 0.5}'Controleer met GET /api/health het actieve platform, het geladen model en de runtimefuncties. Interactieve OpenAPI-documentatie staat op /docs.
🛠️ Handleiding voor ontwikkelaars (productieadvies)
Beschrijving van de code
web_service.py:- Web-API: handelt geüploade bestanden, browseropnamen, runtimeconfiguratie en classificatieantwoorden af.
- Validatie: dwingt de limieten voor upload, duur en parameters af.
task_runtime.py:- Audioverwerking: zet de invoer om naar mono 16 kHz en plant vaste vensters van 3 seconden.
- Classificatie: voert
yamnet.rknnuit, rangschikt 521 labels en past de Top-K- en drempelinstellingen toe. - Tijdlijn: levert segmenten per venster en voegt opeenvolgende gebeurtenissen samen.
inference.py: biedt eenmalige classificatie via de opdrachtregel.
Modelbestanden
| Onderdeel | Bestand |
|---|---|
| YAMNet-model | model/yamnet.rknn |
| AudioSet-klassenlabels | model/yamnet_class_map.txt |
Modellen wijzigen
- Plaats het geconverteerde model op
model/yamnet.rknnen de afgestemde map met 521 labels opmodel/yamnet_class_map.txt. - Behoud de vaste invoer van mono 16 kHz en 3 seconden en de volgorde van de uitvoerklassen.
- Test korte fragmenten, lange invoer met een schuivend venster en elke parametergrens.
Het upstream-project levert momenteel één RKNN-model per platform. topk,
threshold en hop_seconds regelen nabewerking en de vensterplanning in
plaats van modelgrootte of kwantisering.
Lokale images bouwen
Voer dit uit vanuit de hoofdmap van reComputer-RK-CV:
docker build -f docker/rk3576/yamnet.dockerfile \
-t rk3576-yamnet:local src/rk3576_yamnet
docker build -f docker/rk3588/yamnet.dockerfile \
-t rk3588-yamnet:local src/rk3588_yamnetInvoer en uitvoer
Invoer: audio omgezet naar mono 16 kHz. Uitvoer: algemene voorspellingen, segmenten per venster en samengevoegde audiogebeurtenissen.