admin 管理员组

文章数量: 887006

一、腾讯语音识别—一句话语音识别

1、账号申请

(1)搜索腾讯云官网

https://cloud.tencent/?fromSource=gwzcw.2212127.2212127.2212127&utm_medium=cpd&utm_id=gwzcw.2212127.2212127.2212127

(2)打开语音识别

腾讯云语音识别(Automatic Speech Recognition,ASR)为开发者提供语音转文字服务的最佳体验。经公司内部微信、QQ 、腾讯视频、王者荣耀等大体量业务落地验证,日服务亿级用户,性能稳定。腾讯语音识别技术开放实时语音识别、一句话识别和录音文件识别服务,满足不同类型开发者需求。除公有云接入外,腾讯语音识别技术也支持私有化部署。

小编:微信和王者荣耀的语音识别还是很强大的,其它的虽然并不清楚

(3)先来看下语音识别的接口文档

![1552371855329](C:\Users\lichuanran\AppData\Roaming\Typora\typora-user-images\15523718

1>通过post请求来发送语音数据,从而得到结果

2>请求大小不能超过600k

​ 超过600k不会报错,但是识别时长会有点长

3>音频时长不可超过60s

4>支持音频格式 wav 、mp3

5>比特率128k或者256k

​ 256k比128k保存的数据更具体,对应的文件大小也更大

6>音频流的采样率8000或者16000 (单位时间内有多少数据来描述采样点)

​ 分别对应接口文档的EngSerViceType(引擎类型)的8K或者16k

​ 16000的采样率识别准确率比8000采样率更高

7>请求频率25次/s

​ 使用多线程进行死循环发现,达到25次/s会把请求延迟一点,并不会报错

8>单声道

注:下文小编会介绍怎么把 任意一个音频文件 转换为一个 符合腾讯云识别标准 的音频文件

2、java 实现语音识别

(1)下载SDK

​ https://cloud.tencent/document/product/441/19814

1>打开SDK会发现有两个类 SASRsdk 和 SASRtest 一个wav格式的语音文件

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.File;
import java.io.FileInputStream;
import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;
import java.net.URLEncoder;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.BufferedReader;
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.InputStreamReader;

public class SASRsdk {
   
    private static String SecretId, SecretKey, EngSerViceType, SourceType, VoiceFormat, fileURI;
public static String formSignstr(String serverUrl, Map<String, String> mapReq) {
   
    StringBuilder strBuilder = new StringBuilder(serverUrl);

    // to make that all the parameters are sorted by ASC order
    TreeMap<String, String> sortedMap = new TreeMap(mapReq);

    for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
   
        strBuilder.append(entry.getKey());
        strBuilder.append('=');
        strBuilder.append(entry.getValue());
        strBuilder.append('&');
    }

    if (mapReq.size() > 0) {
   
        strBuilder.setLength(strBuilder.length() - 1);
    }

    //System.out.println("sign str: " + strBuilder);

    return strBuilder.toString();
}

public static String formPostbody(Map<String, String> mapReq) {
   
    StringBuilder stringBuilder = new StringBuilder();
    // to make that all the parameters are sorted by ASC order
    TreeMap<String, String> sortedMap = new TreeMap(mapReq);
    for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
   
        try {
   
            stringBuilder.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            stringBuilder.append('=');
            stringBuilder.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
            stringBuilder.append('&');
        } catch (UnsupportedEncodingException e) {
   
            e.printStackTrace();
        }
    }
    return stringBuilder.toString();
}

public static String base64_hmac_sha1(String value, String keyStr) {
   
    String encoded = "";
    String type = "HmacSHA1";
    try {
   
        byte[] key = (keyStr).getBytes("UTF-8");
        byte[] Sequence = (value).getBytes("UTF-8");

        Mac HMAC = Mac.getInstance(type);
        SecretKeySpec secretKey = new SecretKeySpec(key, type);

        HMAC.init(secretKey);
        byte[] Hash = HMAC.doFinal(Sequence)

本文标签: 腾讯 语音识别 讯飞