Portieren Sie den im folgenden Artikel erstellten VBScript-Code und machen Sie ihn zu einem Befehl für die einfache Verwendung.
Weitere Informationen zum Erstellen eines Videos mit diesem Befehl finden Sie im folgenden Artikel.
Weitere Informationen zum Festlegen der Aussprache finden Sie im folgenden Artikel.
Eine Liste der von Windows 10 unterstützten Audiodaten.
Fügen Sie hinzu, wenn Sie eine andere Sprache als Japanisch verwenden möchten.
Installieren Sie pywin32 mit pip, um COM zu verwenden.
Bibliotheksinstallation
py -m pip install pywin32
Holen Sie sich das verfügbare Audio.
voices2.py
import win32com.client
cat = win32com.client.Dispatch("SAPI.SpObjectTokenCategory")
cat.SetID(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices", False)
for token in cat.EnumerateTokens():
print(token.GetDescription())
Ausführungsergebnis
Microsoft Ayumi - Japanese (Japan)
Microsoft Naayf - Arabic (Saudi)
Microsoft Ivan - Bulgarian (Bulgaria)
Microsoft Herena - Catalan (Catalan)
Microsoft Jakub - Czech (Czech Republic)
(Unten weggelassen)
Dies ist ein Beispiel für das Vorlesen durch Angabe der Stimme.
sayaka.py
import win32com.client
sapi = win32com.client.Dispatch("SAPI.SpVoice")
cat = win32com.client.Dispatch("SAPI.SpObjectTokenCategory")
cat.SetID(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices", False)
v = [t for t in cat.EnumerateTokens() if t.GetAttribute("Name") == "Microsoft Sayaka"]
if v:
oldv = sapi.Voice
sapi.Voice = v[0]
sapi.Speak("Hallo Welt")
sapi.Voice = oldv
** [Achtung] ** </ font> Speichern Sie die Quelle in UTF-8.
Dies ist ein Beispiel für die Ausgabe von Audio in die Datei "sayaka.wav".
sayaka-wav.py
import win32com.client
sapi = win32com.client.Dispatch("SAPI.SpVoice")
cat = win32com.client.Dispatch("SAPI.SpObjectTokenCategory")
cat.SetID(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices", False)
v = [t for t in cat.EnumerateTokens() if t.GetAttribute("Name") == "Microsoft Sayaka"]
if v:
fs = win32com.client.Dispatch("SAPI.SpFileStream")
fs.Open("sayaka.wav", 3)
sapi.AudioOutputStream = fs
oldv = sapi.Voice
sapi.Voice = v[0]
sapi.Speak("Hallo Welt")
sapi.Voice = oldv
fs.Close()
Sobald Sie COM verwenden können, ist der Rest normales Python.
Ich habe es zu einem Befehl gemacht, um das Lesen und Speichern zu vereinfachen. Sie können es auch als Bibliothek verwenden, wenn Sie von anderen darauf verweisen.
Anwendungsbeispiel
py wintts.py -l
py wintts.py -l ja en
py wintts.py Hallo Welt
py wintts.py -v sayaka -r 5 Hallo Welt
py wintts.py -v sayaka -o sayaka.wav -i hello.txt
py wintts.py -v zira -p "h eh - l ow 1"
py wintts.py -v zira -s ipa "hɛ.ˈloʊ"
WSL
Sie können COM nicht über WSL Python aufrufen, aber Sie können Windows-seitiges Python über WSL aufrufen.
Platzieren Sie wintts.py an einer für Windows sichtbaren Stelle. Schreiben Sie einen einfachen Wrapper wie den folgenden, platzieren Sie ihn an einer beliebigen Stelle in der WSL und fügen Sie das Attribut execute hinzu.
wintts
#!/bin/sh
py.exe 'C:\Skriptspeicherung\wintts.py' "$@"
Sie können es jetzt wie einen WSL-Befehl verwenden.
Anwendungsbeispiel
$ py wintts.py -l de fr
de-AT, German (Austria): Microsoft Michael
de-CH, German (Switzerland): Microsoft Karsten
de-DE, German (Germany): Microsoft Hedda
de-DE, German (Germany): Microsoft Katja
de-DE, German (Germany): Microsoft Stefan
fr-CA, French (Canada): Microsoft Caroline
fr-CA, French (Canada): Microsoft Claude
fr-CA, French (Canada): Microsoft Nathalie(Canada)
fr-CH, French (Switzerland): Microsoft Guillaume
fr-FR, French (France): Microsoft Hortense
fr-FR, French (France): Microsoft Julie
fr-FR, French (France): Microsoft Paul
$ wintts -v julie bonjour
$ wintts -o de.wav -v hedda guten tag
$ winplay de.wav
Der letzte Aufruf von winplay ist das selbst erstellte Skript, das im folgenden Artikel erstellt wurde.
Nachdem ich diesen Artikel geschrieben habe, habe ich einige Artikel gesehen, die sich mit SAPI in Python befassen, also werde ich ihn hinzufügen.
Recommended Posts