我的工具箱——语音识别(一句话识别)

语音识别(一句话识别)

要求

技术处理

  • 音频转码处理

    1. 音频要求

      • 支持音频编码格式:pcm(无压缩的pcm文件或wav文件)、opus,16bit采样位数的单声道(mono);
      • 支持音频采样率:8000Hz、16000Hz;
      • 支持对返回结果进行设置:是否返回中间识别结果,是否在后处理中添加标点,是否将中文数字转为阿拉伯数字输出。
    2. 转码方案

      首先想到的是神器 ffmpeg ,然而这哥们异常的不好用,操作不方便,在服务器上安装的时候贼麻烦。后来重新明确了需求,我们主要是需要对音频进行转换格式即转换音频格式到wav格式、转换音频的采样率和转换音频的声道。故我们使用了比较合适的轻量级工具 SOX (Sound eXchange),贼好用,教程在下方

转换代码:

     		String cmd1 = "lame "+ file + " " + name+".wav --decode";
            Process exec1 = Runtime.getRuntime().exec(cmd1);
            exec1.waitFor();
            String cmd2 = "sox " + name +".wav -r 16000 -c 1 "+name+"_tras.wav";
            Process exec2 = Runtime.getRuntime().exec(cmd2);
            exec2.waitFor();

  • 阿里云接口处理

    1. 这里阿里云接口的API的交互流程图

      阿里云接口的API的交互流程图

    2. . API接口代码

/**
 * SpeechRecognizerDemo class
 *
 * 一句话识别Demo
 */
public class SpeechRecognizerDemo {
   
    private String appKey;
    private String accessToken;
    NlsClient client;
    /**
     * @param appKey
     * @param token
     */
    public SpeechRecognizerDemo(String appKey, String token) {
   
        this.appKey = appKey;
        this.accessToken = token;
        // Step0 创建NlsClient实例,应用全局创建一个即可,默认服务地址为阿里云线上服务地址
        client = new NlsClient(accessToken);
    }
    private static SpeechRecognizerListener getRecognizerListener() {
   
        SpeechRecognizerListener listener = new SpeechRecognizerListener() {
   
            // 识别出中间结果.服务端识别出一个字或词时会返回此消息.仅当setEnableIntermediateResult(true)时,才会有此类消息返回
            @Override
            public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值