PHP

首页 -  PHP  -  腾讯智聆口语评测php调用方式php接口鉴权

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

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

 

<?php
/**
 * 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提供转码扩展安装地址参考:

http://www.xiaoshu168.com/linux/276.html

(3)
分享:

本文由:xiaoshu168 作者:xiaoshu发表,转载请注明来源!

标签:

相关阅读