123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <?php
- namespace app\service\api;
- use app\service\ConfServiceFacade;
- use laytp\traits\Error;
- use think\facade\Cache;
- use think\facade\Config;
- use think\facade\Request;
- require_once IA_ROOT_WK.'/extend/baiduai/AipSpeech.php';
- class Speech
- {
- use Error;
- /**
- * phpmailer对象
- */
- protected $client;
- protected $conf;
- /**
- * 构造函数
- */
- public function __construct()
- {
- $this->conf = ConfServiceFacade::groupGet('system.ai');
- $this->client = new \AipSpeech($this->conf['app_id2'],$this->conf['api_key2'],$this->conf['secret_key2']);
- }
- /**
- * 人脸检测
- * @param $image //图片链接
- */
- public function asr($speech, $format, $rate) {
- return $this->client->asr($speech, $format, $rate);
- }
- public function asr2($speech)
- {
- $curl = curl_init();
- if(!empty($speech)){
- $data['speech'] = base64_encode($speech);
- $data['len'] = strlen($speech);
- }
- curl_setopt_array($curl, array(
- CURLOPT_URL => "https://vop.baidu.com/server_api",
- CURLOPT_TIMEOUT => 30,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_CUSTOMREQUEST => 'POST',
- // speech 可以通过 $this.getFileBase64Content("C:\fakepath\f39569cce93a12fdab8fd2645c30c925.wav") 方法获取
- CURLOPT_POSTFIELDS =>'{"format":"wav","rate":16000,"channel":1,"cuid":"3","token":"","speech":"'.$data['speech'].'","len":'.$data['len'].',"token":"'. $this->getAccessToken() .'"}',
- CURLOPT_HTTPHEADER => array(
- 'Content-Type: application/json',
- 'Accept: application/json'
- ),
- ));
- $response = curl_exec($curl);
- curl_close($curl);
- return $response;
- }
- /**
- * 文本转语音
- * @param $image //图片链接
- */
- public function synthesis2($text) {
- if(empty($this->conf['app_id2'])){
- return true;
- }
- $curl = curl_init();
- curl_setopt_array($curl, array(
- CURLOPT_URL => "https://aip.baidubce.com/rpc/2.0/tts/v1/create?access_token={$this->getAccessToken()}",
- CURLOPT_TIMEOUT => 30,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS =>'{"text":"'.$text.'","lang":"zh"}',
- CURLOPT_HTTPHEADER => array(
- 'Content-Type: application/json',
- 'Accept: application/json'
- ),
- ));
- $response = curl_exec($curl);
- curl_close($curl);
- return json_decode($response);
- // print_r($response);
- }
- public function query($taskIds)
- {
- $curl = curl_init();
- curl_setopt_array($curl, array(
- CURLOPT_URL => "https://aip.baidubce.com/rpc/2.0/tts/v1/query?access_token={$this->getAccessToken()}",
- CURLOPT_TIMEOUT => 30,
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS =>'{"task_ids":["'.$taskIds.'"]}',
- CURLOPT_HTTPHEADER => array(
- 'Content-Type: application/json',
- 'Accept: application/json'
- ),
- ));
- $response = curl_exec($curl);
- curl_close($curl);
- $res = json_decode($response);
- return $res;
- }
- /**
- * 使用 AK,SK 生成鉴权签名(Access Token)
- * @return string 鉴权签名信息(Access Token)
- */
- private function getAccessToken(){
- $curl = curl_init();
- $postData = array(
- 'grant_type' => 'client_credentials',
- 'client_id' => $this->conf['api_key2'],
- 'client_secret' => $this->conf['secret_key2']
- );
- curl_setopt_array($curl, array(
- CURLOPT_URL => 'https://aip.baidubce.com/oauth/2.0/token',
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_POSTFIELDS => http_build_query($postData)
- ));
- $response = curl_exec($curl);
- curl_close($curl);
- $rtn = json_decode($response);
- return $rtn->access_token;
- }
- }
|