开发背景:需要机器阅读文档,看了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.不懂了可以联系我
php调用讯飞语音合成
原文地址:https://www.cnblogs.com/ailingfei/p/9272822.html