zoukankan      html  css  js  c++  java
  • php调用讯飞语音合成

    开发背景:需要机器阅读文档,看了bat和讯飞的,领导决定用讯飞的,其实bat的也非常好
    废话又多了,直接看代码吧

    header("Content-type: text/html; charset=utf-8");
    $url = 'http://api.xfyun.cn/v1/service/v1/tts';
    $appid = 'xxxxx';
    $appkey = 'xxxxxxx';
    $data = array(
        'auf' => 'audio/L16;rate=16000',
        'aue' => 'lame',
        'voice_name' => 'xiaoyan',
    );
    $time = (string) time();
    
    $xparams = base64_encode(json_encode($data));
    $checksum = md5($appkey . $time . $xparams );
    
    $header = array(
        'X-CurTime:' . $time ,
        'X-Param:' . $xparams,
        'X-Appid:' . $appid ,
        'X-CheckSum:' . $checksum,
        'X-Real-Ip:127.0.0.1',
        'Content-Type:application/x-www-form-urlencoded; charset=utf-8',
        
    );
    $content = array(
            'text' => '陈寿给曹操的第一个评价叫机智聪明,曹操从小就聪明,而且还很有学问。曹操是一个大文学家,甚至于他开创了一个文学时代。所谓建安风骨开创者就是三曹,开先河的第一个人就是曹操,然后才是他的俩儿子。后来才有的建安七子,曹操是的聪明人这是毫无争议这个评价很准确。有争议的是这个聪明是不是用对了地方,要是没有品德的支撑,人越聪明越是祸害。后来历史中对陈寿说的这个聪明就是他用错了地方,心术不正,这是后人的评论,但是陈寿并没有这么说。第二个评价就是曹操从小就有权数,原文用的就是权数这两个字。这个权数和会使用权利不是一个意思,权在古代是计算的意思,数在古代不是计算的意思,而是变化的意思。'
    );
    
    $response = tocurl($url, $header, $content);
    $header = $response['header'];
    $file = './audio/';
    if($header['content_type'] == 'audio/mpeg'){
        $filename .=  $file . $time . '.mp3';
        $res = file_put_contents($filename, $response['body']);
        var_dump($res);
    }else{
        echo $response['body'];
    }
    
    
     /**
     * 发送数据
     * @param String $url     请求的地址
     * @param Array  $header  自定义的header数据
     * @param Array  $content POST的数据
     * @return String
     */
    function tocurl($url, $header, $content){
        $ch = curl_init();
        if(substr($url,0,5)=='https'){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL加密算法是否存在
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
        $response = curl_exec($ch);
        $error=curl_error($ch);
        //var_dump($error);
        if($error){
            die($error);
        }
        $header = curl_getinfo($ch);
    
        curl_close($ch);
        $data = array('header' => $header,'body' => $response);
        return $data;
    }

    上述是完成的代码;

    这里面有几个主要注意的地方

    1.要在你自己的应用里添加ip白名单;否则无法响应

    2.出现错误了,多翻阅错误码和返回的提示,很有帮助

    3.不懂了可以联系我

  • 相关阅读:
    转移虚拟机后ubuntu network available SIOCSIFADDR: No such device
    模板中国剩余定理
    数论 CF27E Number With The Given Amount Of Divisors
    模板 输入输出优化
    模板 欧拉定理
    洛谷P1141 01迷宫
    图论拓扑排序
    归并排序 分治
    HZNUACM寒假集训Day12小结 数论入门 题解
    组合数学基础
  • 原文地址:https://www.cnblogs.com/ailingfei/p/9272822.html
Copyright © 2011-2022 走看看