4
명령 행에서 수도로 eSpeak를 액세스 할 수있는 방법이 있다면 궁금
: 유일한 방법 내가 할 수있는, 지금파이썬 : 서브 프로세스 순차 호출 (이 경우, eSpeak를)
laptop:~$espeak
say this line first
say this line second
...
파이썬에서 그것을 할 수는 process = subprocess.Popen(['espeak'], stdin=subprocess.PIPE)
입니다 다음 중 하나
process.communicate(expression)
또는
process.stdin.write(expression)
process.stdin.close()
전자 블록
나머지에 의해 프로그램이 espeak가 끝날 때까지, 바람직하지 않은 행동이 있지만, 후자는 블록하지 않고 오버랩 가능성을 허용합니다. 내 프로그램이 espeak를 너무 빨리 두 번 호출하면 말입니다. 명령 줄에서 espeak를 호출하는 방법이 있는지 궁금 해서요. 여러 가지를 빠르게 입력 할 수는 있지만 처음 완료된 후에는 두 번째 것을 말할 것입니다.특히 위의 두 예제 모두 단일 표현식 후에 espeak를 종료합니다. 이것을 피할 수있는 방법이 있습니까?
편집 :. 대답, 에드에 의해 주어진 후 플러시 끝에 줄 바꿈으로 작성하는 것입니다
process = subprocess.Popen(['espeak'], stdin=subprocess.PIPE)
process.stdin.write("say this line first\n")
process.stdin.flush()
process.stdin.write("say this line second\n")
process.stdin.flush()
process.stdin.close()
'expression'의 끝에'\ n'을 두어 플러싱이 작동합니다. 감사합니다! – scarlet