C++ Text-to-Speech: natürliche Stimmen für Spiele und Apps
C++ hat keine Standardbibliothek für Text-to-Speech. Üblich sind die Sprach-API des Systems, die unter Windows, macOS und Linux verschieden ist, ein alter Formantsynthesizer wie eSpeak NG, der nach Roboter klingt, oder eine neuronale Engine, die man aus C++ aufruft. Letztere liefert natürliche Stimmen, die auf jeder Plattform gleich klingen.
SuperClonica bietet natürliche Stimmen in 31 Sprachen, gratis online zum Testen, eine kostenlose Engine mit Kommandozeile und HTTP-Server in Docker und mehr als 170 Katalogstimmen. Dieser Leitfaden zeigt zwei Wege aus C++: vorab vertonte Sätze und ein lokaler Server zur Laufzeit.
Optionen für Sprache in C++
Die meisten Spiele nutzen vorvertonte Dateien für feste Dialoge und einen Server nur für Text, den Spieler schreiben.
- System-APIs: SAPI unter Windows, AVSpeechSynthesizer auf Apple-Systemen, Speech Dispatcher unter Linux; drei verschiedene Codepfade.
- eSpeak NG: klein und einbettbar, aber deutlich roboterhaft.
- Vorvertonte Dateien: die Sätze eines Spiels oder einer App einmal vertont und als WAV oder OGG ausgeliefert.
- Ein lokaler HTTP-Server: Das Programm schickt Text und bekommt eine WAV-Datei zurück.
Eine Stimme gratis online wählen
Geben Sie auf der Seite einer beliebigen Stimme einen Satz mit 30 bis 100 Zeichen ein, wählen Sie die Sprache und klicken Sie auf die Schaltfläche zum Vertonen. In wenigen Sekunden hören Sie, ob die Stimme zu Ihrem Spiel oder Ihrer App passt, ohne Konto.
Sätze vorab vertonen
Gleicher Text, gleiche Stimme und gleicher Seed ergeben immer dieselbe Datei, vertonte Sätze können also in der Versionsverwaltung liegen und bei Bedarf neu erzeugt werden.
- Installieren Sie die Engine: python -m pip install superclonica-cpu.
- Rufen Sie aus einem Build-Skript oder Tool die Kommandozeile auf: std::system("superclonica --text \"Welcome, traveler.\" --voice M2 --lang en --output welcome.wav");
- Der Dateiname bestimmt das Format: WAV, MP3, OGG oder FLAC.
- Laden Sie die Dateien mit der Audiobibliothek, die Sie schon nutzen, etwa SDL_mixer, SFML, raylib oder miniaudio.
Ein Sprachserver zur Laufzeit
Für Text, der erst zur Laufzeit entsteht, starten Sie den Server einmal: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. Dann schicken Sie JSON mit libcurl und schreiben die Antwort in eine Datei (curl/curl.h einbinden und gegen libcurl linken): std::string body = R"({"text": "Welcome, traveler.", "voice": "M2", "lang": "en"})"; CURL* c = curl_easy_init(); curl_slist* h = curl_slist_append(nullptr, "Content-Type: application/json"); curl_easy_setopt(c, CURLOPT_URL, "http://localhost:8000/synthesize"); curl_easy_setopt(c, CURLOPT_HTTPHEADER, h); curl_easy_setopt(c, CURLOPT_POSTFIELDS, body.c_str()); FILE* f = std::fopen("welcome.wav", "wb"); curl_easy_setopt(c, CURLOPT_WRITEDATA, f); curl_easy_perform(c); std::fclose(f); curl_slist_free_all(h); curl_easy_cleanup(c); Die Antwort ist eine 16-Bit-Mono-WAV-Datei; die Header X-Sample-Rate und X-Duration-Seconds beschreiben sie. Setzen Sie SUPERCLONICA_API_KEY und halten Sie den Server in einem privaten Netz, wenn er nicht auf dem Rechner des Spielers läuft.
Stimmen zum Ausliefern
Für ein Spiel oder eine App, die Sie veröffentlichen, nutzen Sie die zehn Standardstimmen, M1 bis M5 und F1 bis F5, kostenlos unter der OpenRAIL-M-Lizenz, oder Ihre eigene, im SuperClonica-Studio trainierte Stimme aus der Aufnahme eines Sprechers, der zugestimmt hat. Engine und Docker-Image stehen unter Apache 2.0. Von Fans gemachte Figurenstimmen aus dem Katalog sind für Fanprojekte, nicht für kommerzielle Veröffentlichungen.