Flutter Text-to-Speech mit natürlichen Stimmen
In Flutter bedeutet Text-to-Speech meist das Plugin flutter_tts, das mit den Stimmen des Handys selbst spricht. Das läuft offline und kostet nichts, doch die Stimme wechselt von Gerät zu Gerät und klingt selten nach Ihrer Marke oder Ihren Figuren.
Die kostenlose SuperClonica-Engine gibt einer App auf jedem Handy dieselbe natürliche Stimme, auf zwei Wegen: vorab vertonte Audiodateien in der App oder ein Sprachserver, den die App aufruft. Dieser Leitfaden zeigt beide mit fertigem Dart-Code und sagt, wann flutter_tts trotzdem die richtige Wahl ist.
Drei Wege, eine Flutter-App sprechen zu lassen
Die meisten Apps kombinieren sie: Assets für die Oberfläche, einen Server für Nutzertext und die Systemstimme als Rückfall.
- flutter_tts: die auf dem Handy installierten Stimmen, offline und kostenlos, auf jedem Gerät anders.
- Vorab vertonte Assets: jede feste Zeile einmal mit SuperClonica vertont und in der App ausgeliefert.
- Ein Sprachserver: Die App schickt Text an Ihren SuperClonica-Server und spielt die Antwort ab, für Text, der sich ändert.
- SuperClonica spricht 31 Sprachen; Chinesisch wird noch nicht unterstützt.
Eine Stimme gratis online wählen
Geben Sie auf der Seite einer beliebigen Stimme eine Zeile Ihrer App ein, 30 bis 100 Zeichen, wählen Sie die Sprache und klicken Sie auf die Schaltfläche zum Vertonen. In wenigen Sekunden hören Sie, ob sie passt, ohne Konto, auch auf dem Handy.
Vorab vertonte Zeilen als Assets ausliefern
MP3 hält die App klein: Eine Zeile aus einem Satz hat einige Dutzend Kilobyte.
- Vertonen Sie jede Zeile am Computer mit der Engine: python -m pip install superclonica-cpu, dann superclonica --text "Willkommen zurück!" --voice F1 --lang de --output assets/voice/welcome.mp3.
- Tragen Sie den Ordner unter flutter: assets: in pubspec.yaml ein.
- Spielen Sie eine Zeile mit dem Paket audioplayers ab: await AudioPlayer().play(AssetSource('voice/welcome.mp3'));
- Assets laufen offline und ohne Verzögerung, doch jede Änderung braucht eine neue App-Version.
Den eigenen Sprachserver aufrufen
Betreiben Sie den Server auf einem Rechner, den Sie kontrollieren: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu. Stellen Sie ihn hinter HTTPS, das iOS und Android standardmäßig erwarten, und setzen Sie SUPERCLONICA_API_KEY, damit nur Ihre App ihn nutzen kann. Mit den Paketen http, path_provider und audioplayers ist eine Zeile eine Anfrage: final res = await http.post(Uri.parse('https://tts.example.com/synthesize'), headers: {'Content-Type': 'application/json'}, body: jsonEncode({'text': 'Ihre Bestellung ist unterwegs.', 'voice': 'F1', 'lang': 'de'})); final file = File('${(await getTemporaryDirectory()).path}/line.wav'); await file.writeAsBytes(res.bodyBytes); await AudioPlayer().play(DeviceFileSource(file.path)); Ergänzen Sie einen Authorization-Bearer-Header mit dem Schlüssel und cachen Sie wiederkehrende Zeilen.
Wann flutter_tts genügt
flutter_tts genügt, wenn die Stimme nur verstanden werden muss: eine Benachrichtigung vorlesen, eine Barrierefreiheitshilfe, ein Prototyp oder eine App, die ganz ohne Netz sprechen muss und keine festen Zeilen hat. Wählen Sie SuperClonica, wenn die Stimme Teil des Produkts ist: ein Tutor, eine Spielfigur, eine geführte Meditation, eine Marke, die auf jedem Handy gleich klingen soll.