ANLEITUNG

PowerShell Text-to-Speech mit natürlichen Stimmen

PowerShell kann ab Werk sprechen: Windows bringt den Synthesizer System.Speech mit, und ein paar Zeilen lassen ein Skript melden, dass ein Backup fertig oder ein Build gescheitert ist. Es sind aber die roboterhaften Stimmen, die Windows seit Jahren hat, und sie unterscheiden sich von Rechner zu Rechner.

Die kostenlose SuperClonica-Engine betreibt natürliche neuronale Stimmen auf Ihrem Computer oder Server, und PowerShell erreicht sie mit einem einzigen Invoke-RestMethod-Aufruf. Dieser Leitfaden zeigt beide Wege und wann welcher passt.

Zwei Wege, aus PowerShell zu sprechen

Für einen schnellen Hinweis in Worten reicht System.Speech; für alles, was Menschen anhören, nehmen Sie eine natürliche Stimme.

  • System.Speech: in Windows eingebaut; laden Sie es mit Add-Type -AssemblyName System.Speech und nutzen Sie die Klasse SpeechSynthesizer.
  • Es läuft offline und braucht nichts weiter, doch die Stimmen klingen roboterhaft und hängen von den installierten Windows-Stimmen ab.
  • SuperClonica: ein lokaler HTTP-Server mit natürlichen Stimmen, Figurenstimmen und Ihrer eigenen trainierten Stimme.
  • Es spricht 31 Sprachen; Chinesisch wird noch nicht unterstützt.

Die Stimmen gratis anhören

Geben Sie auf der Seite einer beliebigen Stimme den Satz ein, den Ihr Skript sagen soll, 30 bis 100 Zeichen, wählen Sie die Sprache und klicken Sie auf die Schaltfläche zum Vertonen. In wenigen Sekunden hören Sie den Unterschied, ohne Konto.

Einen lokalen SuperClonica-Server aufrufen

Windows PowerShell 5.1 sendet einen Text-Body in der falschen Kodierung, darum UTF-8-Bytes wie oben, und liest eine .ps1-Datei ohne BOM als ANSI: Speichern Sie Skripte mit Umlauten als UTF-8 mit BOM.

  • Starten Sie den Server einmal, unter Windows mit Docker Desktop: docker run -d -p 8000:8000 -v superclonica-models:/models superclonica/superclonica:cpu.
  • Vertonen Sie einen Satz aus PowerShell: $json = @{text='Die nächtliche Sicherung ist fertig'; voice='F1'; lang='de'} | ConvertTo-Json; Invoke-RestMethod -Method Post -Uri http://localhost:8000/synthesize -ContentType 'application/json' -Body ([Text.Encoding]::UTF8.GetBytes($json)) -OutFile hello.wav.
  • Die Datei ist ein 16-Bit-Mono-WAV, das jeder Player, jedes Schnittprogramm und jedes Skript nutzen kann.
  • Setzen Sie SUPERCLONICA_API_KEY auf dem Server und ergänzen Sie -Headers @{Authorization="Bearer IHR-SCHLÜSSEL"}, wenn andere Rechner ihn erreichen.

Skripte, die sprechen

Spielen Sie das WAV sofort mit (New-Object Media.SoundPlayer "hello.wav").PlaySync() ab oder speichern Sie Durchsagen für später. Eine geplante Aufgabe kann eine Morgenzusammenfassung vorlesen, ein CI-Job einen gescheiterten Build über den Bürolautsprecher melden und eine Schleife über eine CSV-Datei Hunderte Ansagen in einem Durchlauf vertonen. Ein kurzer Satz dauert auf einem normalen Prozessor deutlich unter einer Sekunde.

Wann System.Speech genügt

System.Speech genügt, wenn die Stimme nur verstanden, nicht genossen werden muss: ein schneller Hinweis, während Sie am Schreibtisch sind, ein Barrierefreiheitstest, ein Rechner ohne Docker. Nutzen Sie SuperClonica, wenn das Audio Ihren Schreibtisch verlässt, in Videos, Ansagen, Durchsagen oder Produkten, oder wenn dieselbe Stimme auf jedem Rechner gleich klingen muss.