• 讯飞开放平台提供的api
# -*- coding: utf-8 -*-
#
#   author: yanmeng2
#
# 非实时转写调用demoimport base64
import hashlib
import hmac
import json
import os
import timeimport requestslfasr_host = 'http://raasr.xfyun.cn/api'# 请求的接口名
api_prepare = '/prepare'
api_upload = '/upload'
api_merge = '/merge'
api_get_progress = '/getProgress'
api_get_result = '/getResult'
# 文件分片大小10M
file_piece_sice = 10485760# ——————————————————转写可配置参数————————————————
# 参数可在官网界面(https://doc.xfyun.cn/rest_api/%E8%AF%AD%E9%9F%B3%E8%BD%AC%E5%86%99.html)查看,根据需求可自行在gene_params方法里添加修改
# 转写类型
lfasr_type = 0
# 是否开启分词
has_participle = 'false'
has_seperate = 'true'
# 多候选词个数
max_alternatives = 0
# 子用户标识
suid = ''class SliceIdGenerator:"""slice id生成器"""def __init__(self):self.__ch = 'aaaaaaaaa`'def getNextSliceId(self):ch = self.__chj = len(ch) - 1while j >= 0:cj = ch[j]if cj != 'z':ch = ch[:j] + chr(ord(cj) + 1) + ch[j + 1:]breakelse:ch = ch[:j] + 'a' + ch[j + 1:]j = j - 1self.__ch = chreturn self.__chclass RequestApi(object):def __init__(self, appid, secret_key, upload_file_path):self.appid = appidself.secret_key = secret_keyself.upload_file_path = upload_file_path# 根据不同的apiname生成不同的参数,本示例中未使用全部参数您可在官网(https://doc.xfyun.cn/rest_api/%E8%AF%AD%E9%9F%B3%E8%BD%AC%E5%86%99.html)查看后选择适合业务场景的进行更换def gene_params(self, apiname, taskid=None, slice_id=None):appid = self.appidsecret_key = self.secret_keyupload_file_path = self.upload_file_pathts = str(int(time.time()))m2 = hashlib.md5()m2.update((appid + ts).encode('utf-8'))md5 = m2.hexdigest()md5 = bytes(md5, encoding='utf-8')# 以secret_key为key, 上面的md5为msg, 使用hashlib.sha1加密结果为signasigna = hmac.new(secret_key.encode('utf-8'), md5, hashlib.sha1).digest()signa = base64.b64encode(signa)signa = str(signa, 'utf-8')file_len = os.path.getsize(upload_file_path)file_name = os.path.basename(upload_file_path)param_dict = {}if apiname == api_prepare:# slice_num是指分片数量,如果您使用的音频都是较短音频也可以不分片,直接将slice_num指定为1即可slice_num = int(file_len / file_piece_sice) + (0 if (file_len % file_piece_sice == 0) else 1)param_dict['app_id'] = appidparam_dict['signa'] = signaparam_dict['ts'] = tsparam_dict['file_len'] = str(file_len)param_dict['file_name'] = file_nameparam_dict['slice_num'] = str(slice_num)elif apiname == api_upload:param_dict['app_id'] = appidparam_dict['signa'] = signaparam_dict['ts'] = tsparam_dict['task_id'] = taskidparam_dict['slice_id'] = slice_idelif apiname == api_merge:param_dict['app_id'] = appidparam_dict['signa'] = signaparam_dict['ts'] = tsparam_dict['task_id'] = taskidparam_dict['file_name'] = file_nameelif apiname == api_get_progress or apiname == api_get_result:param_dict['app_id'] = appidparam_dict['signa'] = signaparam_dict['ts'] = tsparam_dict['task_id'] = taskidreturn param_dict# 请求和结果解析,结果中各个字段的含义可参考:https://doc.xfyun.cn/rest_api/%E8%AF%AD%E9%9F%B3%E8%BD%AC%E5%86%99.htmldef gene_request(self, apiname, data, files=None, headers=None):response = requests.post(lfasr_host + apiname, data=data, files=files, headers=headers)result = json.loads(response.text)if result["ok"] == 0:print("{} success:".format(apiname) + str(result))return resultelse:print("{} error:".format(apiname) + str(result))exit(0)return result# 预处理def prepare_request(self):return self.gene_request(apiname=api_prepare,data=self.gene_params(api_prepare))# 上传def upload_request(self, taskid, upload_file_path):file_object = open(upload_file_path, 'rb')try:index = 1sig = SliceIdGenerator()while True:content = file_object.read(file_piece_sice)if not content or len(content) == 0:breakfiles = {"filename": self.gene_params(api_upload).get("slice_id"),"content": content}response = self.gene_request(api_upload,data=self.gene_params(api_upload, taskid=taskid,slice_id=sig.getNextSliceId()),files=files)if response.get('ok') != 0:# 上传分片失败print('upload slice fail, response: ' + str(response))return Falseprint('upload slice ' + str(index) + ' success')index += 1finally:'file index:' + str(file_object.tell())file_object.close()return True# 合并def merge_request(self, taskid):return self.gene_request(api_merge, data=self.gene_params(api_merge, taskid=taskid))# 获取进度def get_progress_request(self, taskid):return self.gene_request(api_get_progress, data=self.gene_params(api_get_progress, taskid=taskid))# 获取结果def get_result_request(self, taskid):return self.gene_request(api_get_result, data=self.gene_params(api_get_result, taskid=taskid))def all_api_request(self):# 1. 预处理pre_result = self.prepare_request()taskid = pre_result["data"]# 2 . 分片上传self.upload_request(taskid=taskid, upload_file_path=self.upload_file_path)# 3 . 文件合并self.merge_request(taskid=taskid)# 4 . 获取任务进度while True:# 每隔20秒获取一次任务进度progress = self.get_progress_request(taskid)progress_dic = progressif progress_dic['err_no'] != 0 and progress_dic['err_no'] != 26605:print('task error: ' + progress_dic['failed'])returnelse:data = progress_dic['data']task_status = json.loads(data)if task_status['status'] == 9:print('task ' + taskid + ' finished')breakprint('The task ' + taskid + ' is in processing, task status: ' + str(data))# 每次获取进度间隔20Stime.sleep(20)# 5 . 获取结果self.get_result_request(taskid=taskid)return self.get_result_request(taskid=taskid)# # 注意:如果出现requests模块报错:"NoneType" object has no attribute 'read', 请尝试将requests模块更新到2.20.0或以上版本(本demo测试版本为2.20.0)
# # 输入讯飞开放平台的appid,secret_key和待转写的文件路径
# if __name__ == '__main__':
#     api = RequestApi(appid="", secret_key="", upload_file_path=r"")
#     api.all_api_request()
  • 自己写的call程序
#/usr/bin/python
# coding=utf-8
import jiekou
import json
import osfiles = []
for i in os.listdir(r'C:\Users\CMIC\Desktop\1'):tmp = os.path.join('C:\\Users\CMIC\Desktop\\1', i)files.append(tmp)result_file = r'C:\Users\CMIC\Desktop\a\1.txt'
a = 1
for f in files:print(str(a)+'\t'+f)a = a+1api = jiekou.RequestApi(appid='5f5b186', secret_key='f9b51a563459fe00aabeb8171592c9', upload_file_path=f)return_result = api.all_api_request()tmp_result = []content = return_result['data']content = eval(content)for idx in range(len(content)):tmp_result.append(content[idx]['onebest'])final_result = ''.join(tmp_result)short_file_name = f.split('1\\')r = short_file_name[1]+'|'+final_result+'\n'print(r)with open(result_file, 'a') as file:file.write(r)file.close()

调用讯飞开放平台的语音转写api相关推荐

  1. 【NLP】Pyhon+讯飞开放平台:​手把手带你写一个智能语音播报系统

    手把手带你写一个智能语音播报系统. 微信扫码登陆讯飞开放平台:https://www.xfyun.cn/ 完成个人认证. 在控制台创建应用,注意应用名称全库查重,很容易跟别人重复. 可查看到pytho ...

  2. Python:【4】利用讯飞开放平台实现语音识别

    今天出于兴趣,利用Python+讯飞平台API实现了上传语音文件,转化为txt文档的功能. 需要先在讯飞开放平台进行实名,认证成为开发者后,可以购买免费的"语音转写"服务时长. 讯 ...

  3. 【语音智能平台】京东Alpha VS 讯飞开放平台 (一)

    前言 语音助手作为一种便捷的交互形式,各家厂商一直很看好. 手机端的语音助手,比如苹果的Siri.小米的小爱同学,一直在保持不断进步. 智能音箱作为除了手机之外的另一个重要的物联网入口,也成为了兵家必 ...

  4. 讯飞开放平台七夕福利

    世界上最远的距离 是我在if里 妹子在else里 虽然经常一起出现 但却永不结伴执行 为了过好今年的七夕 终于注册了交友网站 从黑夜刷到天明 妹子没约到 页面的bug找到不少 鼓足勇气和心仪的女神搭讪 ...

  5. 30行代码消费腾讯人工智能开放平台提供的自然语言处理API

    腾讯人工智能AI开放平台上提供了很多免费的人工智能API,开发人员只需要一个QQ号就可以登录进去使用. 腾讯人工智能AI开放平台的地址:https://ai.qq.com/ 里面的好东西很多,以自然语 ...

  6. 【语音智能平台】京东Alpha VS 讯飞开放平台 (二)

    前言 上篇文章 https://blog.csdn.net/diandianxiyu_geek/article/details/80741657 ,我们分析了这两个平台能做什么. 本篇文章,主要是分析 ...

  7. 【练一下1】糖尿病遗传风险检测挑战赛 【讯飞开放平台】

    文章目录 完成coggle任务 任务1:报名比赛 步骤1:报名比赛http://challenge.xfyun.cn/topic/info?type=diabetes&ch=ds22-dw-z ...

  8. 腾讯AI开放平台的接口调用指南

    最近无意发现腾讯AI开放平台上提供了大量好玩的人工智能云服务,而且是完全免费的.只需要用QQ号登录即可.这么好的东西,作为一个程序员,当然要试试了! 从上图可以看出腾讯AI开放平台提供的人工智能服务主 ...

  9. 讯飞能力平台语音识别ASR接口,AIUI接口问题

    讯飞能力平台开发者,之前产于所有的开发测试,ASR接口包括AIUI接口我全部了解的,有不懂的可以评论留言,我一一回复,不需要走工单. 中文站 新手指南 文档中心 SDK下载 乐享会员 财务中心 控制台 ...

  10. 腾讯AI开放平台使用尝试:代理后的文本翻译API使用方式

    这篇文章介绍一下如何结合代理服务器使用腾讯AI开放平台提供的文本翻译API. 目录 事前准备 请求参数 返回格式 示例代码 使用示例 常见问题 结果确认 总结 参考内容 事前准备 实现需要申请申请账号 ...

最新文章

  1. “黑”掉神经网络:腾讯披露新型AI攻击手法,主流机器学习框架受影响
  2. awt简单应用 panel面板
  3. 计算属性一般是没有set方法, 只读属性 ||计算属性的缓存
  4. 刷固件Layer1到手机FLASH(硬刷)
  5. Linux+DDoS deflate 预防DDoS
  6. 【最详细解析】1070 结绳 (25分)_18行代码AC
  7. 如何使用SAP UI5 Web Component for React的padding功能
  8. 如何在Hybris commerce里创建一个media对象
  9. redis+lua现实游戏中的一些常用功能
  10. 加拿大11年级计算机课程代码,加拿大高中选课那些事儿
  11. 在C#中什么时候用分号?
  12. springAOP 之 前置输出
  13. Yann Martell《少年 pi 的奇幻漂流》
  14. web sql indexedDB
  15. C++ 在控件上使用科学记数法输出数据
  16. 瑞盟高精度模数转换器,MS1242,MS1243,
  17. golang游戏服务器项目,基于Golang的游戏服务器框架cellnet开发日记(一)
  18. LVM挂盘的详细操作
  19. 嵌入式数据库架构特点
  20. 解决安装新版Qt Creator 后Kits无配置信息的问题

热门文章

  1. 红外线解码 VS1838B接头 12864液晶 51单片机 合众之星万能遥控器
  2. 谷歌浏览器html5插件怎么设置,怎么在谷歌浏览器上安装react插件
  3. matlab 另存为excel_将matlab数据保存为excel文件
  4. bak 服务器备份文件怎么恢复,bak文件怎么还原
  5. win7下强制结束进程的cmd命令
  6. 田洪川(天轰穿)老师谈.NET学习:将励志和教学结合起来
  7. Android 用代码获取基站号(cell)和小区号(lac)
  8. matlab实现卷积编码'适合小白理解学习'
  9. 最热BMS可直接下载!!
  10. 投影仪是计算机的基本配置吗,投影仪如何设置