一句话识别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);
}
}