腾讯云语音识别之一句话识别

2020-07-26 16:35:19 浏览数 (1)

一句话识别API地址:https://cloud.tencent.com/document/product/1093/35646


Action : SentenceRecognition

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

  • url

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

限制:音频时间长度要小于60s

  • post body

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

限制:大小不超过600KB

注意事项

  • QPS:25qps
  • 支持语种:中文普通话、英语、粤语。
  • 音频格式:wav、mp3;采样率支持8000Hz或者16000Hz;采样精度支持16bits;声道支持单声道。
  • 所有请求参数放在POST请求的body中,编码类型采用x-www-form-urlencoded,参数进行urlencode编码后传输。

Android关于使用一句话识别SDK演示

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

获取到压缩包,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" /> 

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

代码语言:javascript复制
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        
        setContentView(R.layout.activity_one_sentence_recognize);
        
        RotateLoading rotateLoading = findViewById(R.id.rotateloading);
        rotateLoading.setLoadingColor(Color.parseColor("#FF79CD6E"));
        if(!checkMyPermission(permiss)){
            ActivityCompat.requestPermissions(this,permiss, REQUEST_CODE);
        }
        //读取秘钥配置
        if (recognizer == null) {
            recognizer = new QCloudOneSentenceRecognizer(this,DemoConfig.apppId, DemoConfig.secretId, DemoConfig.secretKey);
            //设置识别结果回调
            recognizer.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);

                    QCloudOneSentenceRecognitionParams params = (QCloudOneSentenceRecognitionParams) QCloudOneSentenceRecognitionParams.defaultRequestParams();
                    params.setUrl("http://liqiansunvoice-1255628450.cosgz.myzijiebao.com/30s.wav");
                    params.setSourceType(QCloudSourceType.QCloudSourceTypeUrl);
                    params.setFilterDirty(0);// 0 :默认状态 不过滤脏话 1:过滤脏话
                    params.setFilterModal(0);// 0 :默认状态 不过滤语气词  1:过滤部分语气词 2:严格过滤
                    params.setFilterPunc(0); // 0 :默认状态 不过滤句末的句号 1:滤句末的句号
                    params.setConvertNumMode(1);//1:默认状态 根据场景智能转换为阿拉伯数字;0:全部转为中文数字。
                    params.setHotwordId("1335468b9e7c11ea9ae9446a2eb5fd98"); // 热词id。用于调用对应的热词表,如果在调用语音识别服务时,不进行单独的热词id设置,自动生效默认热词;如果进行了单独的热词id设置,那么将生效单独设置的热词id。
                    params.setVoiceFormat(QCloudAudioFormat.QCloudAudioFormatWav);
                    params.setSourceType(QCloudSourceType.QCloudSourceTypeUrl);
                    params.setEngSerViceType(QCloudAudioFrequence.QCloudAudioFrequence16k.getFrequence());
                    recognizer.recognize(params);

//                    recognizer.recognize("http://liqiansunvoice-1255628450.cosgz.myzijiebao.com/30s.wav", QCloudAudioFormat.QCloudAudioFormatWav, QCloudAudioFrequence.QCloudAudioFrequence16k);
                } 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);
                    //通过语音数据调用 转化的语音数据
                    AssetManager am = getResources().getAssets();
                    is = am.open("test1.mp3");
                    int length = is.available();
                    byte[] audioData = new byte[length];
                    is.read(audioData);
                    QCloudOneSentenceRecognitionParams  params = (QCloudOneSentenceRecognitionParams)QCloudOneSentenceRecognitionParams.defaultRequestParams();
                    params.setFilterDirty(0);// 0 :默认状态 不过滤脏话 1:过滤脏话
                    params.setFilterModal(0);// 0 :默认状态 不过滤语气词  1:过滤部分语气词 2:严格过滤
                    params.setFilterPunc(0); // 0 :默认状态 不过滤句末的句号 1:滤句末的句号
                    params.setConvertNumMode(1);//1:默认状态 根据场景智能转换为阿拉伯数字;0:全部转为中文数字。
//                    params.setHotwordId(""); // 热词id。用于调用对应的热词表,如果在调用语音识别服务时,不进行单独的热词id设置,自动生效默认热词;如果进行了单独的热词id设置,那么将生效单独设置的热词id。
                    params.setData(audioData);
                    params.setVoiceFormat(QCloudAudioFormat.QCloudAudioFormatMp3);
                    params.setSourceType(QCloudSourceType.QCloudSourceTypeData);
                    params.setEngSerViceType(QCloudAudioFrequence.QCloudAudioFrequence16k.getFrequence());
                    recognizer.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();
                    }
                }
            }
        });
        
        //SDK设置内置录音器开启/关闭
        findViewById(R.id.recognize_start_record).setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                try {
                    if (recording) {
                        //停止录音
                        recognizer.stopRecognizeWithRecorder();
                    }
                    else {
                        //开启录音
                        recognizer.recognizeWithRecorder();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("exception msg"   e.getMessage());
                } finally {
                }
            }
        });
    }

SDK带识别结果获取回调方法

代码语言:javascript复制
   /**
     * 识别结果回调
     * @param recognizer 实例
     * @param result 识别文本
     * @param exception 异常信息
     *
     */
    @Override
    public void recognizeResult(QCloudOneSentenceRecognizer recognizer, String result, Exception exception)  {
        //关闭加载效果
        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());
        }
        else {
            Log.e("recognizeResult","result: "   result);
            textView.setText(result);
        }
    }

模拟器请求演示

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

0 人点赞