開發背景:需要機器閱讀文檔,看了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.不懂了可以聯系我