SOUND / MMS-TTS
MMS-TTS
reComputer RK3576
Engelse spraaksynthese met facebook/mms-tts-eng, versneld met RKNN 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-mms_tts: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": "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())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, webvoorbeeld)
Dit project biedt Engelse spraaksynthese met facebook/mms-tts-eng. De
webinterface neemt tekst aan, regelt de spreeksnelheid en biedt afspelen en
downloaden van WAV.
Stap A: images ophalen
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: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-mms_tts: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-mms_tts:latestOpenen via: http://<Board_IP>:8000
3. Inferentie via de opdrachtregel
python inference.py --platform rk3576 --model_dir model \
--text 'hello from the edge' \
--speaking_rate 0.8 \
--output output.wavGebruik --platform rk3588 wanneer u vanuit de RK3588-bronmap werkt.
🔌 API-documentatie
De REST-API genereert Engelse spraak synchroon en bewaart de nieuwste 20 gegenereerde WAV-bestanden om tijdelijk te downloaden.
1. Spraaksynthese-interface
Endpoint: POST /api/models/mms_tts/predict
Aanvraagparameters (Multipart/Form-Data):
text: Verplichte Engelse tekst met uitsluitend ondersteunde tekens, maximaal 99 tekens.speaking_rate: Optionele waarde van 0.6 tot 1.4. De standaardwaarde is 1.0; waarden onder 1 leveren tragere spraak op.
Gebruiksvoorbeeld:
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'Antwoordformaat (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>"
}
}De spreeksnelheidsparameter schaalt de foneemduur vóór het decoderen. De WAV wordt dus niet achteraf geresampled en de toonhoogte blijft behouden. Als trage spraak of lange tekst de duurlimiet van de decoder bereikt, is duration_clipped gelijk aan true en bevat het antwoord een waarschuwing.
2. Gegenereerde audio downloaden
Endpoint: GET /api/audio/{audio_filename}
curl -o speech.wav \
"http://127.0.0.1:8000/api/audio/<audio_filename>"Gebruik de exacte audio_filename die de voorspellingsinterface teruggeeft.
3. Interface voor systeemconfiguratie
Huidige configuratie ophalen
- Endpoint:
GET /api/config - Standaardantwoord:
{"speaking_rate": 1.0}
Configuratie bijwerken
curl -X POST "http://127.0.0.1:8000/api/config" \
-H 'Content-Type: application/json' \
-d '{"speaking_rate": 1.2}'Controleer met GET /api/health het actieve platform, de geladen encoder en decoder en de ondersteunde invoerfuncties. OpenAPI-documentatie staat op /docs.
🛠️ Handleiding voor ontwikkelaars (productieadvies)
Beschrijving van de code
web_service.py:- Web-API: handelt syntheseverzoeken, configuratie, opslag van gegenereerde audio, afspelen en downloaden af.
- Behoud van uitvoer: maakt WAV-bestandsnamen op basis van een UUID en behoudt de nieuwste 20 gegenereerde bestanden.
task_runtime.py:- Tekstverwerking: valideert ondersteunde Engelse tekens en zet ze om naar de vaste modelinvoer.
- Duurregeling: schaalt de foneemduur met
speaking_rateen meldt afkapping door de decoder. - RKNN-inferentie: voert de encoder en decoder uit en schrijft monofonische 16 kHz WAV-uitvoer.
inference.py: biedt eenmalige synthese naar een lokaal WAV-bestand.
Modelbestanden
| Onderdeel | Bestand |
|---|---|
| MMS-TTS-encoder | model/encoder.rknn |
| MMS-TTS-decoder | model/decoder.rknn |
Modellen wijzigen
- Plaats compatibele encoder- en decodermodellen in
model/en behoud hun bestandsnamen. - Houd het paar afgestemd op de verwachte woordenschat, de duurttensor en het uitvoercontract van mono 16 kHz.
- Test het spreeksnelheidsbereik van 0.6–1.4 en de duurlimiet van de decoder.
De encoder en decoder zijn twee fasen van één synthesepipeline en geen alternatieve groottes. Het upstream-project levert momenteel één paar per platform en geen aparte kwantiseringskiezer.
Lokale images bouwen
Voer dit uit vanuit de hoofdmap van reComputer-RK-CV:
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_ttsInvoer en uitvoer
Invoer: Engelse tekst en spreeksnelheid. Uitvoer: gesynthetiseerde WAV-audio, duur, samplefrequentie en aantal samples.