第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 小爱音响调用php接口_PHP调用语音合成接口

小爱音响调用php接口_PHP调用语音合成接口

时间:2020-05-29 19:13:14

相关推荐

小爱音响调用php接口_PHP调用语音合成接口

百度TTS 语音合成

//百度文件转换成语音

private function toSpeech($text)

{

define('DEMO_CURL_VERBOSE', false);

$obj=["status"=>0,"msg"=>"","file_name"=>""];

//获取秘钥

$apiKey = Config::get('apiKey');

$secretKey = Config::get('secretKey');

$cuid = Config::get('cuid');

//发音人选择, 0为普通女声,1为普通男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声

$per = 0;

//语速,取值0-15,默认为5中语速

$spd = 5;

//音调,取值0-15,默认为5中语调

$pit = 5;

//音量,取值0-9,默认为5中音量

$vol = 5;

// 下载的文件格式, 3:mp3(default) 4: pcm-16k 5: pcm-8k 6. wav

$aue = 3;

$formats = array(3 => 'mp3', 4 => 'pcm', 5 => 'pcm', 6 => 'wav');

$format = $formats[$aue];

/** 公共模块获取token开始 */

$auth_url = "/oauth/2.0/token?grant_type=client_credentials&client_id=" . $apiKey . "&client_secret=" . $secretKey;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $auth_url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //信任任何证书

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 检查证书中是否设置域名,0不验证

curl_setopt($ch, CURLOPT_VERBOSE, DEMO_CURL_VERBOSE);

$res = curl_exec($ch);

if (curl_errno($ch)) {

$obj["msg"] = curl_error($ch);

return $obj;

}

curl_close($ch);

$response = json_decode($res, true);

if (!isset($response['access_token'])) {

$obj["msg"]="ERROR TO OBTAIN TOKEN";

return $obj;

}

if (!isset($response['scope'])) {

$obj["msg"]="ERROR TO OBTAIN scopes";

return $obj;

}

if (!in_array('audio_tts_post', explode(" ", $response['scope']))) {

// 请至网页上应用内开通语音合成权限

$obj["msg"]="DO NOT have tts permission";

return $obj;

}

$token = $response['access_token'];

/** 公共模块获取token结束 */

/** 拼接参数开始 **/

// tex=$text&lan=zh&ctp=1&cuid=$cuid&tok=$token&per=$per&spd=$spd&pit=$pit&vol=$vol

$params = array(

'tex' => urlencode($text), // 为避免+等特殊字符没有编码,此处需要2次urlencode。

'per' => $per,

'spd' => $spd,

'pit' => $pit,

'vol' => $vol,

'aue' => $aue,

'cuid' => $cuid,

'tok' => $token,

'lan' => 'zh', //固定参数

'ctp' => 1, // 固定参数

);

$paramsStr = http_build_query($params);

$url = '/text2audio';

/** 拼接参数结束 **/

$g_has_error = false;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $paramsStr);

$data = curl_exec($ch);

$res = curl_getinfo($ch);

// 正常返回:audio/* 错误返回类型为:application/json 则转换失败

if ($res['content_type'] == 'application/json') {

$g_has_error = true;

$obj["msg"]=json_decode($data);

return $obj;

}

if (curl_errno($ch)) {

$obj["msg"]=curl_error($ch);

return $obj;

}

curl_close($ch);

//拼接文件名字

if (!$g_has_error) {

$path = "uploads/voices/". strtotime(date("Y-m-dH:i:s")). "_" . rand(100000, 999999) .".".$format;

file_put_contents($path, $data);

$obj["status"]=1;

$obj["msg"]="操作成功!";

$obj["file_name"]=$path;

}else{

$obj["msg"]="操作失败!";

}

return $obj;

}

读取音频文件时长

需要使用第三方库:getID3-master,需要使用引用两个文件夹:getid3,helperapps

private function voiceTime($img){

//包含文件

$path =__DIR__.'/../libs/getid3/getid3.php';

$fileName =realpath($path);

if (!file_exists($fileName) || !include_once($fileName)) {

return 0;

}

include_once($fileName);

try{

$mp3_path=__DIR__.'/../../../public/'.$img;

$getID3 = new \getID3(); //实例化类

$ThisFileInfo = $getID3->analyze($mp3_path); //分析文件,$path为音频文件的地址

$fileDuration=$ThisFileInfo['playtime_seconds']; //这个获得的便是音频文件的时长

$time = (int)ceil($fileDuration);

return $time;

}catch (Exception $e){

return 0;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。