准备食材:
1,到腾讯云上注册帐号,认证帐号,选那种认证自己根据自己身条件想办法;
2,腾讯云--》 控制台 --》搜“访问管理” --》 --》新建一个密钥(这个是调用API的凭证);
3,https://cloud.tencent.com/document/product/1073/34093 可以先打开相关开发档了解个大概;
4,tp5.1在开发的项目,无项目你为什么要做这个语音合成功能,不要问我这个是什么;
5,要用到Composer, 是 PHP 的依赖管理工具,用来下载部署SDK的,如何安装见链https://cloud.tencent.com/document/sdk/PHP;
开工煮饭了:
1,先说了坑爹货:PHP要是5.6.33或以上版本,然后打开PHP的安装根目录, 然后上这https://cloud.tencent.com/document/sdk/PHP,下载证书放到根目录里,再配置php.ini:
- 下载证书文件 cacert.pem,将其保存到 PHP 安装路径下。
- 编辑
php.ini
文件,删除curl.cainfo
配置项前的分号注释符(;),值设置为保存的证书文件cacert.pem
的绝对路径。 - 重启依赖 PHP 的服务。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
2,本人写这个是对命名空间的概念不清,和TP5也比较水,只是为了工作,所以怎样能实现怎样笨来:
先命令行下切到项目的vendor目录下
建议中国大陆地区的用户设置腾讯云镜像源,在命令行输入:composer config -g repos.packagist composer https://mirrors.tencent.com/composer/
然后添加依赖,在命令行输入:
composer require tencentcloud/tencentcloud-sdk-php
安装好后vendor目录下应该新增了以下
然后把绿框的都拷下extend目录下,不要问我点解要这样做,因为我tp5没学好
------------------------------------------------------------------------------------------------------------------------------
3,https://cloud.tencent.com/document/product/1073/34093 回到开发档,腾讯还是有点人性的,搞了个代码生成页面你用:
然后就是简单的改装工作了,改成自己想要和附加的:我贴一下我的实际应用代码吧:
先在文件头加上需要使用的命名空间
use TencentCloud\Common\Credential;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Tts\V20190823\TtsClient;
use TencentCloud\Tts\V20190823\Models\TextToVoiceRequest;
//保存活动方法
public function saveact()
{
$id = input('post.id','0','intval');
$one=db('表名')->where('id='.$id.' and gsid='.$this->memberinfo['id'])->find();
$data['title'] = input('post.title','','strip_tags');
$data['voiceinfo'] = input('post.voiceinfo');
$data['voicetype'] = input('post.voicetype',1,'intval');
//语音合成
if(!empty($data['voiceinfo']) && $one['voiceinfo']!=$data['voiceinfo'] ){
try {
$cred = new Credential(config("SecretId"), config("SecretKey"));
$httpProfile = new HttpProfile();
$httpProfile->setEndpoint("tts.tencentcloudapi.com");
$clientProfile = new ClientProfile();
$clientProfile->setHttpProfile($httpProfile);
$client = new TtsClient($cred, "ap-guangzhou", $clientProfile);
$vname=md5(time().rand(10000,90000)); //搞个随机字符串api调用时需要到的参数,同时也是mp3文件日后的文件名了
$req = new TextToVoiceRequest();
$params = "{\"Text\":\"".$data['voiceinfo']."\",\"SessionId\":\"".$vname."\",\"ModelType\":1,\"VoiceType\":".$data['voicetype'].",\"Codec\":\"mp3\"}";
$req->fromJsonString($params);
$resp = $client->TextToVoice($req);
$resp=$resp->toJsonString();
$resp=json_decode($resp,true); //到这里已经得到了返回的数据但转成数组了
//以下是保存音频数据保存成mp3文件存在服务器上
$data['voicepath']=config("voice_path").$vname.".mp3";
$myfile = fopen(Env::get('ROOT_PATH')."\public".$data['voicepath'], "w") or die("Unable to open file!");
fwrite($myfile, base64_decode($resp['Audio'])); //base64_decode是因为返回来的音频数据需解码后保存出来的mp3文件才正常
fclose($myfile);
// echo "生成语音成功!";
// dump($resp);
//print_r($resp->toJsonString());
}
catch(TencentCloudSDKException $e) {
echo $e;
}
}
//.....下面还有一堆自己项目的代码,看也没用,删了算
}
----------------------------------------------------------------------------------------------
好啦,收工啦,就这样成了
看不看得明看个人悟性,不过也说得好白了,技术好的就不要看了,这是初阶记录写给自己怕自己年纪大了,转头又不会做了。
还在上腾讯云核心的那个SDK文件夹,如果通过composer安不成,自己想办法把SDK的TencentCloud文件夹搞到手放在extend目录下