Faire parler python!

Soyez le premier à donner votre avis sur cette source.

Vue 18 364 fois - Téléchargée 1 017 fois

Description

Python n'a rien à envier au VB : il est possible d'utiliser le fameux objet Text-To-Speech de Microsoft pour rendre les programmes parlants. Dans ce cas, je charge l'objet dynamiquement grâce à Win32Com. Pour faire fonctionner ce code, il faudra donc télécharger les extensions "Win32" de Python (voir www.python.org). Désolé, ça marche pas sous Linux, alors je m'excuse d'avance pour les "Anti-Microsoft" endurcis.

Ce programme attend le mot "end" pour terminer. Il lit en anglais (à adapter) chaque phrase.

Source / Exemple :


# Un exemple de programme Python qui parle!
import time
import win32com.client
import pythoncom
import thread

# Une fonction d'attente
def Attente(ObjetVoix):
	while ObjetVoix.Speaking>0:
		pythoncom.PumpWaitingMessages()

voix=win32com.client.Dispatch("{EEE78591-FE22-11D0-8BEF-0060081841DE}")
voix.Speak("")

# A adapter pour avoir la voix anglaise (suivant voix disponibles)
voix.CurrentMode=7

Texte = ""

print "ENGLISH SPEAKER"

inst = "Please type a text to read. To quit the program type 'end'."
print inst
voix.Speak(inst)
Attente(voix)

while Texte != "end":
    Texte = raw_input(">> ")
    voix.Speak(Texte)
    Attente(voix)

voix.Speak("Good bye.")
Attente(voix)

Conclusion :


Si on veux ajouter de la voix dans une application graphique (style TK ou WxWindows), il n'est pas nécessaire d'utiliser la fonction "Attente"

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
4 novembre 2008

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
21
win32com.client.dispatch() crée et retourne une référence à l'objet COM que tu lui demandes.
Messages postés
382
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
11
Bonjour,
À quoi correspond
voix=win32com.client.Dispatch("{EEE78591-FE22-11D0-8BEF-0060081841DE}")
à la ligne 12, il semblerait que ce soit ça qui pose problème chez moi. Merci

_____
Aéra
Messages postés
6
Date d'inscription
lundi 30 juin 2003
Statut
Membre
Dernière intervention
27 décembre 2007

Visiblement, ce genre de code source ne marche pas chez tout le monde. La première question est "Avez vous installé le SAPI 4.0 de chez Microsoft avec au moins une voix?", on trouve le nécessaire sur http://www.microsoft.com/msagent . Je sais, utiliser des fonctions propriétaires dans un langage comme Python n'est pas une bonne pratique. Moi je me souviens juste avoir installé SAPI 4.0 et la voix en français et ça avait marché directement sur une nouvelle installation de Windows XP, testé avec les dernières versions de Python et PyWIN32.
Messages postés
336
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
8 novembre 2011
1
ca fonctionne pas...

g xp
g win32com,pythoncom,time,thread
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.