讯飞语音接口用php接入,如何把response body的音频数据保存为文件

zxh_33 2018-04-03 04:42:19
文档如下:
http://doc.xfyun.cn/rest_api/%E8%AF%AD%E9%9F%B3%E5%90%88%E6%88%90.html

本地代码如下,可以正常获得返回:

<?php
//用户参数
$apikey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$appid = 'xxxxxxx';
$CurTime = (string)time();
$audioType = 'raw';
//语音参数
$json = array('aue' => $audioType, 'auf' => 'audio/L16;rate=16000', 'voice_name' => 'xiaoyan');
$param = base64_encode(utf8_encode(json_encode($json, JSON_UNESCAPED_SLASHES)));
$body = 'text=讯飞是中国最大的智能语音技术提供商';
//验证参数
$checkSum = md5($apikey . $CurTime . $param);
//http头
$header = array(
'X-Appid:' . $appid,
'X-CurTime:' . $CurTime,
'X-Param:' . $param,
'X-CheckSum:' . $checkSum,
);
//请求
$url = 'http://api.xfyun.cn/v1/service/v1/tts';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
$result = curl_exec($ch);
curl_close($ch);
//处理响应
echo($result);
$saveType = $audioType == 'raw' ? '.wav' : '.mp3';
$saveName = $CurTime . $saveType;
// TODO:save wav file


echo结果:


文档示例是python,response.content可以直接获取,PHP有没有类似方法呢。直接写$result放不出来,CURLOPT_HEADER,false也是。
...全文
2464 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_32282331 2018-04-23
  • 打赏
  • 举报
回复
您好,我看您也是做的这一块,想向您咨询个问题,那个我要做文本理解,运用PHP webapi ,运行以后出现这个结果,不能成功返回,想让您帮忙看看是什么原因?
这个是运行结果
以下是代码:
<?php

class AIUI
{
private $m_appid = " ";
private $m_apikey = " ";
private $m_heads = [];
private $m_debug = true;
private $m_checkSum = [];
private $m_body = "";
private $m_host = "http://api.xfyun.cn";

public function setDebug($debug)
{
$this->m_debug = $debug;
}

public function setBody($body)
{
$this->m_body = $body;
}

public function setHead($scene="main", $userid = "user_0001", $auf="", $aue="")
{
$this->m_heads =[];
$CurTime = time();
$this->m_heads[] = "X-Appid: {$this->m_appid}";
$this->m_heads[] = "X-CurTime: {$CurTime}";
$Param = [];
$Param["userid"] = $userid;
$Param["scene"] = $scene;
if ($auf != "") {
$Param["auf"] = $auf;
}
if ($aue != "") {
$Param["aue"] = $aue;
}

$Param = json_encode($Param, JSON_UNESCAPED_UNICODE);
if ($this->m_debug) {
var_dump("X-Param:".$Param."<br/>");
}
$Param = base64_encode($Param);
if ($this->m_debug) {
var_dump("X-Param(base64):".$Param."<br/>");
}
$this->m_heads[] = "X-Param: {$Param}";

$this->m_checkSum[] = $this->m_apikey;
$this->m_checkSum[] = $CurTime;
$this->m_checkSum[] = $Param;
$this->m_checkSum[] = $this->m_body;

$checkSum = join($this->m_checkSum, "");
if ($this->m_debug) {
var_dump("X-CheckSum:".$checkSum."<br/>");
}
$checkSum = md5($checkSum);
if ($this->m_debug) {
var_dump("X-CheckSum(md5):".$checkSum."<br/>");
}
$this->m_heads[] = "X-CheckSum: {$checkSum}";
$this->m_heads[] = "Content-type: application/x-www-form-urlencoded; charset=utf-8";
$this->m_heads[] = "Accept: */*";
$this->m_heads[] = "Content-Length: ".strlen($this->m_body);
}

public function request_text_semantic($text)
{
if ($this->m_debug) {
var_dump("X-Body:".$text."<br/>");
}
//$text = iconv("utf-8","gb2312",$text);
$text = base64_encode($text);
if ($this->m_debug) {
var_dump("X-Body(base64):".$text."<br/>");
}

$this->setBody("text={$text}");
$this->setHead();
$ch = curl_init();
//设置抓取的url 文本语义接口
curl_setopt($ch, CURLOPT_URL, "{$this->m_host}/v1/aiui/v1/text_semantic");
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->m_heads);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->m_body);

$data = curl_exec($ch);
curl_close($ch);
var_dump(json_decode($data, true));
exit();
}

public function base64_encode_file($file)
{
if (!file_exists($file)) {
return "";
}
$fp = fopen($file, 'rb');
$content = fread($fp, filesize($file));
fclose($fp);
$content = base64_encode($content);
return $content;
}
}

$aiui = new AIUI();
$aiui->request_text_semantic("今天星期几");
//$aiui->request_voice_semantic("C:\\Users\\user\\Desktop\\程序日记\\讯飞语音\\16kVoice.pcm");
zxh_33 2018-04-04
  • 打赏
  • 举报
回复
mp3把返回头一起写进去也可以正常播放

但是wav格式写进返回头就放不出来。想要存wav格式就要类似python的response.content方法,php中如何实现?
zxh_33 2018-04-03
  • 打赏
  • 举报
回复
引用 1 楼 zxh_33 的回复:
刚刚发现,改成返回mp3格式就可以了 第6行,$audioType = 'lame'; 34行 TODO : $save=fopen($saveName,'w'); fwrite($save,$result); fclose($save); 放出来了
所以为什么wav不行
zxh_33 2018-04-03
  • 打赏
  • 举报
回复
刚刚发现,改成返回mp3格式就可以了 第6行,$audioType = 'lame'; 34行 TODO : $save=fopen($saveName,'w'); fwrite($save,$result); fclose($save); 放出来了
内容概要:LTK8319是一款单通道H桥有刷直流电机驱动器,工作电压范围为2.5V至12V,支持最高3.9A的峰值电流和2.5A的平均电流驱动能力,适用于小家电、玩具、电子锁、机器人等小型电动设备。该芯片通过两个逻辑输入(INA和INB)控制电机的正转、反转、停止与刹车,并支持PWM调速控制。集成欠压锁定(UVLO)、过温保护(TSD)及自动故障恢复功能,确保系统安全可靠运行。当INA和INB持续为低电平时,芯片进入低功耗休眠模式,显著降低静态功耗。采用ESOP-8封装,符合环保无铅标准。; 适合人群:电子工程师、嵌入式系统开发者、电机控制技术人员,以及从事小型机电产品研发的设计人员;具备基本电路知识和电机控制经验者更佳。; 使用场景及目标:①用于驱动小型有刷直流电机或步进电机的一个绕组,实现精确的方向与速度控制;②适用于电池供电设备中对功耗敏感的应用,利用休眠模式延长续航时间;③在电机启停频繁、负载波动大的场合,发挥其电流控制与保护机制优势,提升系统稳定性。; 阅读建议:此文档提供了详细的电气特性、功能逻辑表、保护机制与时序参数,建议结合典型应用电路进行硬件设计,并重点关注电源去耦电容选型、散热布局及PWM频率设置(不超过100kHz),以确保系统可靠运行。
内容概要:本文研究了一种基于遗传算法(GA)与粒子群优化算法(PSO)融合的无人机三维路径规划方法,旨在解决复杂环境中无人机避障与路径优化的问题。通过构建三维空间环境模型,提出一种结合GA全局搜索能力强与PSO收敛速度快优势的混合优化策略,并利用Matlab平台完成算法仿真与路径可视化。研究不仅实现了无人机在存在多个障碍物场景下的安全、高效行路径规划,还对GA与PSO两种算法在路径长度、计算耗时、收敛稳定性等方面进行了对比分析,评估其性能差异,为实际应用中算法选型提供依据。; 适合人群:具备一定算法设计基础和Matlab编程能力的科研人员、自动化与人工智能方向的研究生,以及从事无人机导航、智能控制等相关领域的工程技术人员。; 使用场景及目标:①应用于城市密集建筑区、山地森林等复杂地形中的无人机自主巡检与应急救援任务;②为智能交通、地理测绘、灾害监测等需要自主路径决策的无人系统提供算法支持与仿真验证;③通过对比不同智能优化算法的表现,辅助研究人员在特定应用场景下选择最优路径规划方案。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实验,调整种群规模、迭代次数、障碍物分布等参数,深入理解算法运行机制与性能表现,并可进一步拓展至动态环境更新、多无人机协同避障等更复杂的研究方向。

21,889

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧