前几天一个需求需要实现刷完门禁之后实现广播,相当于文字转语音;发现世界上最好的语言(PHP)解决方案不支持离线,几乎都是需要互联网+第三方接口才能实现;另外即使JS的类库,也存在各种各样的问题;
办法还是比困难多,经过多方求证;终于:人生苦短,我用Python
import pyttsx3
engine = pyttsx3.init()
engine.say("明天你好,我叫干不倒!")
engine.runAndWait()
就是这么简单;用python命令只要执行该文件,即可听到悦耳的播报
但是因为后台和接口是PHP写的,怎么能无缝斜街呢?
那么就需要用到 system()和exec() 之类的函数;又因为是离线项目,就是局域网实现,也不用考虑并发和安全问题;
所以:
test.php 中如下:
<?php
/**
TODO 你的各种逻辑,和你想要播报的文字内容
**/
exec('python3 /Users/msn/Documents/goDemo/py/yuyin.py 你想播报的语音');
假如以上是PHP后台或者接口;
通过业务逻辑执行到以上文件的时候,就会粗发以下:
import sys
import pyttsx3
str = sys.argv[1] # 接收命令行传输过来的参数
engine = pyttsx3.init()
engine.say(str)
engine.runAndWait()
至此完美实现;
或许还有更好结局方案,欢迎读者大拿留下宝贵评论
关于 sys 和 pyttsx3 包,不多介绍,有兴趣可以自行Google;