PHP实现智能语音播报
大家估计都知道现在很多AI音响能够给你播报天气,叫你起床...甚至能够接受语音指令!所谓的人工智能音响,听起来很高大上,都说PHP是最好的编程语言,今天我就带大家来实现一个语音播报功能,写个美女叫你早上起床!先大体说一个思路,PHP怎么实现语音播报呢?其实就是调个API(接口)的事情,这个就尴尬了。实际上,现在很多AI平台都提供一些成熟的接口供你使用,比如语音转文字,文字转语音,语音唤醒等等,这里我使用的是百度的语音合成接口(https://ai.baidu.com/tech/speech/tts),思路就是使用PHP获取当前的时间和天气状况,然后调用接口转换成甜美的妹子语音播放出来。。。你没看错,就是这么简单!
第一步:获取时间信息
举个例子,文字内容可能是这样:“主人,早上好,今天是2017年12月18号上午8点整,星期一”,这样的内容用PHP自带的几个时间函数就能搞定,然后拼接成字符文字!下面是一些简单实例代码:
获取时间
第二布:获取天气状况
举个例子,文字内容可能是这样:“今天天气多云转晴,温度5-15度,湿度80%,空气污染指数69”。要想找到一个靠谱而又免费的api还有点麻烦,很多免费的api提供的天气信息都比较简单,只有天气状况和温度,没有未来天气状况,最后我就找了个凑合用,谁有更好的api留个爪。实例代码如下:
天气状况
第三步:语音合成
这个是调用的百度的接口,首先呢,你得去百度那注册一个账号,获取开发者的key和secret,会有一些免费的调用次数,不拿去商用的话完全够了!然后下载百度提供的SDK,用法非常简单,实例代码如下:
大家可以看到最后的返回的内容被我存到/tmp/audio.mp3这个文件里面去了(这里使用的是Ubuntu系统),这里可能会有一个写入权限问题,建议大家最后执行脚本的时候加上sudo。
第四步:播放合成之后的语音文件
我们不可能去用音乐播放器手动播放,其实Linux在命令行下也可以播放音乐,需要安装一个软件,直接给大家Ubuntu下的安装命令:
sudo apt-get install sox libsox-fmt-all
安装完成之后就可以使用play命令播放音乐,举个例子:play hello.mp3
所以接下来我们就可以使用PHP去执行播放命令,实例如下:
exec('sudo /usr/bin/play /tmp/audio.mp3');
最后,在Linux里面运行脚本,让脚本常驻后台,示例如下:
/usr/bin/php /var/www/demo/BaiduSound/index.php > /dev/null 2>&1 &
以上就是全部步骤,剩下的大家发挥想象力,比如定时给你播报一些股票信息、播放歌曲、早上定时叫你起床。从理论上说我们还可以调用百度API接口去识别我们的语音命令,然后根据命令去执行操作,这样岂不是就是一个AI音响了?哈哈,纯属娱乐,这个方案有一个问题就是你得保证你的电脑一直是开机状态,有点浪费电,有兴趣的童鞋可以买个类似树莓派这样的低功耗设备去运行。
PHP实现智能语音播报的更多相关文章
- Home Assistant系列 -- 自动语音播报天气
在树莓派上要让 Home Assistant 发声朗读 ,从硬件上我们需要 3.5mm插口音箱(耳机)或usb口音箱(耳机).软件方面 我们需要一个媒体播放器以及 tts ( 将文字转化为语音的服务 ...
- python实现智能语音天气预报
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 飞奔的帅帅 PS:如有需要Python学习资料的小伙伴可以加点击下 ...
- 用Java开发的【智能语音开发板MEGA ESP32AI】
有点激动 ~ ~ ~ 新鲜出炉,用视频看看效果哦 我们新研发出世的语音开发板MEGA ESP32AI,来看看吧,有点腻害哦!!!先演示下功能语音控制开关等.播报天气 戳下面链接看视频哦? MEGA E ...
- 从零开始 DIY 智能家居 - 基于 ESP32 的智能语音合成播报模块
目录 前言 硬件选择 代码解析 获取代码 设备控制命令: 设备和协议初始化流程: 配置设备信息 回调函数注册 语音播报与设置流程 总结 前言 这里这么多设备,突然发现我做的好像都是传感器之类的居多好像 ...
- SpeechLib 语音播报
SpeechLib这的dll专门用来播放语音,能够识别英语.简体和繁体.并且可以播放声音文件,支持WAV格式,但不支持MP3.在报警场合下已经够用了. 基本播放语音及文件.支持异步. using Sy ...
- 语音合成,语音播报功能(系统)-b
第一次接触语音合成,只实现了很简单的功能,记录一下,以后免得去网上四处找资料 最近在做高德地图导航的时候有个语音播报的功能,高德sdk已经提供了要语音的字符串.我要做的就是把这些字符串读出声音来即可. ...
- 实现百度地图导航Demo的语音播报功能
上文中实现了在本地导入百度地图导航Demo,那么在此基础上如何实现导航的语音播报呢? 一.为该应用申请语音播报(也叫注册) http://developer.baidu.com/map/index.p ...
- iOS语音识别,语音播报,文字变语音播报,语音变文字
首先使用的是科大讯飞的sdk 1.语音识别部分 AppDelegate.m #import "AppDelegate.h" #import <iflyMSC/iflyMSC. ...
- 转:IT巨头纷纷“卡位” 智能语音成人机交互入口必争之地
http://www.cs.com.cn/xwzx/hwxx/201707/t20170712_5368595.html 随着物联网的迅速发展,作为重要接口的智能语音技术已成为国内外IT巨头的必争之地 ...
随机推荐
- Egret《决战沙城》框架学习
源码地址:https://github.com/yicaoyimuys/EgretGameEngine 虽然走花观马看了看,但是收获还是蛮多. mvc: BaseController ...
- PHP 字符串和十六进制互转
今天在做项目中,因为要调用别人网站的接口,结果需要对请求和返回的时间进行十六进制加密处理,于是在网上查了下资料谢了一个转换Demo做个记录. 如果在TP下使用可以将下面函数放到common.php中 ...
- docker 启动mysql 闪退 无法启动问题
docker 安装mysql [获取容器] docker pull mysql:5.6 [启动容器] docker run -p 3306:3306 --name mymysql -v $PWD/co ...
- Python - importlib 模块
importlib 模块可以根据字符串来导入相应的模块 目录结构: 在根目录下创建 importlib_test.py 和 aaa/bbb.py bbb.py: class Person(object ...
- 头部文件jq嵌入笔记
var headHtml = '<div class="container">' + '<div class="navbar-header"& ...
- 【C/C++开发】C++11:右值引用和转发型引用
右值引用 为了解决移动语义及完美转发问题,C++11标准引入了右值引用(rvalue reference)这一重要的新概念.右值引用采用T&&这一语法形式,比传统的引用T&(如 ...
- InvokeMember 使用(转http://blog.csdn.net/gooer/article/details/2927113)
函数原型: public object InvokeMember(string, BindingFlags, Binder, object, object[]); ...
- 超详尽-QThread的正确使用姿势-以及信号槽的跨线程使用
贴上两篇博文 一.http://www.cnblogs.com/findumars/p/5031239.html 循序渐进介绍了,怎样正确的让槽函数工作在子线程中. 同时介绍了信号槽的绑定与线程的关系 ...
- asp.net core使用水晶报表问题
背景 最近项目上遇到一个需求,要后台通过定时任务把水晶报表生成pdf文件,然后邮件发送给相关人. 技术实现思路 选用ASP.NET Core框架(基于2.2版本),通过IHostedS ...
- Excel在数据表中悬停鼠标显示数据值
打开一个实例文档,鼠标移动到数据表中,在柱状图上中悬停鼠标,可以看到没有显示数据的值. 鼠标单击左上角的<文件>按钮. 然后单击<选项>按钮. 在弹出的excel选项对话框中单 ...