PHP实现语音播报

大家估计都知道现在很多AI音响能够给你播报天气,叫你起床…甚至能够接受语音指令!所谓的人工智能音响,听起来很高大上,都说PHP是最好的编程语言,今天我就带大家来实现一个语音播报功能,写个美女叫你早上起床!
先大体说一个思路,PHP怎么实现语音播报呢?其实就是调个API(接口)的事情,这个就尴尬了。实际上,现在很多AI平台都提供一些成熟的接口供你使用,比如语音转文字,文字转语音,语音唤醒等等,
这里我使用的是百度的语音合成接口,点击查看, 思路就是使用PHP获取当前的时间和天气状况,然后调用接口转换成甜美的妹子语音播放出来。。。你没看错,就是这么简单!

第一步:获取时间信息

举个例子,文字内容可能是这样:“主人,早上好,今天是2017年12月18号上午8点整,星期一”,这样的内容用PHP自带的几个时间函数就能搞定,然后拼接成字符文字!下面是一些简单实例代码:

第二布:获取天气状况

举个例子,文字内容可能是这样:“今天天气多云转晴,温度5-15度,湿度80%,空气污染指数69”。要想找到一个靠谱而又免费的api还有点麻烦,很多免费的api提供的天气信息都比较简单,只有天气状况和温度,没有未来天气状况,最后我就找了个凑合用,谁有更好的api留个爪。实例代码如下:

第三步:语音合成

这个是调用的百度的接口,首先呢,你得去百度那注册一个账号,获取开发者的key和secret,会有一些免费的调用次数,不拿去商用的话完全够了!然后下载百度提供的SDK,用法非常简单,实例代码如下:

大家可以看到最后的返回的内容被我存到/tmp/audio.mp3这个文件里面去了(这里使用的是Ubuntu系统),这里可能会有一个写入权限问题,建议大家最后执行脚本的时候加上sudo。

第四步:播放合成之后的语音文件

我们不可能去用音乐播放器手动播放,其实Linux在命令行下也可以播放音乐,需要安装一个软件,直接给大家Ubuntu下的安装命令:

1
sudo apt-get install sox libsox-fmt-all

安装完成之后就可以使用play命令播放音乐,举个例子:play hello.mp3

所以接下来我们就可以使用PHP去执行播放命令,实例如下:

1
exec('sudo /usr/bin/play /tmp/audio.mp3');

最后,在Linux里面运行脚本,让脚本常驻后台,示例如下:

1
/usr/bin/php /var/www/demo/BaiduSound/index.php > /dev/null 2>&1 &

以上就是全部步骤,剩下的大家发挥想象力,比如定时给你播报一些股票信息、播放歌曲、早上定时叫你起床。从理论上说我们还可以调用百度API接口去识别我们的语音命令,
然后根据命令去执行操作,这样岂不是就是一个AI音响了?哈哈,纯属娱乐,这个方案有一个问题就是你得保证你的电脑一直是开机状态,有点浪费电,有兴趣的童鞋可以买个类似树莓派这样的低功耗设备去运行。
有一个小坑,就是假如你电脑正在播放视频或者音乐,这时候可能无法播报,好像是音频冲突,具体原因未知,找了好久没找到解决方案~