Verwenden Sie die Windows 10-Sprachsynthese mit Python

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.

Vorbereitung

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

Transplantation

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.

Befehl

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.

ähnliche Links

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

Verwenden Sie die Windows 10-Sprachsynthese mit Python
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Mecab mit Python 3
Verwenden Sie DynamoDB mit Python
Python ab Windows 7
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Python mit Docker
Verwenden Sie Python / Django mit dem Windows Azure Cloud Service!
Python mit VSCode (Windows 10)
Verwenden Sie die Trello-API mit Python
Führen Sie Python mit PyCharm aus (Windows)
Verwenden Sie die Twitter-API mit Python
Verwenden Sie TUN / TAP mit Python
Verwenden Sie Windows 10-Schriftarten mit WSL
Verwenden Sie die Unterschall-API mit Python3
Verwenden Sie Python unter Windows (PyCharm)
Zeitsynchronisation (Windows) mit Python
Gesichtserkennung mit YOLO Face (Windows10, Python3.6)
Verwenden Sie eine Point Grey-Kamera mit Python (PyCapture2).
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Verwenden Sie NAIF SPICE TOOL KIT mit Python
Verwenden Sie rospy mit virtualenv in Python3
Erstellen Sie mlpy mit python3.3 (64bit) (Windows 64bit)
Verwenden Sie Python in pyenv mit NeoVim
Verwenden Sie Tensorflow 2.1.0 mit Anaconda unter Windows 10!
Japanische Sprachsynthese beginnend mit Tacotron2
Verwenden Sie OpenCV mit Python 3 in Window
Erste Schritte mit Python 3.8 unter Windows
Verwenden Sie PostgreSQL mit Lambda (Python + psycopg2)
[Python] Erstellen mehrerer Fenster mit Tkinter
End-to-End-Text-Sprachsynthese ab ESPnet2
Englische Spracherkennung mit Python [Rede zu Text]
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Verwenden Sie smbus mit python3 in einer pyenv-Umgebung
Verwenden Sie DeepL mit Python (für die Artikelübersetzung)
Verwenden Sie den Amazon Simple Notification Service mit Python
Verwendung von Cmder mit PyCharm (Windows)
Erstellen einer Python 3.6-Umgebung mit Windows + PowerShell
Einfache Einführung der Spracherkennung mit Python
[Einführung in Python] Verwenden wir foreach mit Python
Verwenden Sie PIL oder Pillow mit Cygwin Python
Entwickeln Sie Windows-Apps mit Python 3 + Tkinter (Vorbereitung)
Verwenden Sie es, ohne Python 2.x unter Windows zu installieren
Verwenden Sie Application Insights mit Python 3 (einschließlich Flaschen).
Verwenden von C ++ - Funktionen aus Python mit pybind11
Verwenden Sie den Phantomjs-Webdriver von Selen mit Pythons Unittest
Bis Sie opencv mit Python verwenden können
Verwenden Sie Python und MeCab mit Azure-Funktionen
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Python unter Windows
Scraping mit Python
Python Windows-Umgebung
Twilio mit Python
In Python integrieren