今天整了一下语音转文字(SDK)方式 写了个demo 总体来说还不错 还算顺利 记录一下踩的小坑 问题也都不打 讯飞官网提供的demo可以说很全面了 包括整体流程 工具类 生成各种参数的方法也都很全 我是一个1年经验的小白 我从未停止进步
首先 我们需要去官网注册一个讯飞的账号 我们需要一个appId 和一个APISecret
这是我当时申请的的 大家可以参考一下
APPID:5f03d**
APISecret: b9****ee8604545d5ad5672c1f6e0eba
然后申请下来之后 就可以开始写demo了
首先 讯飞的语音转文字总共分成5步操作
分别包括以下接口: 预处理、 文件分片上传、 合并文件、 查询处理进度、 获取结果。
- 预处理 /prepare:
- 文件分片上传 /upload:
- 合并文件 /merge:
- 查询处理进度 /getProgress:
- 获取结果 /getResult:
基础路由http://raasr.xfyun.cn/api
第一步: 预处理
预处理功能是要校验文件的 格式 大小 字节 是否符合转换的标准 他的入参是有十多个 必填的一共有6个
这里就不多bb了 每个入参的意思 是什么 上图都有 贴下我的代码
这里的file_len参数是需要一个文件的大小 由于我在调用方也需要文件的一些信息 所以我就当做参数传进来了 然后 slicenum的生成标准按照我的写就好 调用方就是直接new了一个实例 这里的返回值是我截取的下边流程需要用的task_id getMap方法我贴一下 主要是获取他们5个公共的参数 encryptKey就是上边的APISecret
这里就是new对象调用了一下预处理对象的构造方法 第一步就这么点东西 下面看第二步
也是先写好了第二步调用讯飞接口的方法 还有参数的获取 到后面总体按照流程调用12345步的方法就好
第一步如果成功的话 返回值是这样的
第二步:分片上传文件
也没什么坑 需要注意的就是这个task_id 这个task_id是第一步预处理返回来的 下边的所有流程都需要这个id 并且要一样 ShardGeneration类
调用方逻辑比较复杂一点
这里的大概意思就是 先创建一个输入流 然后创建一个数组 for循环后边的对象可以忽略 直接进行分片大小判断 如果大于0的话 调用第二步方法 上传分片 如果关联文件==0的话 slice置为0
第三步:合并文件
一丢丢难点没有
调用的话也是非常的清新脱俗
第四步:查询上传文件进度
这里的ApiResultDto是返回的JSON映射成的实体 贴一下吧
调用是通过循环来调用 直到返回结果为完成或者失败的时候 退出循环
第五步: 查询转换结果
如果大家有任何不懂得可以加我的qq问我 或者是要转换的文件 也可以联系我的qq
474447317
谢谢支持 谢谢观看