离线文字转语音(人生苦短,我用Python)

前几天一个需求需要实现刷完门禁之后实现广播,相当于文字转语音;发现世界上最好的语言(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;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一套实用的渗透测试岗位面试题,你会吗? 1.拿到一个待检测的站,你觉得应该先做什么? 收集信息 whois、网站源...
    g0阅读 4,930评论 0 9
  • 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息–表示请求已接收,继续处理...
    梦诗酒年华阅读 1,401评论 0 0
  • 麦子的阅读方法论 麦子的第130篇原创文章 文章关键词:“阅读方法/道术器/认知” “什么,那个曾经的学渣,毕业后...
    麦田的怪圈阅读 536评论 2 11
  • 突如其来的累 却不知从何而来 懂得万事不易 还是要面对 因为啊 你是一个人呀
    牧野人阅读 155评论 0 0
  • 林清玄曾写过一篇散文《和时间赛跑》,他在文中说,“虽然我知道人永远跑不过时间,但是可以比原来跑快一步,如果加把劲,...
    田夢田阅读 428评论 2 0