腾讯云智聆口语评测PHP SDK-教育服务解决方案

安装依赖环境

PHP5.6.0 版本及以上,PHP 官网。

安装 Composer

windows 环境请访问 Composer 官网下载安装包安装。unix 环境在命令行中执行以下命令安装。

curl -sS https://getcomposer.org/installer | phpsudo mv composer.phar /usr/local/bin/composer

安装 SDK

使用 Composer 安装 PHP SDK,可以选择安装所有依赖或本产品相关依赖。更多信息前往 Github 仓库 或者 Gitee 仓库 。所有依赖相关依赖

composer require tencentcloud/tencentcloud-sdk-php
composer require tencentcloud/common tencentcloud/soe tencentcloud/sts

使用 SDK

可通过 控制台 生成代码进行调用或者参考下方示例,密钥获取可参考快速入门。

本地音频文件评测

发音数据传输附带初始化:直接调用 发音数据传输接口附带初始化过程 完成一次性评测。

<?phprequire_once __DIR__ . '../../vendor/autoload.php';// 导入对应产品模块的clientuse TencentCloud\Soe\V20180724\SoeClient;use TencentCloud\Soe\V20180724\Models\TransmitOralProcessWithInitRequest;use TencentCloud\Common\Exception\TencentCloudSDKException;use TencentCloud\Common\Credential;

try { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 $cred = new Credential("SecretId", "SecretKey"); // 实例化soe的client对象 $client = new SoeClient($cred, ""); // 实例化发音数据传输接口请求对象 $transreq = new TransmitOralProcessWithInitRequest();
// 请求参数赋值 $chars = md5(uniqid(mt_rand(), true)); $SessionId = substr($chars, 0, 8) . '-' . substr($chars, 8, 4) . '-' . substr($chars, 12, 4) . '-' . substr($chars, 16, 4) . '-' . substr($chars, 20, 12); $filepath = "SOEMUSIC/apple.mp3"; //本地音频文件 $musicData = file_get_contents($filepath); $base64Data = base64_encode($musicData); $params = array( "RefText" => "apple", "WorkMode" => 1, "EvalMode" => 0, "ScoreCoeff" => 1.0, "SessionId" => $SessionId, "VoiceFileType" => 3, "VoiceEncodeType" => 1, "UserVoiceData" => $base64Data, "SeqId" => 1, "IsEnd" => 1, ); $transreq->fromJsonString(json_encode($params));
// 通过client对象调用TransmitOralProcessWithInit方法发起请求 $transresp = $client->TransmitOralProcessWithInit($transreq); // 输出json格式的字符串回包 $json_resp = $transresp->toJsonString(); print_r($json_resp);} catch (TencentCloudSDKException $e) { echo $e;}

评测超时处理

如果本地文件过大,可能会导致评测超时。可以选用如下方案:1. 流式分片传输:将发音数据进行分片处理,减少每次评测的时间。2. 异步查询:使用异步功能将发音数据先上传,然后使用查询功能查询结构。流式分片传输异步查询

<?phprequire_once __DIR__ . '../../vendor/autoload.php';// 导入对应产品模块的clientuse TencentCloud\Soe\V20180724\SoeClient;use TencentCloud\Soe\V20180724\Models\TransmitOralProcessWithInitRequest;use TencentCloud\Common\Exception\TencentCloudSDKException;use TencentCloud\Common\Credential;

try { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 $cred = new Credential("SecretId", "SecretKey"); // 实例化soe的client对象 $client = new SoeClient($cred, ""); // 实例化发音数据传输接口请求对象 $transreq = new TransmitOralProcessWithInitRequest();
// 请求参数赋值 $chars = md5(uniqid(mt_rand(), true)); $SessionId = substr($chars, 0, 8) . '-' . substr($chars, 8, 4) . '-' . substr($chars, 12, 4) . '-' . substr($chars, 16, 4) . '-' . substr($chars, 20, 12); $filepath = "SOEMUSIC/apple.mp3"; //本地音频文件 $musicData = file_get_contents($filepath); $music_length = strlen($musicData); $slice_num = 100 * 1024; // 分片大小 $pkgnum = ceil($music_length / $slice_num); for ($j = 1; $j "apple", "WorkMode" => 0, "EvalMode" => 0, "ScoreCoeff" => 1.0, "SessionId" => $SessionId, "VoiceFileType" => 3, "VoiceEncodeType" => 1, "UserVoiceData" => $base64Data, "SeqId" => $j, "IsEnd" => $IsEnd, ); $transreq->fromJsonString(json_encode($params)); // 通过client对象调用TransmitOralProcessWithInit方法发起请求 $transresp = $client->TransmitOralProcessWithInit($transreq); // 输出json格式的字符串回包 $json_resp = $transresp->toJsonString(); print_r($json_resp); }} catch (TencentCloudSDKException $e) { echo $e;}
<?phprequire_once __DIR__ . '../../vendor/autoload.php';

// 导入对应产品模块的clientuse TencentCloud\Soe\V20180724\SoeClient;use TencentCloud\Soe\V20180724\Models\TransmitOralProcessWithInitRequest;
use TencentCloud\Common\Exception\TencentCloudSDKException;use TencentCloud\Common\Credential;


try { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 $cred = new Credential("SecretId", "SecretKey"); // 实例化soe的client对象 $client = new SoeClient($cred, ""); // 实例化发音数据传输接口请求对象 $transreq = new TransmitOralProcessWithInitRequest();
// 请求参数赋值 $chars = md5(uniqid(mt_rand(), true)); $SessionId = substr($chars, 0, 8) . '-' . substr($chars, 8, 4) . '-' . substr($chars, 12, 4) . '-' . substr($chars, 16, 4) . '-' . substr($chars, 20, 12); $filepath = "SOEMUSIC/para.mp3"; //本地音频文件 $musicData = file_get_contents($filepath); $base64Data = base64_encode($musicData); $params = array( "RefText" => "apple", "WorkMode" => 1, "EvalMode" => 2, "ScoreCoeff" => 1.0, "SessionId" => $SessionId, "VoiceFileType" => 3, "VoiceEncodeType" => 1, "UserVoiceData" => $base64Data, "SeqId" => 1, "IsEnd" => 1, "IsAsync" => 1, ); $transreq->fromJsonString(json_encode($params));
for ($i = 1; $i TransmitOralProcessWithInit($transreq); // 输出json格式的字符串回包 $json_resp = $transresp->toJsonString(); print_r($json_resp); $json_decode = json_decode($json_resp); $status = $json_decode->Status; if ($status == "Finished") { break; } else { $params["IsQuery"] = 1; sleep(1); } }} catch (TencentCloudSDKException $e) { echo $e;}


使用方法说明

1. SessionID:使用 uuid 来作为 SessionID,用于区分不同的音频。2. base64 转换:读取本地音频文件,转换成 base64 数据进行评测。3. 流式分片 base64 转换:读取本地音频文件,将音频进行分片,转换成 base64 数据进行评测。4. 异步轮询:使用 json 反序列化,获取评测结果,判断是否查询到最终结果。SessionIDbase64转换流式分片异步轮询

$chars = md5(uniqid(mt_rand(), true));$SessionId = substr($chars, 0, 8) . '-'    . substr($chars, 8, 4) . '-'    . substr($chars, 12, 4) . '-'    . substr($chars, 16, 4) . '-'    . substr($chars, 20, 12);
$filepath = "apple.mp3"; //填入本地音频文件路径$musicData = file_get_contents($filepath);$base64Data = base64_encode($musicData);
$musicData = file_get_contents($filepath);$music_length = strlen($musicData);$slice_num = 1 * 1024; // 分片大小$pkgnum = ceil($music_length / $slice_num);for ($j = 1; $j <= $pkgnum; $j++) {        $start_index = ($j - 1) * $slice_num;        $last_index = $j == $pkgnum ? $music_length : $j * $slice_num;        $IsEnd = $j == $pkgnum ? 1 : 0;        $send_content = substr($musicData, $start_index, $last_index);        $base64Data = base64_encode($send_content);    }
for ($i = 1; $i TransmitOralProcessWithInit($transreq);    // 输出json格式的字符串回包    $json_resp = $transresp->toJsonString();    print_r($json_resp);    $json_decode = json_decode($json_resp);    $status = $json_decode->Status;    if ($status == "Finished") {        break;    } else {        $params["IsQuery"] = 1;        sleep(1);    }}

临时授权凭证

客户端 SDK 需要使用获取联合身份临时访问凭证生成临时密钥,保障密钥安全性。

<?phprequire_once __DIR__ . '../../vendor/autoload.php';
use TencentCloud\Common\Credential;use TencentCloud\Common\Exception\TencentCloudSDKException;use TencentCloud\Sts\V20180813\StsClient;use TencentCloud\Sts\V20180813\Models\GetFederationTokenRequest;
try { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密 // 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305 // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取 $cred = new Credential("SecretId", "SecretKey"); $client = new StsClient($cred, "ap-beijing");
// 实例化一个请求对象,每个接口都会对应一个request对象 $req = new GetFederationTokenRequest();
$params = array( "Name" => "soe", "Policy" => "{\"version\": \"2.0\",\"statement\": {\"effect\": \"allow\", \"action\":[\"soe:TransmitOralProcessWithInit\"],\"resource\": \"*\"}}" ); $req->fromJsonString(json_encode($params));
// 返回的resp是一个GetFederationTokenResponse的实例,与请求对象对应 $resp = $client->GetFederationToken($req); // 输出json格式的字符串回包 print_r($resp->toJsonString());} catch (TencentCloudSDKException $e) { echo $e;}



腾讯云官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

发表评论