首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云 实时语音识别介绍及其Android SDK Demo搭建

腾讯云 实时语音识别介绍及其Android SDK Demo搭建

原创
作者头像
HI hero
修改2020-08-03 15:39:29
5.1K0
修改2020-08-03 15:39:29
举报

实时语音识别API地址:https://cloud.tencent.com/document/product/1093/35799


接口地址:http://asr.cloud.tencent.com/asr/v1/<appid>?{请求参数}

接口形式:HTTP RESTful

请求前准备:AppID、SecretID 和 SecretKey

语音数据请求相关

  • POST

请求URL

http://asr.cloud.tencent.com/asr/v1/<appid>?
projectid=xxx&
sub_service_type=xxx&
engine_model_type=xxx&
result_text_format=xxx&
res_type=xxx&
voice_format=xxx&
secretid=xxx&
timestamp=xxx&
expired=xxx&
needvad=xxx&
nonce=xxx&
seq=xxx&
end=xxx&
source=xxx&
voice_id=xxx&
timeout=xxx
请求头部

请求头部,包括 Host,Authorization,Content-Type,Content-Length 四个参数

请求正文

请求正文主要包含实时语音识别的数据,每个数据包的音频分片最大不能超过200KB。

注意事项

  • QPS:50qps
  • 支持语种:中文普通话、英语、粤语。
  • 音频格式:wav、pcm、opus、speex、silk、mp3。采样率:16000Hz或8000Hz、采样精度:16bits、声道:单声道
  • 签名:非V3签名,单独的签名:https://cloud.tencent.com/document/product/1093/35799#sign
  • 数据包音频分片大小:不超过200kb

Android关于使用实时语音识别SDK使用及代码分析

准备工作

  • android studio 开发工具
  • android 环境 (java14)
  • Tencent 云 语音识别产品开通后,秘钥

一、下载与安装

1. 下载地址 : https://cloud.tencent.com/document/product/1093/35722

下载地址
下载地址

2. 解压包,获取 QCloudSDK_Realtime_Android-model 文件夹中src目录作为实际项目目录

存放项目目录
存放项目目录
项目根目录
项目根目录

3. android studio 打开 项目

ERROR1:项目环境配置错误,需要制定本地配置的SDK目录等

环境配置报错
环境配置报错

解决方案:

打开项目结构
打开项目结构
设置环境目录 SDK  JRE ndk 存放目录
设置环境目录 SDK JRE ndk 存放目录

ERROR2 : build.gradle 报红问题,类库未更新或者类库未加载

报红问题
报红问题

解决方式:

1. 更新类库

项目结构中

更新类库(应用->确定)
更新类库(应用->确定)

2.加载类库(Dependency列表不存在,即类库不存在时)

加载位置
加载位置
示例(搜索gson类库,并加载)
示例(搜索gson类库,并加载)

代码分析及其配置调整

  • 更改配置 src > main > java > com.xxx > CommonConst 新版本SDK配置在MainActivity.java的onCreate中写入
package com.tencent.aaifortest;

/**
 */
public class CommonConst {

    public static final String appid = "您的appid";

    public static final String projectId = "projectId";//没有可以填0

    public static final String secretId = "您的secretId";

    public static final String secretKey = "您的secretKey";

    public static final String config = "config";//不用填

}
  • 依赖权限 AndroidManifest.xml
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • 实时音频识别功能代码文件 MainActivity.java介绍
    @Override
    protected void onCreate(Bundle savedInstanceState){
    ...
        // 用户配置:需要在控制台申请相关的账号;
        final int appid = 1257709062;
        final int projectId = 0;
        final String secretId = "";
        final String secretKey = "";
    ...
        // 识别结果回调监听器, 用来监听语音识别的结果,共有如下四个接口:
        final AudioRecognizeResultListener audioRecognizeResultlistener = new AudioRecognizeResultListener() {

            boolean dontHaveResult = true;

            /**
             * 返回分片的识别结果
             * @param request 相应的请求
             * @param result 识别结果
             * @param seq 该分片所在语音流的序号 (0, 1, 2...)
             */
            @Override
            public void onSliceSuccess(AudioRecognizeRequest request, AudioRecognizeResult result, int seq) {
                ...
            }

            /**
             * 返回语音流的识别结果
             * @param request 相应的请求
             * @param result 识别结果
             * @param seq 该语音流的序号 (1, 2, 3...)
             */
            @Override
            public void onSegmentSuccess(AudioRecognizeRequest request, AudioRecognizeResult result, int seq) {
                 ...
            }

            /**
             * 识别结束回调,返回所有的识别结果
             * @param request 相应的请求
             * @param result 识别结果
             */
            @Override
            public void onSuccess(AudioRecognizeRequest request, String result) {
                ...
            }

            /**
             * 识别失败
             * @param request 相应的请求
             * @param clientException 客户端异常
             * @param serverException 服务端异常
             */
            @Override
            public void onFailure(AudioRecognizeRequest request, final ClientException clientException, final ServerException serverException) {
                 ...
            }
        };
        
         /**
         * 识别状态监听器
         */
        final AudioRecognizeStateListener audioRecognizeStateListener = new AudioRecognizeStateListener() {

            /**
             * 开始录音
             * @param request
             */
            @Override
            public void onStartRecord(AudioRecognizeRequest request) {
                ...
            }

            /**
             * 结束录音
             * @param request
             */
            @Override
            public void onStopRecord(AudioRecognizeRequest request) {
                ...
            }

            /**
             * 第seq个语音流开始识别
             * @param request
             * @param seq
             */
            @Override
            public void onVoiceFlowStartRecognize(AudioRecognizeRequest request, int seq) {
                ...
            }

            /**
             * 第seq个语音流结束识别
             * @param request
             * @param seq
             */
            @Override
            public void onVoiceFlowFinishRecognize(AudioRecognizeRequest request, int seq) {
                ...
            }

            /**
             * 第seq个语音流开始
             * @param request
             * @param seq
             */
            @Override
            public void onVoiceFlowStart(AudioRecognizeRequest request, int seq) {
                ...
            }

            /**
             * 第seq个语音流结束
             * @param request
             * @param seq
             */
            @Override
            public void onVoiceFlowFinish(AudioRecognizeRequest request, int seq) {
                ...
            }

            /**
             * 语音音量回调
             * @param request
             * @param volume
             */
            @Override
            public void onVoiceVolume(AudioRecognizeRequest request, final int volume) {
                ...
            }
        };
        ...
        //绑定点击事件
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                AAILogger.info(logger, "the start button has clicked..");
                resMap.clear();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        //   start.setEnabled(false);
                    }
                });
                // 2、初始化语音识别请求。
                AudioRecognizeRequest.Builder builder = new AudioRecognizeRequest.Builder();
                //File file = new File(Environment.getExternalStorageDirectory()+"/tencent_aai____/audio", "1.pcm");

                boolean isSaveAudioRecordFiles=false;//默认是关的 false
                // 初始化识别请求
                final AudioRecognizeRequest audioRecognizeRequest = builder
//                        .pcmAudioDataSource(new AudioRecordDataSource()) // 设置数据源
                        .pcmAudioDataSource(new AudioRecordDataSource(isSaveAudioRecordFiles)) // 设置数据源
                        //.templateName(templateName) // 设置模板
                        .template(new AudioRecognizeTemplate(EngineModelType.EngineModelType16K.getType(),0,0)) // 设置自定义模板
                        .setFilterDirty(0)  // 0 :默认状态 不过滤脏话 1:过滤脏话
                        .setFilterModal(0) // 0 :默认状态 不过滤语气词  1:过滤部分语气词 2:严格过滤
                        .setFilterPunc(0) // 0 :默认状态 不过滤句末的句号 1:滤句末的句号
                        .setConvert_num_mode(1) //1:默认状态 根据场景智能转换为阿拉伯数字;0:全部转为中文数字。
//                        .setHotWordId("")//热词 id。用于调用对应的热词表,如果在调用语音识别服务时,不进行单独的热词 id 设置,自动生效默认热词;如果进行了单独的热词 id 设置,那么将生效单独设置的热词 id。
                        .build();

                // 自定义识别配置
                //设置语音识别参数
                //通过构建 AudioRecognizeConfiguration 类,可以设置语音识别时的配置:
                final AudioRecognizeConfiguration audioRecognizeConfiguration = new AudioRecognizeConfiguration.Builder()
                        .setSilentDetectTimeOut(true)// 是否使能静音检测,true表示不检查静音部分
                        .audioFlowSilenceTimeOut(5000) // 静音检测超时停止录音
                        .minAudioFlowSilenceTime(2000) // 语音流识别时的间隔时间
                        .minVolumeCallbackTime(80) // 音量回调时间
                        .sensitive(2.5f)
                        .build();

                if (aaiClient==null) {
                    try {
                        /**
                         * AAIClient 是语音服务的核心类,用户可以调用该类来开始、停止以及取消语音识别。
                         * context 上下文
                         * ...
                         * credentialProvider 鉴权类
                         * 如果 aaiClient 不再需要使用,请调用 release() 方法释放资源:
                         */
                        aaiClient = new AAIClient(MainActivity.this, appid, projectId, secretId,secretKey ,credentialProvider);
                    } catch (ClientException e) {
                        e.printStackTrace();
                        AAILogger.info(logger, e.toString());
                    }
                }
                //currentRequestId = audioRecognizeRequest.getRequestId();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        aaiClient.startAudioRecognize(audioRecognizeRequest, audioRecognizeResultlistener,
                                audioRecognizeStateListener, audioRecognizeTimeoutListener,
                                audioRecognizeConfiguration);

                    }
                }).start();

            }
        });
        ...
    }
  • 使用效果展示
填写后启动
填写后启动
启动后开始实时语音识别效果
启动后开始实时语音识别效果

这篇文章对您有帮助的话,记得给小编点个赞 !!!!!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接口地址:http://asr.cloud.tencent.com/asr/v1/<appid>?{请求参数}
    • 语音数据请求相关
      • 注意事项
      • Android关于使用实时语音识别SDK使用及代码分析
      • 代码分析及其配置调整
      • 这篇文章对您有帮助的话,记得给小编点个赞 !!!!!
      相关产品与服务
      语音识别
      腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档