PHP实现语音播报功能

2018年10月20日 2,494 次阅读 11 条评论 87 人点赞

现在很多AI平台都提供一些成熟的接口供你使用,比如语音转文字,文字转语音,语音唤醒等等,这里我根据订单播报的场景使用的是百度的语音合成接口,思路就是使用PHP将文字调用接口转换成甜美的妹子语音播放出来。

大家估计都知道现在很多AI音响能够给你播报天气,叫你起床...甚至能够接受语音指令!所谓的人工智能音响,听起来很高大上,都说PHP是最好的编程语言,今天我就带大家来实现一个语音播报功能!先大体说一个思路,PHP怎么实现语音播报呢?其实就是调个API(接口)的事情,这个就尴尬了。实际上,现在很多AI平台都提供一些成熟的接口供你使用,比如语音转文字,文字转语音,语音唤醒等等,这里我使用的是百度的语音合成接口(https://ai.baidu.com/tech/speech/tts),思路就是使用PHP将文字调用接口转换成甜美的妹子语音播放出来。

来。。。你没看错,就是这么简单!

模拟业务场景:有时候我们需要在办公室里对收到的每一笔订单进行播报,那么这种需求可能就需要我们自己开发咯!

今天博主基于百度AI平台的语音合成SDK做了一个简单的demo,Demo基于手动点击按钮进行播报,业务场景是触发播报:

演示链接:

演示地址

实际上,上线的项目可能流量较大,下单量也较大比较频繁,这种情况您可以采用队列来解决;每次有新的订单完成后,将语音播报的代码丢入队列,一个一个进行播报。

以下示例代码仅供学习参考:根据实际情况,你可以将代码进行封装。

/**
     * 文字转换语音播报的代码
     * @return mixed
     */
    public function audio()
    {
        if(request()->isPost()){
            $text = input('post.text');
            Loader::import('/aip_speech/AipSpeech',EXTEND_PATH);
            $client = new \AipSpeech(config('speech.appid'), config('speech.api_key'), config('speech.secret_key'));
            $result = $client->synthesis($text, 'zh', 1, array('pit'=>10,'vol' => 10,'per'=>0));
            //识别正确返回语音二进制 错误则返回json 参照下面错误码
            if(!is_array($result)){
                $path = 'uploads'.DS.'audio'.DS;
                if(!is_dir($path)) mkdir($path, 0755, true);
                $audioFile = Time::get13TimeStamp().'_audio.mp3';
                file_put_contents($path.$audioFile, $result);
                echo json_encode(['code'=>1,'audioFile'=>DS.$path.$audioFile]);exit;
            }else{
                echo json_encode(['code'=>0,'msg'=>'文字转换语音失败']);exit;
            }
        }else{
            return $this->fetch();
        }
    }

SDK存放目录(官方有下载哦)


以上就是语音播放的Demo,剩下的大家可以发挥一下想象力,比如定时给你播报一些股票信息、播放歌曲、早上定时叫你起床。从理论上说我们还可以调用百度API接口去识别我们的语音命令,然后根据命令去执行操作,这样岂不是就是一个AI音响了?哈哈,纯属娱乐... ...

讲梦想、讲奋斗可以,前提是钱要给够。

文章评论(11

  • 洪七公の蛤蟆功Lv 1

    这个是百度的例子唷

    #72019-06-28 19:47
  • myIvanLv 1

    不过 谷歌浏览器不能自动播放语音了,很蛋疼

    #62019-01-17 12:03
  • myIvanLv 1

    还不错啊

    #52019-01-17 11:58
    • 阳阳博主

      @myIvan能对大家有帮助就好

      2019-01-17 12:00
  • testLv 1

    测试一下跨站攻击

    #42018-11-13 13:12
  • 娃哈哈Lv 1

    我是娃哈哈,我是娃哈哈

    #32018-11-03 08:54
  • 12212Lv 1

    haha好

    #22018-11-02 20:52
  • 大王小王Lv 1

    支持群主,学习啦!国庆前还讨论到要做一个类似微信收款语音播报的功能呢,这里有解决方案啦!

    #12018-10-20 14:32
    • 阳阳博主

      @大王小王感谢支持,通过百度AI语音合成的SDK还是比较简单的。

      2018-10-20 15:49
  • 接收回复邮件通知
    非注册会员初次评论需要审核,审核时间(09:00-18:00),请耐心等待...