我想使用svox/pico2wave来编写python代码的wav-file。当我从终端执行此行时,文件写得很好:
/usr/bin/pico2wave -w=/tmp/tmp_say.wav "Hello world."
我已经验证了pico2wave位于 /usr/bin
中。
这是我的python代码:
from subprocess import call
call('/usr/bin/pico2wave -w=/tmp/tmp_say.wav "Hello world."')
...引发此错误:
Traceback (most recent call last):
File "app/app.py", line 63, in <module>
call('/usr/bin/pico2wave -w=/tmp/tmp_say.wav "Hello world."')
File "/usr/lib/python2.7/subprocess.py", line 168, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 390, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1024, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
来自文档
通常优选提供一系列参数,因为它允许 照顾任何必需的逃脱和报价的模块 参数(例如,允许文件名中的空间(。如果通过一个 字符串,要么壳必须为true(见下文(,否则字符串必须 只需命名要执行的程序而不指定任何 参数。
所以您可以尝试
call(['/usr/bin/pico2wave', '-w=/tmp/tmp_say.wav', '"Hello world."'])