tp中如何调用科大讯飞的语音转写

news/2025/2/22 4:44:07/

1.首先注册科大讯飞(https://www.xfyun.cn/),拿到语音转写的APPID以及SecretKey
2.将我的压缩包放到tp的扩展类库目录(extend)中。解压
在这里插入图片描述
3.在控制里面的调用方式
在这里插入图片描述
重点注意:
1.一定要是科大讯飞语音转写的APPID以及SecretKey
2.你的音频文件一定要是绝对路径,这里科大讯飞那边需要将你的文件上传到他们的服务端
3.建议调用的方式采用消息队列的方式,方式因回调慢,影响项目的浏览速度
使用非常简单如有问题联系qq:1219481875

代码

class Kdxf{private $lfasr_host = 'http://raasr.xfyun.cn/api';# 请求的接口名private $api_prepare = '/prepare';private $api_upload = '/upload';private $api_merge = '/merge';private $api_get_progress = '/getProgress';private $api_get_result = '/getResult';# 文件分片大小10Mprivate $file_piece_sice = 10485760;# 转写类型private $lfasr_type = 0;# 是否开启分词private $has_participle = 'false';private $has_seperate = 'true';# 多候选词个数private $max_alternatives = 0;# 子用户标识private $suid = '';private $appid;private $secret_key;private $upload_file_path;private $obj;private $data;private $sig;public function __construct($appid,$secret_key) {$this->appid = $appid;$this->secret_key = $secret_key;$this->sig = new Sliceidgenerator();}#主要运行函数public function run($file_path) {$this->upload_file_path = $file_path;if($this->upload_file_path!=''){#预处理$pre_result = json_decode($this->prepare_request(),true);//var_dump($pre_result);die();$taskid = $pre_result['data'];#上传文件$this->upload_request($taskid,$this->upload_file_path);$this->merge_request($taskid);while (true) {$progress = $this->get_progress_request($taskid);$progress_dic = json_decode($progress);if ($progress_dic->err_no != 0 && $progress_dic->err_no != 26605){return;}else{$data = $progress_dic->data;$task_status = json_decode($data);if ($task_status->status == 9){//echo('The task ' . $taskid . ' is in processing, task status: ' . $task_status->desc);//echo "<br />";break;}//echo('The task ' . $taskid . ' is in processing, task status: ' . $task_status->desc);//echo "<br />";//sleep(0.1);}}$data_all=$this->get_result_request($taskid=$taskid);$data_all = json_decode($data_all)->data;$data_all=json_decode($data_all);$message='';for ($i=0;$i<count($data_all);$i++){$message.=$data_all[$i]->onebest;}   $this->data=$message;return $this->data;}}public function get_data() {return $this->data;}public function gene_params($apiname,$taskid="",$slice_id=""){$appid = $this->appid;$secret_key = $this->secret_key;$upload_file_path = $this->upload_file_path;$ts=time();$md5 = md5($appid.$ts);$signa = hash_hmac('sha1',$md5,$secret_key,true);$signa=base64_encode($signa);$file_len = filesize($this->upload_file_path);$file_name = basename($this->upload_file_path);if($apiname== $this->api_prepare){$slice_num = 1;$param_dict['app_id'] = $appid;$param_dict['signa'] = $signa;$param_dict['ts'] = $ts;$param_dict['file_len'] = (string)($file_len);$param_dict['file_name'] = $file_name;$param_dict['slice_num'] = (string)($slice_num);}elseif($apiname== $this->api_upload){$param_dict['app_id'] = $appid;$param_dict['signa'] = $signa;$param_dict['ts'] = $ts;$param_dict['task_id'] = $taskid;$param_dict['slice_id'] = $slice_id;}elseif($apiname == $this->api_merge){$param_dict['app_id'] = $appid;$param_dict['signa'] = $signa;$param_dict['ts'] = $ts;$param_dict['task_id'] = $taskid;$param_dict['file_name'] = $file_name;}elseif($apiname == $this->api_get_progress || $apiname == $this->api_get_result){$param_dict['app_id'] = $appid;$param_dict['signa'] = $signa;$param_dict['ts'] = $ts;$param_dict['task_id'] = $taskid;}return $param_dict;}public function gene_request($apiname, $data, $files='', $headers=''){if($files!=''){$data['content'] =$files['content'];}$jsonStr =$data;if($apiname==$this->api_prepare||$apiname==$this->api_merge||$apiname==$this->api_get_progress||$apiname==$this->api_get_result){$header= array("Content-Type"=>"application/x-www-form-urlencoded;charset=UTF-8",);}if($apiname==$this->api_upload){$header = array("Content-Type"=>"multipart/form-data;",);}$url = $this->lfasr_host . $apiname;$rt=$this->http_post_json($url, $jsonStr, $header);$result = json_decode($rt[1],true);if ($result["ok"] == 0){
//          echo("success:".$apiname);
//          echo "<br />";return $rt[1];}else{return $rt[1];} }# 预处理gene_requestpublic function prepare_request(){return $this->gene_request($apiname=$this->api_prepare,$data=$this->gene_params($this->api_prepare));}#上传public function upload_request($taskid, $upload_file_path){$finfo    = finfo_open(FILEINFO_MIME_TYPE);$mime = finfo_file($finfo, $upload_file_path);finfo_close($finfo);$curlFile = curl_file_create($upload_file_path,$mime,pathinfo($upload_file_path,PATHINFO_BASENAME));$files["filename"] = $this->gene_params($this->api_upload)["slice_id"];$files["content"] = $curlFile;$response = $this->gene_request($this->api_upload,$data=$this->gene_params($this->api_upload, $taskid=$taskid,$slice_id=$this->sig->getNextSliceId()),$files=$files);return $response;}public  function merge_request($taskid){return $this->gene_request($this->api_merge, $data=$this->gene_params($this->api_merge, $taskid=$taskid));}# 获取进度public  function get_progress_request($taskid){return $this->gene_request($this->api_get_progress, $data=$this->gene_params($this->api_get_progress, $taskid=$taskid));}# 获取结果public  function get_result_request($taskid){$result=$this->gene_request($this->api_get_result, $data=$this->gene_params($this->api_get_result, $taskid=$taskid));return $result;}#请求public  function http_post_json($url, $jsonStr,$header){$ch = curl_init();curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HTTPHEADER, $header);$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);return array($httpCode, $response);}
}

http://www.ppmy.cn/news/973722.html

相关文章

为什么学习SpringSpring框架核心与设计思想(IOC与DI)?

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE进阶 目录 文章目录 一、Spring是什么&#xff1f; 二、为什么要学习框架&#xff1f; 三、Spring核心概念 3.1 什么是容器&#xff1f; 3.2 什么是IOC&#xff1f; 四、再谈Spring中的 IOC 五…

移动开发-语音识别-调用讯飞平台提供的API

1 登录讯飞平台&#xff0c;申请账号&#xff0c;创建一个应用 具体步骤可以百度查找 2 进入“我的应用”&#xff0c;下载相应的SDK文件 选择语音听写&#xff08;流式版&#xff09;-> Android MSC 3 打开安卓&#xff0c;新建项目 创建一个EditText和一个Button &…

讯飞语音合成andriod版本

目录直达 1、成员变量声明2、参数设置3、获取离线资源4、语音合成监听5、调用方法合成语音6、在onCreate中初始化合成对象7、添加一个按钮8、按钮按下监听 在离线命令的基础上&#xff0c;我们可以添加语音合成功能&#xff0c;因为讯飞语音合成于离线命令识别有相同的地方&…

python3讯飞语音识别

#!/usr/bin/python # -*- coding: UTF-8 -*- import urllib.parse, urllib.request #这是python3&#xff0c;原先py2里的urllib2或者其他都包含在了py3的urllib里了&#xff0c; # py3里的urllib里的parse和request一定要这么导入&#xff0c;直接import urllib # 是不行的imp…

uniapp - 接入科大讯飞语音评测

欢迎关注微信公众号&#xff1a;FSA全栈行动 &#x1f44b; 一、简介 科大讯飞语音评测可以对字、词、句、篇章等题型进行多维度评分&#xff08;准确度、流畅度、完整度、声韵调型等&#xff09;&#xff0c;支持中文和英文。最新的流式版使用 webSocket 调用接口&#xff0c…

科大讯飞语音接口调用实现语音识别

1. 申请账号及获得AppID等 控制台填写资料 控制台-讯飞开放平台 语音听写的文档及接口说明 语音听写&#xff08;流式版&#xff09;WebAPI 文档 | 讯飞开放平台文档中心 关键信息&#xff1a; 设置参数 业务数据流参数 data 参数名类型必传描述statusint是音频的状态…

Android 讯飞语音识别功能开发

以下代码主要参考博客&#xff1a; Android 科大讯飞语音识别 Android蓝牙串口开发部分请参照博客&#xff1a; Android蓝牙串口开发 讯飞语音官方开发文档&#xff1a; 语音听写 Android SDK 文档 文章目录 前言一、SDK的下载和导入1.SDK的下载2.新建工程3.配置项目a.导包b.权…

讯飞语音 Great!!!

http://www.xfyun.cn/doccenter/awd 开发集成 > Android平台 目录[隐藏] 1 概述2 预备工作3 语音听写4 语音识别5 语音合成6 语义理解7 本地功能集成8 语音评测9 语音唤醒10 声纹识别11 人脸识别12 附录13 常见问题 1 概述 本文档是集成科大讯飞MSC&#xff08;Mobile Speec…