мне было интересно, если есть способ получить доступ к озвучки, как вы могли бы в командной строке:Python: последовательные вызовы подпроцесс (в данном случае, озвучка)
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 после одного выражения. Есть ли способ избежать этого?
Edit:. Ответ дается ред, чтобы написать с новой строкой в конце, то флеш
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()
Ввод '\ n' в конце' выражения' и промывки работает, спасибо! – scarlet