SOUND / MMS-TTS
MMS-TTS
reComputer RK3576
Mit RKNN beschleunigte englische Sprachsynthese durch facebook/mms-tts-eng auf reComputer RK3576 und RK3588.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.
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-mms_tts:latestREST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "mms-tts-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "mms-tts-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Modelldetails
Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.
Schnellstart
1. Docker installieren
Führen Sie zur Installation von Docker folgende Befehle auf dem Entwicklungsboard aus:
# 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. Projekt ausführen (ein Befehl und Webvorschau)
Dieses Projekt bietet englische Sprachsynthese mit
facebook/mms-tts-eng. Die Weboberfläche nimmt Text entgegen, steuert die
Sprechgeschwindigkeit und bietet WAV-Wiedergabe und -Download.
Schritt A: Images abrufen
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-mms_tts:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-mms_tts:latestSchritt B: mit einem Befehl starten
Für 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-mms_tts:latestAufruf: http://<Board_IP>:8000
Für 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-mms_tts:latestAufruf: http://<Board_IP>:8000
3. Inferenz über die Befehlszeile
python inference.py --platform rk3576 --model_dir model \
--text 'hello from the edge' \
--speaking_rate 0.8 \
--output output.wavVerwenden Sie im RK3588-Quellverzeichnis --platform rk3588.
🔌 API-Dokumentation
Die REST-API erzeugt englische Sprache synchron und speichert die neuesten 20 erzeugten WAV-Dateien zum vorübergehenden Herunterladen.
1. Schnittstelle zur Sprachsynthese
Endpunkt: POST /api/models/mms_tts/predict
Anfrageparameter (Multipart/Form-Data):
text: Erforderlicher englischer Text mit ausschließlich unterstützten Zeichen, höchstens 99 Zeichen.speaking_rate: Optionaler Wert von 0.6 bis 1.4. Der Standardwert ist 1.0; Werte unter 1 erzeugen langsamere Sprache.
Anwendungsbeispiel:
curl -X POST "http://127.0.0.1:8000/api/models/mms_tts/predict" \
-F 'text=hello from the edge' \
-F 'speaking_rate=0.8'Antwortformat (JSON):
{
"success": true,
"model": "mms_tts",
"platform": "rk3576",
"inference_time_ms": 224.7,
"result": {
"text": "hello from the edge",
"sample_rate": 16000,
"samples": 35840,
"duration_seconds": 2.24,
"speaking_rate": 0.8,
"duration_clipped": false,
"warnings": [],
"audio_url": "/api/audio/<audio_filename>",
"audio_filename": "<audio_filename>"
}
}Der Sprechgeschwindigkeitsparameter skaliert die Phonemdauer vor der Decodierung. Die WAV-Datei wird deshalb nicht nachträglich neu abgetastet und die Tonhöhe bleibt erhalten. Erreichen langsame Sprache oder lange Texte die Dauergrenze des Decoders, ist duration_clipped gleich true und die Antwort enthält eine Warnung.
2. Erzeugtes Audio herunterladen
Endpunkt: GET /api/audio/{audio_filename}
curl -o speech.wav \
"http://127.0.0.1:8000/api/audio/<audio_filename>"Verwenden Sie genau den Wert audio_filename, den die Vorhersageschnittstelle zurückgibt.
3. Schnittstelle zur Systemkonfiguration
Aktuelle Konfiguration abrufen
- Endpunkt:
GET /api/config - Standardantwort:
{"speaking_rate": 1.0}
Konfiguration aktualisieren
curl -X POST "http://127.0.0.1:8000/api/config" \
-H 'Content-Type: application/json' \
-d '{"speaking_rate": 1.2}'Prüfen Sie mit GET /api/health die aktive Plattform, den geladenen Encoder und Decoder sowie die unterstützten Eingabefunktionen. Die OpenAPI-Dokumentation befindet sich unter /docs.
🛠️ Entwicklerhandbuch (Empfehlungen für den Produktionseinsatz)
Codebeschreibung
web_service.py:- Web-API: Verarbeitet Syntheseanfragen, Konfiguration, die Speicherung erzeugter Audiodaten, Wiedergabe und Download.
- Aufbewahrung der Ausgaben: Erzeugt UUID-basierte WAV-Dateinamen und behält die neuesten 20 erzeugten Dateien.
task_runtime.py:- Textverarbeitung: Validiert unterstützte englische Zeichen und konvertiert sie in die feste Modelleingabe.
- Dauersteuerung: Skaliert Phonemdauern mit
speaking_rateund meldet Decoder-Clipping. - RKNN-Inferenz: Führt Encoder und Decoder aus und schreibt Mono-16-kHz-WAV-Ausgabe.
inference.py: Bietet einmalige Synthese in eine lokale WAV-Datei.
Modelldateien
| Komponente | Datei |
|---|---|
| MMS-TTS-Encoder | model/encoder.rknn |
| MMS-TTS-Decoder | model/decoder.rknn |
Modelle ändern
- Legen Sie kompatible Encoder- und Decoder-Modelle in
model/ab und behalten Sie deren Dateinamen bei. - Halten Sie das Paar auf das erwartete Vokabular, den Dauer-Tensor und den Mono-16-kHz-Ausgabevertrag abgestimmt.
- Testen Sie den Sprechgeschwindigkeitsbereich 0.6–1.4 und die Dauergrenze des Decoders.
Encoder und Decoder sind zwei Stufen einer Synthese-Pipeline und keine alternativen Größen. Das Upstream-Projekt bietet derzeit ein Paar pro Plattform und keinen separaten Quantisierungsauswahl-Parameter.
Lokale Images erstellen
Im Stammverzeichnis von reComputer-RK-CV ausführen:
docker build -f docker/rk3576/mms_tts.dockerfile \
-t rk3576-mms_tts:local src/rk3576_mms_tts
docker build -f docker/rk3588/mms_tts.dockerfile \
-t rk3588-mms_tts:local src/rk3588_mms_ttsEingaben und Ausgaben
Eingabe: englischer Text und Sprechgeschwindigkeit. Ausgabe: synthetisiertes WAV-Audio, Dauer, Abtastrate und Anzahl der Samples.