PHP实现调取 百度文字转语音SDK

直接可以复制使用的代码,PHP实现调取 百度文字转语音SDK

提示:建议放入助手中使用
	//最终效果
	public function Index() 
	{
		return getVoiceUrl('俺就是这么帅',2,2,2,3); //调用文字转语音助手函数
	}
	
	//实现代码
	/**
	 * 请求接口返回合成语音链接
	 * @param  string $tex   UTF-8编码[需要播报的文字]
	 * @param  int $spd      [语速,取值0-9]
	 * @param  int $pit      [音调,取值0-9]
	 * @param  int $vol      [音量,取值0-15]
	 * @param  int $per      [发音人选择0-4]
	 * @return  string
	 */
	if (!function_exists("getVoiceUrl")) {
	    function getVoiceUrl($tex, $spd = 5, $pit = 5, $vol = 5, $per = 0)
	    {
	    	//存缓存的目的是下次直接拿token用,无需多次重复请求
	        if (!\Yii::$app->cache->get('voice_key')) { //无缓存,缓存名称voice_key
	            $token_url = "https://openapi.baidu.com/oauth/2.0/token"; //拿请求token
	            $headers = 'content-type:application/x-www-form-urlencoded'; //header请求头
	            $params = 'grant_type=client_credentials&client_id=tGkGdWBsFPiyuB0gpgCPA4Zk&client_secret=ElWhGqpgVqIaaCQXcxDG8baXvWzVqutL'; //建议改为自己的
	            $token = json_decode(juhecurlHttps($token_url, $params, true, $headers)); //请求接口
	            \Yii::$app->cache->set('voice_key', $token->access_token, $token->expires_in); //设置缓存,缓存名称voice_key
	        }
	
	        $url = "http://tsn.baidu.com/text2audio"; //合成语音api
	        $params = [
	            'tok' => \Yii::$app->cache->get('voice_key'), //直接读缓存中的token
	            'tex' => $tex,
	            'spd' => $spd,
	            'pit' => $pit,
	            'vol' => $vol,
	            'per' => $per,
	            'cuid' => "quickstart",
	            'lan' => 'zh',
	            'ctp' => 1,
	        ];
	        if (is_array($params)) {
	            $url .= '?';
	            foreach ($params as $k => $v) {
	                $url .= $k . '=' . $v . '&';
	            }
	        }
	        //返回语音url
	        return $url;
	    }
	}
	
	/**
	 * 请求接口返回内容 - https
	 * 
	 * @param  string $url      [请求的URL地址]
	 * @param  string $params   [请求的参数]
	 * @param  int $ipost       [是否采用POST形式]
	 * @return  string
	 */
	if (!function_exists('juhecurlHttps')) {
	    function juhecurlHttps($url, $params = false, $ispost = 0, $headers = [])
	    {
	        $httpInfo = array();
	        $ch = curl_init();
	
	        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
	        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
	        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
	        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	
	        if (!empty($headers)) {
	            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
	        }
	
	        if ($ispost) {
	            curl_setopt($ch, CURLOPT_POST, true);
	            curl_setopt($ch, CURLOPT_POSTFIELDS, $params); //传post数据
	            curl_setopt($ch, CURLOPT_URL, $url);
	        } else {
	            if ($params) {
	                // 判断参数是否是数组
	                if (is_array($params)) {
	                    // 清空zt数据
	                    unset($params['zt']);
	                    // get上传
	                    $url .= '?';
	                    foreach ($params as $k => $v) {
	                        $url .= $k . '=' . $v . '&';
	                    }
	                    curl_setopt($ch, CURLOPT_URL, $url);
	                } else {
	                    curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
	                }
	            } else {
	                curl_setopt($ch, CURLOPT_URL, $url);
	            }
	        }
	        $response = curl_exec($ch);
	        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
	
	        if ($response === FALSE) {
	            //echo "cURL Error: " . curl_error($ch);
	            return false;
	        }
	        curl_close($ch);
	        return $response;
	    }
	}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值