php无需鉴权的接口,腾讯智聆口语评测php调用方式php接口鉴权

最近在接入腾讯智聆口语评测遇到了一些问题,完成demo分享:

/**

* Created by PhpStorm.

* User: Shu_Q_Gang

* Date: 2018/10/23

* Time: 15:33

*/

namespace App;

class SpeechAssessment

{

/**

* @var string

* 请求接口地址

*/

public $url= 'https://soe.tencentcloudapi.com';

/**

* @var string

* 密钥  申请地址:https://console.cloud.tencent.com/cam/capi

*/

protected $SecretId = '申请的id';

protected $SecretKey = '申请的key';

/**

* @var string

* 签名原文串的拼接规则为

*

* 请求方法 + 请求主机 +请求路径 + ? + 请求字符串

*/

public $signStr = 'POSTsoe.tencentcloudapi.com/?';

/**

* @var float

* 年龄范围 1.0-4.0

*/

public $ScoreCoeff = 1.0;

/**

* @var int

* 评估模式,0:词模式, 1:句子模式

*/

public $EvalMode = 0;

/**

* @var int

* 语音输入模式,0流式分片,1非流式一次性评估

*/

public $WorkMode = 1;

/**

* @var string

* 地域

*/

public $Region = 'ap-guangzhou';

/**

* @var int

* 文件格式

*/

public $VoiceFileType = 3;

/**

* @param $SessionId

* 语音段唯一标识,一段语音一个SessionId

* $RefText 英文文本

*/

public function speechInit($SessionId,$RefText)

{

$param['Action'] = 'InitOralProcess';

$param['SecretId'] = $this->SecretId;

$param['Timestamp'] = time();

$param['Nonce'] = rand(1000,9999);

$param['Region'] = $this->Region;

$param['Version'] = '2018-07-24';

$param['SessionId'] = $SessionId ;

$param['RefText'] = $RefText;

$param['WorkMode'] = $this->WorkMode;

$param['EvalMode'] = $this->EvalMode;

$param['ScoreCoeff'] = $this->ScoreCoeff;

//签名

$param['Signature'] = $this->sign($param);

//请求

return $this->_sendRequest($param);

}

/**

* @param $file

* 文件地址

* @param $SessionId

* 语音段唯一标识,一段语音一个SessionId

*/

public function speechSend($file,$SessionId)

{

$param["Nonce"] = rand();

$param["Timestamp"] = time();

$param["Region"] = $this->Region;

$param["SecretId"] = $this->SecretId;

$param["Action"] = "TransmitOralProcess";

$param["Version"] = "2018-07-24";

$param["SeqId"] = "0";

$param["IsEnd"] = "1";

$param["VoiceFileType"] = $this->VoiceFileType;

$param["VoiceEncodeType"] = "1";

//加密

$UserVoiceData = base64_encode(file_get_contents($file));

$param["UserVoiceData"] = $UserVoiceData;

$param["SessionId"] = $SessionId;

//签名

$param['Signature'] = $this->sign($param);

//请求

return $this->_sendRequest($param);

}

/**

* @param $url

* @param $paramArray

* @param string $method

* @return mixed

* curl post 请求

*/

public function _sendRequest($paramArray, $method = 'POST')

{

$post = '';

foreach ( $paramArray as $k=>$v )

{

$post.=$k.'='.urlencode($v).'&';

}

$post = substr($post, 0, -1);

$curl = curl_init ( $this->url );

curl_setopt ( $curl, CURLOPT_HEADER, 0 );

curl_setopt ( $curl, CURLOPT_POST, 1);

curl_setopt ( $curl, CURLOPT_POSTFIELDS, $post );

//不需要证书

curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER,  false);

curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST,  false);

//不打印返回结果到页面

curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);

$result = curl_exec ( $curl );

curl_close ( $curl );

return $result;

}

/**

* @param $param

* @return string

* 签名

*/

public function sign($param)

{

// 参数排序

ksort($param);

// 生成待签名字符串

$signStr = $this->signStr;

foreach ( $param as $key => $value ) {

$signStr = $signStr . $key . "=" . $value . "&";

}

$signStr = substr($signStr, 0, -1);

// 生成签名

$signature = base64_encode(hash_hmac("sha1", $signStr, $this->SecretKey, true));

return $signature;

}

}

调用:/**

* 测试调用

*/

public function  test()

{

$SessionId = rand(1000000,9999999);

$obj = new SpeechAssessment();

//设置文件类型 mp3 avw

$obj->VoiceFileType = 2;

//初始化

$init = $obj->speechInit($SessionId,'action');

//发生语音 本地文件地址

$fileDir = public_path().'/video/action.wav';

$send = $obj->speechSend($fileDir,$SessionId);

dd($send);

}

注意语音格式必须是文档要求的格式PHP提供转码扩展安装地址参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值