Utiliser la synthèse vocale Windows 10 avec Python

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.

Préparation

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

Transplantation

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.

commander

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.

Liens connexes

Après avoir écrit cet article, j'ai vu quelques articles traitant de SAPI en Python, je vais donc l'ajouter.

Recommended Posts

Utiliser la synthèse vocale Windows 10 avec Python
[Python] Utiliser JSON avec Python
Utiliser mecab avec Python 3
Utiliser DynamoDB avec Python
Python à partir de Windows 7
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Utilisez Python / Django avec Windows Azure Cloud Service!
Python avec VSCode (Windows 10)
Utiliser l'API Trello avec python
Exécutez python avec PyCharm (Windows)
Utiliser l'API Twitter avec Python
Utiliser TUN / TAP avec Python
Utiliser les polices Windows 10 avec WSL
Utiliser l'API subsonique avec python3
Utiliser Python sur Windows (PyCharm)
Synchronisation de l'heure (Windows) avec Python
Détection de visage avec YOLO Face (Windows10, Python3.6)
Utiliser la caméra Point Grey avec Python (PyCapture2)
Utilisez vl53l0x avec RaspberryPi (python)
Utilisez NAIF SPICE TOOL KIT avec Python
Utiliser rospy avec virtualenv dans Python3
Construire mlpy avec python3.3 (64 bits) (Windows 64 bits)
Utiliser Python mis en pyenv avec NeoVim
Utilisez Tensorflow 2.1.0 avec Anaconda sur Windows 10!
Synthèse vocale japonaise à partir de Tacotron2
Utiliser OpenCV avec Python 3 dans Window
Premiers pas avec Python 3.8 sous Windows
Utiliser PostgreSQL avec Lambda (Python + psycopg2)
[Python] Création de plusieurs fenêtres avec Tkinter
Synthèse vocale de texte de bout en bout à partir d'ESPnet2
Reconnaissance vocale en anglais avec python [speech to text]
Exécutez le servo avec Python sur ESP32 (Windows)
Utilisez smbus avec python3 sous environnement pyenv
Utiliser DeepL avec python (pour la traduction d'articles)
Utiliser Amazon Simple Notification Service avec Python
Comment utiliser Cmder avec PyCharm (Windows)
Création d'un environnement Python 3.6 avec Windows + PowerShell
Introduction facile de la reconnaissance vocale avec Python
[Introduction à Python] Utilisons foreach avec Python
Utilisez PIL ou Pillow avec Cygwin Python
Développer des applications Windows avec Python 3 + Tkinter (Préparation)
Utiliser sans installer python 2.x sous Windows
Utiliser Application Insights avec Python 3 (y compris les bouteilles)
Utilisation des fonctions C ++ de python avec pybind11
Utilisez le pilote Web phantomjs de sélénium avec unittest de python
Jusqu'à ce que vous puissiez utiliser opencv avec python
Utiliser Python et MeCab avec Azure Functions
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Python sur Windows
Grattage avec Python
environnement windows python
Twilio avec Python
Intégrer avec Python