大家估計都知道現在很多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音響了?哈哈,純屬娛樂,這個方案有一個問題就是你得保證你的電腦一直是開機狀態,有點浪費電,有興趣的童鞋可以買個類似樹莓派這樣的低功耗設備去運行。