小爱音响调用php接口_PHP调用语音合成接口

百度TTS 语音合成

//百度文件转换成语音

private function toSpeech($text)

{

define('DEMO_CURL_VERBOSE', false);

$obj=["status"=>0,"msg"=>"","file_name"=>""];

//获取秘钥

$apiKey = Config::get('apiKey');

$secretKey = Config::get('secretKey');

$cuid = Config::get('cuid');

//发音人选择, 0为普通女声,1为普通男生,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女声

$per = 0;

//语速,取值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];

/** 公共模块获取token开始 */

$auth_url = "https://openapi.baidu.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)) {

$obj["msg"] = curl_error($ch);

return $obj;

}

curl_close($ch);

$response = json_decode($res, true);

if (!isset($response['access_token'])) {

$obj["msg"]="ERROR TO OBTAIN TOKEN";

return $obj;

}

if (!isset($response['scope'])) {

$obj["msg"]="ERROR TO OBTAIN scopes";

return $obj;

}

if (!in_array('audio_tts_post', explode(" ", $response['scope']))) {

// 请至网页上应用内开通语音合成权限

$obj["msg"]="DO NOT have tts permission";

return $obj;

}

$token = $response['access_token'];

/** 公共模块获取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';

/** 拼接参数结束 **/

$g_has_error = false;

$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);

$data = curl_exec($ch);

$res = curl_getinfo($ch);

// 正常返回:audio/* 错误返回类型为:application/json 则转换失败

if ($res['content_type'] == 'application/json') {

$g_has_error = true;

$obj["msg"]=json_decode($data);

return $obj;

}

if (curl_errno($ch)) {

$obj["msg"]=curl_error($ch);

return $obj;

}

curl_close($ch);

//拼接文件名字

if (!$g_has_error) {

$path = "uploads/voices/". strtotime(date("Y-m-dH:i:s")). "_" . rand(100000, 999999) .".".$format;

file_put_contents($path, $data);

$obj["status"]=1;

$obj["msg"]="操作成功!";

$obj["file_name"]=$path;

}else{

$obj["msg"]="操作失败!";

}

return $obj;

}

读取音频文件时长

需要使用第三方库:getID3-master,需要使用引用两个文件夹:getid3,helperapps

private function voiceTime($img){

//包含文件

$path =__DIR__.'/../libs/getid3/getid3.php';

$fileName =realpath($path);

if (!file_exists($fileName) || !include_once($fileName)) {

return 0;

}

include_once($fileName);

try{

$mp3_path=__DIR__.'/../../../public/'.$img;

$getID3 = new \getID3(); //实例化类

$ThisFileInfo = $getID3->analyze($mp3_path); //分析文件,$path为音频文件的地址

$fileDuration=$ThisFileInfo['playtime_seconds']; //这个获得的便是音频文件的时长

$time = (int)ceil($fileDuration);

return $time;

}catch (Exception $e){

return 0;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 会话数上不去_Oracle初识

1、基本概念oracle数据库是一个物理概念,oracle实例是数据库在内存中的镜像,属于一种逻辑概念。oracle数据库与oracle实例至少是一对一的关系,也可能是一对多关系(oracle集群:RAC real application cluster&#xff09…

trace Linux and实例,traceroute在linux中的使用方法

traceroute在linux中的使用方法一、traceroute的实现原理1、IP协议利用存活时间TTL来发出探测包跟踪数据包到达目标ip主机所经历的路由网关数量,每经过一个路由器,TTL的值就减去1。当TTL值为0时,主机就取消发送数据包,并回传一份I…

js 点击闭包_学习Javascript闭包(Closure)

讲的很清楚明了,连我都懂了,要是我们大学时的老师也能这么讲课。。。他们只会放幻灯片2009年8月30日 22:29| #| 引用2009年8月30日 22:44| #| 引用呵呵,可以作为面试题了!2009年8月31日 09:30| #| 引用十三说:闭包个人…

在VS中怎么用vb画矩形_(十四)矩形和操作展示逻辑操作

时间为友,记录点滴。聊了这么多的图片运算,忽然有个想法,为什么非要用静态的图片来展示运算呢?我们可以用自己做的图片来经过运算后显示出来。说干就干。先想一下需求:整体环境非黑即白。可以用鼠标在背景上画出矩形&a…

linux文件传输到另一台linux,使用scp将文件/目录拷贝到另一台Linux主机上

如何将一台Linux主机上的文件或目录拷贝到另一台Linux主机上,scp命令可以实现该需求前提条件:两台Linux主机处于同一网段,可以互相ping通操作如下:文件拷贝①将本地文件拷贝到远端主机上scp 待拷贝的文件 远端主机用户名远端主机I…

python结构化数据_python新手入门必备—— 使用json保存结构化数据

【摘要】使用 json 保存结构化数据时,字符串可以很轻松地写入文件并从文件中读取出来。数字可能会费点劲,因为 read() 方法只能返回字符串,这些字符串必须传递给类似 int() 的函数,它会接受类似 123 这样的字符串并返回其数字值 1…

c++ 二维数组 排序_漫画:“排序算法” 大总结

​冒泡排序:漫画:什么是冒泡排序?​mp.weixin.qq.com选择排序:漫画:什么是选择排序?​mp.weixin.qq.com插入排序:漫画:什么是插入排序?​mp.weixin.qq.com此外还有冒泡排…

c语言线程经常段错误的是,由pthread_create引起的段异常

由pthread_create引起的段错误一般线程的结束是由进程内的其他线程来结束的,调用pthread_cancel.但是需要考虑到被结束线程的性质,一方面,线程是可被结束,也可无法结束,即不响应该信号;另一方面&#xff0c…

python request url编码_Python 爬虫 (requests) 发送中文编码的 HTTP POST 请求

向往常一样发送POST请求出现错误网站信息表单页面结果网页使用 gb2312 编码使用 requests 发送 post 请求In [2]: import requestsIn [3]: from bs4 import BeautifulSoup as BSIn [4]: url http://example.com/ip/search.aspIn [5]: data {...: loudong: 女生九栋,...: fang…

python坐标定位_如何利用Python识别并定位图片中某一个色块的坐标?

依赖python包|opencv、numpy、aircv 第一步:查找图片在原始图片上的坐标点 import aircv as ac def matchImg(imgsrc,imgobj,confidencevalue0.5):#imgsrc原始图像,imgobj待查找的图片 imsrc ac.imread(imgsrc) imobj ac.imread(imgobj) match_result …

centos7打开图形界面命令_centos7标准版(DVD)命令界面和图形界面相互切换

1、root登陆终端2、输入命令 vi /etc/inittab ,查看两种界面的启动模式:vi /etc/inittab3、退出vi模式,,输入命令systemctl get-default 查看当前系统启动模式;我的是命令界面模式为:multi-user.target;4、…

为什么编程语言要从c语言学起,在那么多编程语言中,为什么推荐初学者学 C 语言?...

如果你学过了计蒜客的《编程初学入门常识》的课,你就会知道,一个汇编写的操作系统,是没有办法在不同的计算机上普适使用的。所以呢,Ken 和 Dennis 为了让更多人在非 PDP-7 小型机的计算机上也玩上《星际旅行》的游戏,决…

ieee39节点系统介绍_Java秒杀系统实战系列-基于ZooKeeper的分布式锁优化秒杀逻辑...

本文是“Java秒杀系统实战系列文章”的第十六篇,本文我们将继续秒杀系统的优化之路,采用统一协调调度中心中间件ZooKeeper控制秒杀系统中高并发多线程对于共享资源~代码块的并发访问所出现的并发安全问题,即用ZooKeeper实现一种分布式锁&…

curl shell 失败_linux – curl命令不在bash中通过shell脚本执行

我正在学习shell脚本!同样我尝试在ubuntu终端上使用curl下载facebook页面.t.sh内容vivi-Dell-7537(Desktop) $cat t.shcurlCmd"curl \"https://www.facebook.com/vivekkumar27june88\""echo $curlCmd($curlCmd) > ~/Desktop/fb.html运行脚本…

centos配置c语言环境变量,CentOS7设置环境变量

一、环境变量的概念1、环境变量的含义程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个环境变量组成的。2、环境变量的分类1)按生效的范围分类。系统环境变量:公共的,对全部的用户都生效。用户环境变量:用户私…

python 3.7.732位安装步骤_Python3.7安装pyaudio教程解析

本人笔记本电脑安装的是 python3.7, 64位操作系统,基于x64的处理器 因为 pyaudio 暂时不支持 python3.7 和 3.8,所以若需要安装 pyaudio 需要下载 whl 文件后再离线进行安装。 首先:下载安装 pyaudio 的 whl 文件 然后按下 ctrlf 输入关键字&…

java语言程序设计是c语言吗,浅析C语言和Java语言的异同.pdf

新一代信息技 m0 l0、… … … …浅析C语言和Java语言的异同张亚荣(通辽职业学院信息技术系,内蒙古通辽 028000)【摘 要l文章根据本人多年对c语言和Java语言教学过程中遇到的一些实际问题,诸如Java语言是不是c语言发展和衍生的产物等。基于此&#xff0c…

python搜论文_python论文

浅谈我眼中的 python 吴凡 摘要: 作为一门非常有潜力的高级语言, python 正在编程上发挥着越来越大的作用。这学期,通 过对 python 基础知识的学习,对 python 有了一定的认识。同时和已经学习的高级语言 C 和 C 有了一定的对比&am…

图书管理系统c语言报告调试分析,图书管理系统C语言程序设计实验分析报告.doc...

图书管理系统C语言程序设计实验分析报告C语言程序设计实验报告系别专业班级姓名学号时间实验题目 图书信息管理系统一、实验目的(1)熟练掌握C语言的相关操作。(2)综合应用C语言的知识,独立完成一个完整的系统,提高编程能力,体会软件程序的开发…

python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件

Python3 open() 函数详解 读取文件写入文件追加文件二进制文件 open()函数的主要作用是打开文件并返回相应文件对象,使用文件对象可以对当前文件进行读取、写入、追加等操作,默认情况下"r"模式,文件不存在的话会发生OSError错误的。…