PHP实现语音播报功能

2018年10月20日 244 次阅读 3 条评论 14 人点赞

现在很多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音响了?哈哈,纯属娱乐... ...

作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。

文章评论(3

  • 12212Lv 1

    haha好

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

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

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

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

      2018-10-20 15:49
  • 接收回复邮件通知