SOUND / Whisper
Whisper
Modèle de reconnaissance vocale robuste via OpenAI Whisper.
Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.
Pour commencer
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.pyAPI REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
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))
Détails du modèle
reComputer RKDémarrage rapide
1. Installer Docker
Exécutez les commandes suivantes sur la carte de développement pour installer Docker :
# Télécharger le script d'installation
curl -fsSL https://get.docker.com -o get-docker.sh
# Installer en utilisant le miroir Aliyun
sudo sh get-docker.sh --mirror Aliyun
# Démarrer Docker et activer le démarrage automatique
sudo systemctl enable docker
sudo systemctl start docker2. Exécuter le projet (Une commande, aperçu double mode)
Ce projet prend en charge l'accès via Navigateur Web. Le programme sert automatiquement une interface web pour la reconnaissance vocale.
Étape A : Télécharger les 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:latestÉtape B : Exécuter en un clic
Pour 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.pyAccès via : http://<Board_IP>:8000
Pour 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.pyAccès via : http://<Board_IP>:8000
🔌 Documentation de l'API
Ce projet fournit des interfaces RESTful pour les tâches de reconnaissance vocale, prenant en charge la transcription synchrone et asynchrone de fichiers audio.
1. Interface de transcription synchrone (Audio court)
Point de terminaison : POST /api/models/whisper/predict
Adapté aux fichiers audio de moins de 20 secondes.
Paramètres de la requête (Multipart/Form-Data) :
file: (Requis) Fichier audio à transcrire (par exemple, .wav, .mp3).language: (Optionnel) Code de langue cible (par exemple,en,zh). Si différent du modèle actuel, il remplacera à chaud le tokenizer.
Exemples d'utilisation :
curl -X POST "http://127.0.0.1:8000/api/models/whisper/predict" \
-F "file=@/home/user/audio/test_en.wav" \
-F "language=en"Format de réponse (JSON) :
{
"status": "success",
"data": {
"text": "Hello world, this is a test.",
"language": "en",
"duration": 3.5,
"inference_time": 0.8
}
}2. Interface de transcription asynchrone (Audio long)
Point de terminaison : POST /api/models/whisper/task
Crée une tâche asynchrone pour traiter des fichiers audio/vidéo plus longs.
Exemples d'utilisation :
curl -X POST "http://127.0.0.1:8000/api/models/whisper/task" \
-F "file=@/home/user/audio/long_podcast.wav" \
-F "language=zh"Format de réponse (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. Interrogation de l'état d'une tâche
Point de terminaison : GET /api/models/whisper/task/{task_id}
Exemples d'utilisation :
curl "http://127.0.0.1:8000/api/models/whisper/task/29c7b932-a77f-480c-a18b-8a958c7911c3"4. Interface de configuration système (Config)
Utilisée pour changer dynamiquement de modèles et de langues.
Obtenir l'état actuel du système
- Point de terminaison :
GET /api/system/status - Réponse :
{"status": "success", "data": {"model_size": "base", "language": "en", "max_tokens": 12, "rknn_lite_available": true}}
Mettre à jour la configuration système (Remplacement à chaud)
- Point de terminaison :
POST /api/system/config - Paramètres de la requête (Form-Data) :
model_size=base,language=zh - Réponse :
{"status": "success", "message": "Successfully loaded base model."}
🛠️ Guide du développeur (Recommandations de production)
Description du code
web_service.py:- API Web : Intègre FastAPI, prenant en charge le téléchargement audio, la file d'attente de tâches asynchrones et le remplacement à chaud de modèles.
- Inférence RKNN : Encapsule l'initialisation RKNN pour les modèles Encodeur et Décodeur. Implémente la boucle de génération autorégressive.
py_utils/whisper_utils.py:- Traitement audio : Calcule les spectrogrammes Log-Mel alignés avec l'implémentation d'OpenAI.
- Tokenizer : Gère la tokenisation BPE et la gestion du vocabulaire.
Modification des modèles
- Placez les modèles
.rknnd'encodeur et de décodeur entraînés et convertis dans le répertoiremodel/. - Le service charge automatiquement les modèles en fonction du paramètre de taille (par exemple,
whisper_encoder_base_20s.rknn). Assurez-vous que les conventions de nommage des fichiers sont respectées.