摘要:
在做前,我发现阿里云竟然没有PHP文字转语音的SDK包,有点尴尬啊,没办法我选择了RESTful API 2.0的方式请求;1:第一步:打开阿里云-->产品分类-->人...
在做前,我发现阿里云竟然没有PHP文字转语音的SDK包,有点尴尬啊,没办法我选择了RESTful API 2.0的方式请求;
1:第一步:打开阿里云-->产品分类-->人工智能-->语音合成-->申请开通,可以先试用一下;
2:第二步:阿里云控制台-->有你刚刚购买的语音合成,
,一开始你需要创建一个项目,当前我已经创建一个“文字转语音”。并会生成项目Appkey;,
,在拿到你的AccessKey ID和Access Key Secret,这三个值等会调取接口时需要;
3:第三步,在这里面需要生成token,所以我们可以在阿里云里找到生成token的sdk包
打开下翻
,这里可以点击上面的方法在github中下载源码,也可以使用composer安装SDK包;
准备工作做好以后,下面就上代码了;
require __DIR__ . '/vendor/autoload.php';//引入到运行页面中 use AlibabaCloud\Client\AlibabaCloud;use AlibabaCloud\Client\Exception\ClientException;use AlibabaCloud\Client\Exception\ServerException; //使用你的AccessKey ID和Access Key Secret初始化 $aly = AlibabaCloud::accessKeyClient("你的AccessKey ID", "你的Access Key Secret") ->regionId("cn-shanghai") ->asDefaultClient(); //获取token等初始化的值$response = AlibabaCloud::nlsCloudMeta() ->v20180518() ->createToken() ->request(); $url = 'https://nls-gateway.cn-shanghai.aliyuncs.com/stream/v1/tts';//这个是访问阿里云的接口 $token = $response['Token']['Id'];//获取token值:
目前基本已经完成一半了;下面开始文字转语音了,官方给了2种转的方法,GET和POST
第一种:GET(中文的话需要进行UTF-8转码,在URL编码才可以)
$text = '喜洋洋,美羊羊,懒洋洋,沸羊羊,红太狼,灰太狼';//需要转的文字 $text = mb_convert_encoding($text ,'utf-8');//文字转换成utf-8的形式 $text = urlencode($text);//URL编码数据 下面就开始拼接数据了: $data = 'appkey=你的Appkey&token='.$token.'&text='.$text'; $get_tts = $url.$data;//已经生成了路径你把路径放到url请求一下就ok了
第二种:POST(需要把数据拼接成数组,然后进行json_encode转换一下,在请求接口上添加:Content-Type: application/json)
$text = '喜洋洋,美羊羊,懒洋洋,沸羊羊,红太狼,灰太狼';//转换的文字 $data =['appkey'=>'你的appkey','token'=>$token,'text'=>$text]; $data = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码 curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); curl_close($ch); 就ok了;