Bonjour,
Après des heures d'essais et de recherches sur le net, je me résous à vous soumettre mon problème.
Je souhaite réaliser un pipe équivalent à ce script :
Mais avec stdin qui remplace 'monfichier.txt'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #!/bin/sh espeak -v mb/mb-fr4 -f 'monfichier.txt' | mbrola -e /usr/share/mbrola/fr4/fr4 - -.au | paplay -n 'from script' --stream-name='espeak'
J'ai lu dans la *Python Library Reference* http://docs.python.org/lib/node535.html
qu'il fallait utiliser le module subprocess.
Seulement cela fait plusieurs jours que je cherche mais mon programme freeze systematiquement dès que j'utilise la méthode *say* de la classe suivante :
Si quelqu'un à une idée je suis preneur car je n'en ai plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import os,subprocess from subprocess import Popen, PIPE class Mbrola(): def __init__(self): self.p1 = Popen(["espeak -v mb/mb-fr4"], shell=True, stdin=PIPE, stdout=PIPE) self.p2 = Popen(["mbrola -e /usr/share/mbrola/fr4/fr4 - -.au"], shell=True, stdin=self.p1.stdout, stdout=PIPE) self.p3 = subprocess.Popen(["paplay -n 'from script' --stream-name='espeak'"], shell=True, stdin=self.p2.stdout) def say(self, str): self.p1.communicate(str)
Merci,
Partager