录音文件识别API介绍地址:https://cloud.tencent.com/document/product/1093/37822
Action : CreateRecTask
获取结果方式
录音文件识别在线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": ""
}
}
}
语音数据传输方式及其限制
- 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
<!--网络权限-->
<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" /> </code></pre></div></div><p></p><h3 id="7bgcc" name="%E5%BD%95%E9%9F%B3%E6%96%87%E4%BB%B6%E8%AF%86%E5%88%AB%E5%8A%9F%E8%83%BD%E4%BB%A3%E7%A0%81%E6%96%87%E4%BB%B6-FileRecognizeActivity.java%E4%BB%8B%E7%BB%8D"><strong>录音文件识别功能代码文件 FileRecognizeActivity.java介绍</strong></h3><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0">@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();
}
}
}
});
}</code></pre></div></div><p></p><p><strong>识别结果获取回调方法 </strong></p><p><strong>qcloudasrsdk_2.0_release 扩展实例方法参考 : </strong>https://cloud.tencent.com/document/product/1093/38351</p><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0"> /**
* 识别结果回调
* @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);
}
}</code></pre></div></div><p></p><h2 id="2k8a7" name="%E6%A8%A1%E6%8B%9F%E5%99%A8%E8%AF%B7%E6%B1%82%E6%BC%94%E7%A4%BA">模拟器请求演示</h2><p></p><figure class=""><div class="rno-markdown-img-url" style="text-align:center"><div class="rno-markdown-img-url-inner" style="width:66.71%"><div style="width:100%"><img src="https://cdn.static.attains.cn/app/developer-bbs/upload/1723290353874867921.png" /></div><div class="figure-desc">请求演示</div></div></div></figure><h2 id="23fgu" name="%E8%BF%99%E7%AF%87%E6%96%87%E7%AB%A0%E5%AF%B9%E6%82%A8%E6%9C%89%E5%B8%AE%E5%8A%A9%E7%9A%84%E8%AF%9D%EF%BC%8C%E8%AE%B0%E5%BE%97%E7%BB%99%E5%B0%8F%E7%BC%96%E7%82%B9%E4%B8%AA%E8%B5%9E-%EF%BC%81%EF%BC%81%EF%BC%81%EF%BC%81%EF%BC%81">这篇文章对您有帮助的话,记得给小编点个赞 !!!!!</h2>