PHP实现语音播报功能

2022-04-29 15:20:12 浏览数 (2)

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

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

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

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

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

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

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

代码语言:javascript复制
/**
     * 文字转换语音播报的代码
     * @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音响了?哈哈,纯属娱乐... ...

0 人点赞