录音文件识别API介绍地址:https://cloud.tencent.com/document/product/1093/37822
录音文件识别在线API具备2种方式获取识别结果,均为异步
通过设置请求参数CallbackUrl开启回调获取结果,轮循此参数不填。(用户自行搭建的用于接收识别结果的服务器地址)
提交请求后,获取响应中反馈的TaskId,向接口(Action:DescribeTaskStatus)提交任务ID来轮询识别结果(任务成功、等待、执行中和失败)
轮循任务结果示例:
{
"Response": {
"RequestId": "8824366f-0e8f-4bd4-8924-af5e84127caa",
"Data": {
"TaskId": 522931820,
"Status": 2,
"StatusStr": "success",
"Result": "[0:0.000,0:2.260,0] 腾讯云语音识别欢迎您。\n",
"ErrorMsg": ""
}
}
}
设置SourceType参数为0后,Url参数中传输
限制:音频时长不能长于5小时,文件大小不超过512MB
设置SourceType参数为1后,Data参数中传输
限制:大小不超过5MB
SDK地址:https://cloud.tencent.com/document/product/1093/38351
获取到压缩包,sdk demo获取src下级目录 QCloudSDKOneSentenceDemo 作为项目根目录
ERROR:
解决方案:编辑中:文件->项目结构 中设置SDK、NDK、JDK 的 Path
在Dependencies中更新扩展,选中app(当前项目),查看当前app下所有扩展,是否需要更新(波浪线代表需要更新版本),点击Update进行更新,无则不更新.
设定项目相关权限集
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" />
@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.myqcloud.com/test%20audio/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
/**
* 识别结果回调
* @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);
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。