使用科大讯飞的语音技术实现语音识别
2015-04-07 11:29
561 查看
目前,越来越多的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,修改一下布局文件,添加一个按钮:
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{
}
然后,在AndroidManifest.xml中添加以下权限:
好了,最后就开始运行吧,一下是笔者运行结果截图:
返回的结果是json格式的,接下来就是需要你来解析返回的json结果了,具体的解析方法,在sample里面的demo工程中也有,可以参见官网上下载的开发包中demo工程中的com.iflytek.mscdemo.util.JsonParser.java
到此为止,就哦了,开始体验你的语音之旅吧!
科大讯飞的语音服务是以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" /> |
现在就以有界面的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{
private RecognizerDialog myDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.startRecognizer).setOnClickListener(this); SpeechUser.getUser().login(MainActivity.this, null, null, "appid=xxxxxxxx", loginListener); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()) { case R.id.startRecognizer: myRecognize(); break; default : break; } } private SpeechListener loginListener = new SpeechListener(){ @Override public void onCompleted(SpeechError error) { // TODO Auto-generated method stub if(error!=null) Toast.makeText(MainActivity.this,"login failed", Toast.LENGTH_SHORT).show(); else Toast.makeText(MainActivity.this,"login success", Toast.LENGTH_SHORT).show(); } @Override public void onData(byte[] arg0) { // TODO Auto-generated method stub } @Override public void onEvent(int arg0, Bundle arg1) { // TODO Auto-generated method stub } }; private void myRecognize() { myDialog =new RecognizerDialog(this); //设置引擎为转写 myDialog.setParameter(SpeechConstant.DOMAIN, "iat"); //设置识别语言为中文 myDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); //设置方言为普通话 myDialog.setParameter(SpeechConstant.ACCENT, "mandarin"); //设置录音采样率为 myDialog.setParameter(SpeechConstant.SAMPLE_RATE, "16000"); //设置监听对象 myDialog.setListener(recognizerDialogListener); //开始识别 myDialog.show(); } private RecognizerDialogListener recognizerDialogListener = new RecognizerDialogListener(){ @Override public void onError(SpeechError error) { // TODO Auto-generated method stub } @Override public void onResult(RecognizerResult result, boolean isLast) { // TODO Auto-generated method stub ((TextView)findViewById(R.id.result)).append(result.getResultString()); } }; |
然后,在AndroidManifest.xml中添加以下权限:
好了,最后就开始运行吧,一下是笔者运行结果截图:
返回的结果是json格式的,接下来就是需要你来解析返回的json结果了,具体的解析方法,在sample里面的demo工程中也有,可以参见官网上下载的开发包中demo工程中的com.iflytek.mscdemo.util.JsonParser.java
到此为止,就哦了,开始体验你的语音之旅吧!
相关文章推荐
- 使用科大讯飞的语音技术实现语音识别
- [语音合成技术第四讲]使用C++实现语音识别
- iOS 使用科大讯飞技术实现语音转文字(语音听写)
- Android实战——科大讯飞语音听写SDK的使用,实现语音识别功能
- Android实战——科大讯飞语音听写SDK的使用,实现语音识别功能
- [转载]C++使用SAPI实现语音合成和语音识别的方法和代码
- 使用科大讯飞SDK实现语音功能
- 如何启动使用Win8语音识别功能实现无鼠标语音操作
- 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读
- 使用科大讯飞提供的SDK实现android语音识别
- Android开发 语音识别技术之科大讯飞语音识别(一) — 语音听写
- 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读
- 使用科大讯飞SDK实现语音功能
- 【从零单排】利用科大讯飞语音包实现Android语音识别Demo
- 使用科大讯飞语音SDK实现文字在线合成语音
- Android开发 语音识别技术之科大讯飞语音识别(二) — 语音合成
- [语音合成技术第一讲]web 页面中使用语音合成技术
- 使用vb.net代码实现图像水印技术
- 【转载】使用VML技术实现圆角表格的绘制
- 使用C++模板技术实现类的动态注册和获取