|
|
- <?php
- define('DEMO_CURL_VERBOSE', false);
- # 填写网页上申请的appkey 如 $apiKey="g8eBUMSokVB1BHGmgxxxxxx"
- $apiKey = "TODO";
- # 填写网页上申请的APP SECRET 如 $secretKey="94dc99566550d87f8fa8ece112xxxxx"
- $secretKey = "TODO";
- # text 的内容为"欢迎使用百度语音合成"的urlencode,utf-8 编码
- # 可以百度搜索"urlencode"
- //$text = "大業四年六月二十七日疏一時講語。此序理深事博、言約義周,略曉六條方乃可讀。一須深見論意、二精通《法華》、三妙識《般若》、四善鑒《老》、《莊》、五[*]博尋儒典、六巧制文章。余昔已著三論文玄正言,序是人制不我釋之。但師每講常讀此序,而淺識之流意多紛謬,故略陳綱要以賜門人也。序為六分:一標大宗、二釋題目、三敘造論意、四讚論功能、五讚論利益、六作者謙讓。";
- $text = "大业四年(公元608年)六月二十七日,对(某部著作的)疏进行了一次讲解时所说的话语。这篇序道理深邃、内容广博,言辞简约但含义周全,大致要通晓六条要求之后才能够去阅读它。一是必须深刻领会论著的意旨;二是要精通《法华经》;三是要精妙地知晓《般若经》;四是善于鉴别《老子》《庄子》;五是广泛探寻儒家经典;六是能够巧妙撰写文章。我过去已经撰写了三篇论述文章义理的著述,这篇序是别人所写的,所以我就不做阐释了。只是师父每次讲学的时候常常会读这篇序,然而那些见识浅薄的人往往理解上有诸多错乱谬误之处,所以我大略陈述一下它的纲要用来赐给门下弟子。这篇序分为六个部分:一是标明主要宗旨;二是解释题目;三是叙述撰写论著的意图;四是称赞论著的功用;五是称赞论著带来的益处;六是作者表现出的谦逊退让之意。 ";
- $text2 = iconv("UTF-8", "GBK", $text);
- echo "text length :" . mb_strlen($text2, "GBK") . "\n";
- # 发音人选择, 基础音库:0为度小美,1为度小宇,3为度逍遥,4为度丫丫,
- # 精品音库:5为度小娇,103为度米朵,106为度博文,110为度小童,111为度小萌,默认为度小美
- $per = 4226;
- #语速,取值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];
- $cuid = "123456PHP";
- /** 公共模块获取token开始 */
- $auth_url = "https://aip.baidubce.com/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))
- {
- print curl_error($ch);
- }
- curl_close($ch);
- echo "Token URL response is " . $res . "\n";
- $response = json_decode($res, true);
- if (!isset($response['access_token'])){
- echo "ERROR TO OBTAIN TOKEN\n";
- exit(1);
- }
- if (!isset($response['scope'])){
- echo "ERROR TO OBTAIN scopes\n";
- exit(2);
- }
- if (!in_array('audio_tts_post',explode(" ", $response['scope']))){
- echo "DO NOT have tts permission\n";
- // 请至网页上应用内开通语音合成权限
- exit(3);
- }
- $token = $response['access_token'];
- echo "token = $token ; expireInSeconds: ${response['expires_in']}\n\n";
- /** 公共模块获取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 = 'http://tsn.baidu.com/text2audio';
- $urltest = $url . '?' . $paramsStr;
- echo $urltest . "\n"; // 反馈请带上此url
- /** 拼接参数结束 **/
- $g_has_error = true;
- $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);
- function read_header($ch, $header){
- global $g_has_error;
-
- $comps = explode(":", $header);
- // 正常返回的头部 Content-Type: audio/*
- // 有错误的如 Content-Type: application/json
- if (count($comps) >= 2){
- if (strcasecmp(trim($comps[0]), "Content-Type") == 0){
- if (strpos($comps[1], "audio/") > 0 ){
- $g_has_error = false;
- }else{
- echo $header ." , has error \n";
- }
- }
- }
- return strlen($header);
- }
- curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
- $data = curl_exec($ch);
- if(curl_errno($ch))
- {
- echo curl_error($ch);
- exit(2);
- }
- curl_close($ch);
- $file = $g_has_error ? "result.txt" : "result." . $format;
- file_put_contents($file, $data);
- echo "\n$file saved successed, please open it \n";
复制代码 音色选择:
https://ai.baidu.com/ai-doc/SPEECH/Rluv3uq3d
PHPdemo地址:
https://github.com/Baidu-AIP/spe ... er/rest-api-tts/php
|
|