pb pour réaliser un shell pipe
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 :
Code:
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' |
Mais avec stdin qui remplace 'monfichier.txt'.
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 :
Code:
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) |
Si quelqu'un à une idée je suis preneur car je n'en ai plus :cry:
Merci,