autojs之语音识别

使用情景

 

手机实现语音识别

 

效果展示

 

买几个橘子.jpg

 

原理

 

使用讯飞webpai调用讯飞的语音转写服务

 

难点

 

上传语音文件

 

你将学到以下知识

 

  1. 给讯飞发送语音文件
  2. 分片序号的生成
  3. 计算签名
  4. HmacSHA1加密
  5. 10位时间戳, 不要科学记数法
  6. 另类的文件上传方式

 

代码讲解

 

  1. 导入java类

 

importClass(java.io.UnsupportedEncodingException);
importClass(java.security.InvalidKeyException);
importClass(java.security.MessageDigest);
importClass(java.security.NoSuchAlgorithmException);
importClass(java.security.SignatureException);
importClass(javax.crypto.Mac);
importClass(javax.crypto.spec.SecretKeySpec);

 

  1. 初始化所有的参数, APPIDSECRET_KEY请改为自己的.

 

const APPID = "XXX";
const SECRET_KEY = "XXX";
let filepath = "/sdcard/1.mp3";
let lfasr_host = "http://raasr.xfyun.cn/api";
// # 请求的接口名
let api_prepare = "/prepare";
let api_upload = "/upload";
let api_merge = "/merge";
let api_get_progress = "/getProgress";
let api_get_result = "/getResult";

 

  1. 预处理

 

const taskId = prepare();

 

  1. 文件分片上传

 

upload();

 

  1. 合并文件

 

merge();

 

  1. 查询处理进度

 

for (var i = 0; i < 10; i++) {
  let r = getProgress();
  if (r) {
    break;
  } else {
    log("服务器正常按照排队识别语音, 请稍后");
  }
  sleep(5000);
}

 

  1. 获取结果

 

let result = getResult();
log(result);

 

签名计算过程

function HmacSHA1Encrypt(encryptText, encryptKey) {
  let rawHmac;
  encryptText = java.lang.String(encryptText);
  encryptKey = java.lang.String(encryptKey);
  let data = encryptKey.getBytes("UTF-8");
  let secretKey = new SecretKeySpec(data, "HmacSHA1");
  let mac = Mac.getInstance("HmacSHA1");
  mac.init(secretKey);
  let text = encryptText.getBytes("UTF-8");
  rawHmac = mac.doFinal(text);
  let oauth = android.util.Base64.encodeToString(rawHmac, 2);
  return oauth;
}

 

查看项目代码

 


微信公众号 AutoJsPro教程

 

officialaccount.jpg

 

QQ群

 

747748653

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙叔教程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值