腾讯云语音识别之录音文件识别

2020-07-26 16:36:32 浏览数 (1)

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


Action : CreateRecTask

获取结果方式

录音文件识别在线API具备2种方式获取识别结果,均为异步

  • 回调

通过设置请求参数CallbackUrl开启回调获取结果,轮循此参数不填。(用户自行搭建的用于接收识别结果的服务器地址)

  • 轮循

提交请求后,获取响应中反馈的TaskId,向接口(Action:DescribeTaskStatus)提交任务ID来轮询识别结果(任务成功、等待、执行中和失败)

轮循任务结果示例:

代码语言:javascript复制
{
  "Response": {
    "RequestId": "8824366f-0e8f-4bd4-8924-af5e84127caa",
    "Data": {
      "TaskId": 522931820,
      "Status": 2,
      "StatusStr": "success",
      "Result": "[0:0.000,0:2.260,0]  腾讯云语音识别欢迎您。n",
      "ErrorMsg": ""
    }
  }
}

语音数据传输方式及其限制

  • url

设置SourceType参数为0后,Url参数中传输

限制:音频时长不能长于5小时,文件大小不超过512MB

  • post body

设置SourceType参数为1后,Data参数中传输

限制:大小不超过5MB


注意

  • 语种:中文普通话、英语和粤语,通过EngineModelType参数设定
  • 格式:支持wav、mp3、m4a的音频格式
  • QPS:20qps

Android关于使用录音识别SDK演示

SDK地址:https://cloud.tencent.com/document/product/1093/38351

获取到压缩包,sdk demo获取src下级目录 QCloudSDKOneSentenceDemo 作为项目根目录

目录目录

设置编辑器环境

ERROR:

配置错误配置错误

解决方案:编辑中:文件->项目结构 中设置SDK、NDK、JDK 的 Path

项目结构项目结构

更新扩展

在Dependencies中更新扩展,选中app(当前项目),查看当前app下所有扩展,是否需要更新(波浪线代表需要更新版本),点击Update进行更新,无则不更新.

更新扩展更新扩展

设置项目秘钥配置 DemoConfig.java

秘钥配置文件秘钥配置文件

设定项目相关权限集

Path:app > src > main > AndroidManifest.xml

代码语言:javascript复制
    <!--网络权限-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 相机硬件的权限 -->
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!-- 录音的权限 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 

录音文件识别功能代码文件 FileRecognizeActivity.java介绍

代码语言:javascript复制
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        setContentView(R.layout.activity_file_sentence_recognize);


        RotateLoading rotateLoading = findViewById(R.id.rotateloading);
        rotateLoading.setLoadingColor(Color.parseColor("#FF79CD6E"));
        if(!checkMyPermission(permiss)){
            ActivityCompat.requestPermissions(this,permiss, REQUEST_CODE);
        }
        //读取秘钥配置
        if (fileRecognizer == null) {
            fileRecognizer = new QCloudFileRecognizer(DemoConfig.apppId, DemoConfig.secretId, DemoConfig.secretKey);
            //设置识别结果回调
            fileRecognizer.setCallback(this);
        }
        System.out.println(Thread.currentThread());
        //通过setOnClickListener绑定按钮recognize(url)点击事件请求URL方式传递文件访问录音文件识别接口
        findViewById(R.id.recognize_ur_btn).setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                try {
                    showLoading(true);
                    QCloudFileRecognitionParams params = (QCloudFileRecognitionParams) QCloudFileRecognitionParams.defaultRequestParams();
                    params.setUrl("http://client-sdk-1255628450.cossh.myzijiebao.com/test audio/voice_WGVNG_8000.mp3");
                    params.setSourceType(QCloudSourceType.QCloudSourceTypeUrl);
                    params.setFilterDirty(0);// 0 :默认状态 不过滤脏话 1:过滤脏话
                    params.setFilterModal(0);// 0 :默认状态 不过滤语气词  1:过滤部分语气词 2:严格过滤
                    params.setConvertNumMode(1);//1:默认状态 根据场景智能转换为阿拉伯数字;0:全部转为中文数字。
//                    params.setHotwordId("");  // 热词id。用于调用对应的热词表,如果在调用语音识别服务时,不进行单独的热词id设置,自动生效默认热词;如果进行了单独的热词id设置,那么将生效单独设置的热词id。
                    fileRecognizer.recognize(params);
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("exception msg"   e.getMessage());
                } finally {
                }
            }
        });

        //通过setOnClickListener绑定按钮recognize(data)点击事件方式,通过data参数传递本地录音文件数据请求录音文件识别接口
        findViewById(R.id.recognize_ur_data).setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                InputStream is = null;
                try {
                    showLoading(true);
                    //转化本地录音文件为base64数据流
                    AssetManager am = getResources().getAssets();
                    is = am.open("test1.mp3");
                    int length = is.available();
                    byte[] audioData = new byte[length];
                    is.read(audioData);

                    QCloudFileRecognitionParams params = (QCloudFileRecognitionParams) QCloudFileRecognitionParams.defaultRequestParams();
                    params.setData(audioData);
                    params.setSourceType(QCloudSourceType.QCloudSourceTypeData);
                    params.setFilterDirty(0);// 0 :默认状态 不过滤脏话 1:过滤脏话
                    params.setFilterModal(0);// 0 :默认状态 不过滤语气词  1:过滤部分语气词 2:严格过滤
                    params.setConvertNumMode(1);//1:默认状态 根据场景智能转换为阿拉伯数字;0:全部转为中文数字。
//                    params.setHotwordId("");

                    fileRecognizer.recognize(params);
                }
                catch (IOException e) {
                    e.printStackTrace();
                }
                catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("exception msg"   e.getMessage());
                }
                finally {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }

识别结果获取回调方法

qcloudasrsdk_2.0_release 扩展实例方法参考 : https://cloud.tencent.com/document/product/1093/38351

代码语言:javascript复制
  /**
     * 识别结果回调
     * @param recognizer 录音文件识别实例
     * @param requestId 请求唯一标识别
     * @param result 识别文本
     * @param status 任务状态码:0:任务等待 1:任务执行中 2:任务成功 3:任务失败 
     * @param exception 异常信息
     *
     */
    @Override
    public void recognizeResult(QCloudFileRecognizer recognizer, final long requestId, String result,int status, Exception exception) {
        if(status==2||status==3){
            showLoading(false);
        }
        TextView textView = findViewById(R.id.recognize_text_view);
        Log.e("recognizeResult","thread id:"   Thread.currentThread().getId()   " name:"   Thread.currentThread().getName());
        if (exception != null) {
            Log.e("recognizeResult","result: "   result   "exception msg"   exception   exception.getLocalizedMessage());
            textView.setText(exception.getLocalizedMessage());
            showLoading(false);
        }
        else {
            Log.e("recognizeResult","result: "   result "---status==" status);
            if(!TextUtils.isEmpty(result)){
                String pattern = "\[[^\]] \]";	//中括号内
                //String pattern = "\([^)]*\)";//括号内
                //String pattern = "\(. "
                result = result.replaceAll(pattern, "");
            }
            textView.setText(result);
        }

    }

模拟器请求演示

请求演示请求演示

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

0 人点赞