CSDN话题挑战赛第2期
参赛话题:学习笔记
领导要求在公司的管理系统上添加一个语音播报功能,能控制广播电脑进行语音播报
- 项目中需要解决的问题就是如何通过公司的管理系统控制广播电脑
广播电脑连接着公司的内网,无法连接到任何外部网络。我的思路是通过内网访问广播电脑,控制广播电脑进行广播
- 解决思路
我使用python写了一个接口,将这个接口py文件打包成exe文件,然后在广播电脑上运行该exe文件。这样的话,只要广播电脑连接着公司内网且接口程序还在运行之中,就可以通过公司的管理系统远程控制广播电脑进行广播。
- 使用到的方法
广播电脑的语音播报,我用了python 的pyttsx3,在前端输入要播报的内容,传递到该接口后,调用pyttsx3的方法合成语音进行播放。
下面是pyttsx3的代码:
def read(str):
engine = pyttsx3.init() # 初始化语音引擎
engine.setProperty('rate', 145) # 设置语速
engine.setProperty('volume', 1) # 设置音量
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) # 设置第一个语音合成器
# engine.save_to_file(str, str+".mp3")
for i in range(3):
engine.say(str)
engine.runAndWait()
engine.stop()
return 'success'
@app.route("/readtext",methods=['GET','POST'])
def readtext():
str = request.values.get("str")
result = read(str)
return result
if __name__ == '__main__':
app.run(host="0.0.0.0",port=7777)
然后使用pyinstaller对文件进行打包
pyinstaller -F -w xxx.py
-w是选择是否显示运行窗口,我为了防止广播电脑上的运行程序被不知道的人关闭,我选择加入-w。
-pyinstaller打包问题
在pyinstaller打包后,发现运行exe文件时报错,缺少模块。
原因是pyinstaller打包导入的依赖是根据你电脑本地安装python文件中有的依赖进行打包的。在pycharm中添加的依赖并不在本地文件中,所以会报错。
解决方法:pip install xxx 在本地安装了缺少的模块后,在重新打包。