在做前,我发现阿里云竟然没有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了;