腾讯云语音识别之一句话识别
时间:2022-07-22
本文章向大家介绍腾讯云语音识别之一句话识别,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一句话识别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
<!--网络权限-->
<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介绍
@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.myqcloud.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.myqcloud.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带识别结果获取回调方法
/**
* 识别结果回调
* @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);
}
}
模拟器请求演示
这篇文章对您有帮助的话,记得给小编点个赞 !!!!!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 设计模式(12)[JS版]--JavaScript必会设计模式之外观模式(Façade Pattern)
- JavaWeb - JSP:概述和语法,内置对象,JavaBean 组件,MVC 设计模式
- kill -9 导致 Kakfa 重启失败的惨痛经历!
- 图解 DataX 核心设计原理
- 不会吧不会吧,你不会还不知道这些提高JS代码质量的骚操作吧?
- Flask架站基础篇(一)--环境配置
- Flask架站基础篇(三)--Flask生成文件内容和文件夹详解
- Flask架站基础篇(四)--URL
- Flask架站基础篇(六)--mysql-python 安装
- Flask架站基础篇(五)----Jinja2模板
- Flask架站基础篇(七)--SQLAlchemy(1)
- JavaScript 进阶教程(1)--面向对象编程
- Flask架站基础篇(八)--SQLAlchemy(2)
- JavaWeb - EL and JSTL
- Python模拟登陆新版知乎