当前位置:   article > 正文

使用科大讯飞的语音技术实现语音识别_科大讯飞语音识别判断当前语音是否是问题

科大讯飞语音识别判断当前语音是否是问题

http://www.tuicool.com/articles/BVfA7n

使用科大讯飞的语音技术实现语音识别

目前,越来越多的app已经使用到了语音技术,无论是语音合成,语音识别,还是语义等,有时,为app增加语音技术,就可能为自己多增加一份市场用户,这里就科大讯飞的语音识别的代码调用做个介绍。 
科大讯飞的语音服务是以SDK的形式提供的,就android平台来说,有三个SDK,现在以其中的弹出dialog的SDK为例。SDK在官网( http://open.voicecloud.cn/)下载,解压之后有几个文件夹,分别如下: 
图片说明文字

1 bin文件夹下面的是SpeechDemo.apk,可以直接安装到手机上体验 
2 doc文件夹下面是开发文档,有主要的接口描述和参数介绍 
3 自己开发的话,需要引入一个jar包和一个so库,lib文件夹下面就是你的appid对应的so库和jar包 
4 sample里面是一个工程,可以直接导入到eclipse里面,里面是主要接口的使用示例,run之后,也就是bin下面的SpeechDemo了

好了,废话不多说,直接建一个自己的工程,开始试一下使用这个服务吧!

新建一个工程,里面本身就有一个MainActivity和activity_main.xml,修改一下布局文件,添加一个按钮:

<Button 
  android:id="@+id/startRecognizer"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="startRecognizer"/>

<TextView
  android:id="@+id/result"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="result:"
  android:layout_below="@id/startRecognizer" />

android上有三个sdk,分别有三个功能,三个sdk的区别参见http://club.voicecloud.cn/forum.php?mod=viewthread&tid=6843 
现在就以有界面的SDk为例,使用时,需要用到的是开发包中的msc.jar和libmsc.so,将libms.so放到工程中的libsarmeabi文件夹下(根据cpu型号选择放哪个库),将msc.jar放到工程中的libs文件夹下。

在MainActivity中添加按钮的点击事件,具体代码如下:

package com.personal.iflytekdemo;

import com.iflytek.cloud.speech.RecognizerResult; 
import com.iflytek.cloud.speech.SpeechConstant; 
import com.iflytek.cloud.speech.SpeechError; 
import com.iflytek.cloud.speech.SpeechListener; 
import com.iflytek.cloud.speech.SpeechUser; 
import com.iflytek.cloud.ui.RecognizerDialog; 
import com.iflytek.cloud.ui.RecognizerDialogListener;

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.TextView; 
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

  1. private RecognizerDialog myDialog;
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. findViewById(R.id.startRecognizer).setOnClickListener(this);
  7. SpeechUser.getUser().login(MainActivity.this, null, null, "appid=xxxxxxxx", loginListener);
  8. }
  9. @Override
  10. public boolean onCreateOptionsMenu(Menu menu) {
  11. // Inflate the menu; this adds items to the action bar if it is present.
  12. getMenuInflater().inflate(R.menu.main, menu);
  13. return true;
  14. }
  15. @Override
  16. public void onClick(View v) {
  17. // TODO Auto-generated method stub
  18. switch(v.getId())
  19. {
  20. case R.id.startRecognizer:
  21. myRecognize();
  22. break;
  23. default :
  24. break;
  25. }
  26. }
  27. private SpeechListener loginListener = new SpeechListener(){
  28. @Override
  29. public void onCompleted(SpeechError error) {
  30. // TODO Auto-generated method stub
  31. if(error!=null)
  32. Toast.makeText(MainActivity.this,"login failed", Toast.LENGTH_SHORT).show();
  33. else
  34. Toast.makeText(MainActivity.this,"login success", Toast.LENGTH_SHORT).show();
  35. }
  36. @Override
  37. public void onData(byte[] arg0) {
  38. // TODO Auto-generated method stub
  39. }
  40. @Override
  41. public void onEvent(int arg0, Bundle arg1) {
  42. // TODO Auto-generated method stub
  43. }
  44. };
  45. private void myRecognize()
  46. {
  47. myDialog =new RecognizerDialog(this);
  48. //设置引擎为转写
  49. myDialog.setParameter(SpeechConstant.DOMAIN, "iat");
  50. //设置识别语言为中文
  51. myDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
  52. //设置方言为普通话
  53. myDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
  54. //设置录音采样率为
  55. myDialog.setParameter(SpeechConstant.SAMPLE_RATE, "16000");
  56. //设置监听对象
  57. myDialog.setListener(recognizerDialogListener);
  58. //开始识别
  59. myDialog.show();
  60. }
  61. private RecognizerDialogListener recognizerDialogListener = new RecognizerDialogListener(){
  62. @Override
  63. public void onError(SpeechError error) {
  64. // TODO Auto-generated method stub
  65. }
  66. @Override
  67. public void onResult(RecognizerResult result, boolean isLast) {
  68. // TODO Auto-generated method stub
  69. ((TextView)findViewById(R.id.result)).append(result.getResultString());
  70. }
  71. };

}

然后,在AndroidManifest.xml中添加以下权限:

图片说明文字

好了,最后就开始运行吧,一下是笔者运行结果截图: 
图片说明文字

图片说明文字

返回的结果是json格式的,接下来就是需要你来解析返回的json结果了,具体的解析方法,在sample里面的demo工程中也有,可以参见官网上下载的开发包中demo工程中的com.iflytek.mscdemo.util.JsonParser.java 
到此为止,就哦了,开始体验你的语音之旅吧!


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/356317
推荐阅读
相关标签
  

闽ICP备14008679号