Portez le code VBScript créé dans l'article suivant et faites-en une commande pour une utilisation facile.
Veuillez vous référer à l'article suivant pour savoir comment créer une vidéo avec cette commande.
Veuillez vous référer à l'article suivant pour savoir comment spécifier la prononciation.
Une liste d'audio pris en charge par Windows 10.
Ajoutez si vous souhaitez utiliser une langue autre que le japonais.
Installez pywin32 avec pip pour utiliser COM.
Installation de la bibliothèque
py -m pip install pywin32
Obtenez l'audio disponible.
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())
Résultat d'exécution
Microsoft Ayumi - Japanese (Japan)
Microsoft Naayf - Arabic (Saudi)
Microsoft Ivan - Bulgarian (Bulgaria)
Microsoft Herena - Catalan (Catalan)
Microsoft Jakub - Czech (Czech Republic)
(Omis ci-dessous)
Voici un exemple de lecture à voix haute en spécifiant la voix.
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("Bonjour le monde")
sapi.Voice = oldv
** [Attention] ** </ font> Enregistrez la source en UTF-8.
Ceci est un exemple de sortie audio dans le fichier 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("Bonjour le monde")
sapi.Voice = oldv
fs.Close()
Une fois que vous pouvez utiliser COM, le reste est du Python normal.
Je l'ai transformé en une commande pour le rendre facile à lire et à enregistrer. Vous pouvez également l'utiliser comme bibliothèque si vous y faites référence par d'autres.
Exemple d'utilisation
py wintts.py -l
py wintts.py -l ja en
py wintts.py Bonjour le monde
py wintts.py -v sayaka -r 5 Bonjour le monde
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
Vous ne pouvez pas appeler COM à partir de WSL Python, mais vous pouvez appeler Python côté Windows à partir de WSL.
Placez wintts.py dans un endroit visible par Windows. Écrivez un wrapper simple comme celui-ci et placez-le là où se trouve le chemin dans WSL et ajoutez l'attribut execute.
wintts
#!/bin/sh
py.exe 'C:\Stockage des scripts\wintts.py' "$@"
Vous pouvez maintenant l'utiliser comme une commande WSL.
Exemple d'utilisation
$ 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
Le dernier appel à winplay est le script créé par vous-même dans l'article suivant.
Après avoir écrit cet article, j'ai vu quelques articles traitant de SAPI en Python, je vais donc l'ajouter.
Recommended Posts