专栏首页技术拓展与说明腾讯云 实时语音识别介绍及其Android SDK Demo搭建
原创

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

实时语音识别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 存放目录

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

报红问题

解决方式:

1. 更新类库

项目结构中

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

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

加载位置
示例(搜索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();

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS 音视频接入 - 初识TRTC

    在上一篇文章中我们对音视频有了最基础的认识,下面就来了解下第三方提供的功能强大的实时音视频SDK-TRTC。

    小明同学接音视频
  • 产品双月刊 | 腾讯云音视频TRTC&IM&TPNS(2021年5月-7月)

    ? 近期,腾讯云TRTC、IM和TPNS有哪些 重大发布? 他又带给我们了哪些 惊喜 ? 请跟随我们的脚步一起来回顾! ? ? 「 即时通信 IM 」 功能1...

    腾讯云音视频
  • 腾讯云语音识别之实时语音识别

    实时语音识别 Android SDK 及 Demo 下载地址:Android SDK。

    算法发
  • 实时音视频 TRTC Flutter SDK 上线!

    导语 Flutter 是目前最火的跨平台技术,在提供极好的用户体验的同时能解决多端一致性的问题,而且还能有效地降低人力成本。 Flutter 是什么? Flu...

    腾讯即时通信IM
  • 【大数据分析必备】超全国内常用API接口汇总

    下面列举了100多个国内常用API接口,并按照 笔记、出行、词典、电商、地图、电影、即时通讯、开发者网站、快递查询、旅游、社交、视频、天气、团队协作、图片与图像...

    IT派
  • 【数据】常用API接口汇总

    下面列举了100多个国内常用API接口,并按照 笔记、出行、词典、电商、地图、电影、即时通讯、开发者网站、快递查询、旅游、社交、视频、天气、团队协作、图片与图像...

    陆勤_数据人网
  • TRTC Flutter 支持四大场景快速接入!

    ? 导语 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台应用,支持Android、IOS、Web、Linux ...

    腾讯云音视频
  • 一杯咖啡的时间,集成短视频功能

    短视频在近两年从一个爆点逐渐转为一个常态,不论是娱乐交友、在线教育、产品评测还是美食分享,各类应用都加入了丰富多彩的视频内容,短视频正逐步取代原有的信息分享方式...

    腾讯云音视频
  • 移动直播技术知多少:基础原理解析 & 腾讯云直播接入

    2020 年,由于新型冠状病毒疫情的爆发,视频直播互动更是一飞冲天,在网购、游戏、教育、金融等等方面都呈现爆发式发展。

    开发的猫
  • 产品上新丨腾讯云即时通信 IM 又更新了!Unity IM SDK 正式上线!

    导语 随着 5G、AI、AR/VR/MR 等领域的迅速发展,即使是普通游戏,游戏玩家对画质和性能也提出了更高要求,这也加速了游戏引擎底层技术的演进和迭代。 0...

    腾讯即时通信IM
  • 【玩转腾讯云】游戏多媒体引擎的体验与开发(一)

    腾讯云游戏多媒体引擎(Game Multimedia Engine,GME)提供高质量低成本的一站式语音解决方案,全面覆盖游戏、社交、娱乐、直播、电商等多种泛互...

    LittleU
  • 彻底替代flash推流:腾讯云这套直播SDK有哪些优势?

    导语 | 腾讯云 Web 直播互动组件——TWebLive,是腾讯云终端研发团队推出的一个新的 SDK,开发者只需简单接入,就能快速实现 Web推/拉流、实时...

    腾讯即时通信IM
  • 最佳实践丨基于 TRTC 和 IM 实现 Web 群直播

    导语 本文主要通过介绍网页版群直播基础功能和实现流程来告诉大家 TWebLive 能用来做什么,如何把 TWebLive集成到项目中 。 Web 群直播和微信...

    腾讯即时通信IM
  • 腾讯云语音识别iOS SDK引入介绍

    腾讯云的众多产品都提供了iOS SDK供开发者使用,如何成功调用接口是很多开发者在初次使用腾讯云服务的时候都会面临的问题,以下,我们以调用腾讯云语音识别产品为例...

    Aalto
  • 智能云上手指南:实时流式语音识别 iOS SDK

    本文将为大家讲解如何上手腾讯云提供的智能语音识别服务中的实时流式语音识别,主要是 iOS 开发 SDK 的一些使用经验。

    云加社区
  • 如何用腾讯云打造一款微视频 APP

    本文主要讲解了如何将腾讯云提供的音视频上传下载、万象优图图片存储以及处理(缩放、裁剪、水印)等功能集成到了APP和业务端服务器中,打造一款微视频APP。

    云加创业小助手
  • 腾讯云实时语音识别-iOS SDK

    AppID、SecretID 和 SecretKey等个人信息填入,否则无法运行Demo(需要在语音识别控制台开通服务,并进入API 密钥管理页面新建密钥,生成...

    许岳操
  • 杨婷:腾讯云在线教育解决方案分享

    首先为大家介绍一下培训机构的运营框架。首先是优质的教育内容,培训要有核心的内容。有了核心内容后,就要有在线教育平台。有了平台后需要招生,就涉及到营销。有了内容、...

    云加社区技术沙龙
  • 腾讯云语音识别之录音文件识别

    录音文件识别API介绍地址:https://cloud.tencent.com/document/product/1093/37822

    袁伦桥

扫码关注云+社区

领取腾讯云代金券