在 Windows Server 2019 上,通过 cgi/Apache 调用的 pyttsx3 生成空的 wav 文件

问题描述

我在 Windows Server 2019 虚拟机上运行 Apache2.4。 Apache 已设置好,因此我可以在我的 cgi-bin 脚本中使用 python。我有一个脚本

#!C:/python39/python.exe

text = "This is some example text."
engine = pyttsx3.init("sapi5")
engine.save_to_file(text,"test.wav")
engine.runAndWait()

print("Content-type: audio/wav")
print()

with open("test.wav","rb") as file:
    print(file.read())

如果我从命令行调用该脚本,它会创建一个 115kb 的文件,其中包含我的文本的语音版本。但是,如果我通过 Web 浏览器调用相同的脚本(即通过浏览到 http://whatever/cgi-bin/test.py),它会创建一个 46b 文件,该文件似乎是一个有效的 WAV 标头,但是没有实际数据——也就是说,它创建了一个有效的空声音文件。据我所知,没有出现任何我可以看到的错误,也没有写入屏幕、apache 的错误日志和 Windows 日志。

(在本地网络上的 Windows 10 机器上运行 WAMP 时,相同的代码似乎可以工作。我还尝试安装 PHP,让 Apache 使用它来调用 Python 是一个 shell 命令,这没有区别。(我不知道为什么我认为它会!))

如何在 cgi/Apache 下使这项工作与在命令行中一样?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)