php调用讯飞语音合成
Posted 将心比心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.不懂了可以联系我
以上是关于php调用讯飞语音合成的主要内容,如果未能解决你的问题,请参考以下文章
求《中科大讯飞Interphonic 5.0语音合成系统》的下载地址或者发我一份!!