最近一直关注语音识别,研究了一番顺手做了一个简单的Demo来展示一下语音识别的魅力。
比较简单的一个Demo 就一个主Activity
public class MSCDemo2Activity extends Activity{
EditText editText = null;
Button startButton = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText = (EditText) findViewById(R.id.etInput);
startButton = (Button) findViewById(R.id.btnShowDialog);
startButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(1);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
RecognizerDialog recognizerDialog = new RecognizerDialog(
MSCDemo2Activity.this, "appid=" + getString(R.string.app_id));
// 这里的appid应该写从科大讯飞申请到的appid
recognizerDialog.setEngine("sms", null, null);
recognizerDialog.setListener(new RecognizerDialogListener() {
@Override
public void onResults(ArrayList<RecognizerResult> results,
boolean arg1) {
StringBuffer result = new StringBuffer();
for (RecognizerResult r : results) {
result.append(r.text);
}
editText.setText(result.toString());
}
@Override
public void onEnd(SpeechError error) {
Log.i("info", ""+error);
}
});
return recognizerDialog;
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/etInput"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btnShowDialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="开始"/>
</LinearLayout>
图片:
![](https://img-my.csdn.net/uploads/201207/05/1341421140_3387.jpg)
![](https://img-my.csdn.net/uploads/201207/05/1341421140_3387.jpg)
![](https://img-my.csdn.net/uploads/201207/05/1341421144_9223.jpg)
首次测试语音识别遇到各种问题:
1. 07-04 23:06:47.625: INFO/info(16774): 错误原因:java.lang.SecurityException: ConnectivityService: Neither user 10091 nor current process has android.permission.ACCESS_NETWORK_STATE..
这个错误也就是需要添加访问network状态的权限
这个错误也就是需要添加访问network状态的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
2. 07-04 23:07:49.865: INFO/info(17061): 错误原因:启动录音失败.
这个错误经过搜索 意思是说需要添加一个录音的权限
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
2. 07-04 23:07:49.865: INFO/info(17061): 错误原因:启动录音失败.
这个错误经过搜索 意思是说需要添加一个录音的权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
3.07-04 23:47:17.545: INFO/info(18877): 错误代码:10214
07-04 23:47:17.545: INFO/info(18877): 错误原因:网络连接发生异常.
3.07-04 23:47:17.545: INFO/info(18877): 错误代码:10214
07-04 23:47:17.545: INFO/info(18877): 错误原因:网络连接发生异常.
这个错误很常见。
这些错误是指,在用户的程序在连接语音云服务器时出现异常。大多数情况下,这些错误是在wifi网络下出现的。首先,用户先要确认其wifi网络是可以访问互联网的;其次,用户可以去这里下载我们的测试脚本,解压后运行其中的test.bat,看看能否正常获取结果。如果一直出现错误,说明wifi出口访问不了语音云服务器,如果用户是在办公网络下,建议去联系网络出口负责人,给语音云服务器开发相应的权限,语音云服务器域名:http://dev.voicecloud.cn,电信入口地址:60.166.12.146。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
还有就是需要添加一个读取手机状态的权限。。。
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
还有就是需要添加一个读取手机状态的权限。。。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
权限问题很重要,如果提示出来还好,没有提示的话会很头疼。。。。
其实讯飞语音 语音识别不难,使用方法在官方文档中都有介绍,详情见:
http://dev.voicecloud.cn/developer.php?category=YW5kcm9pZA%3D%3D&column=ZG9jdW1lbnQ%3D&type=d2lkZ2V0#a10
权限问题很重要,如果提示出来还好,没有提示的话会很头疼。。。。
其实讯飞语音 语音识别不难,使用方法在官方文档中都有介绍,详情见:
http://dev.voicecloud.cn/developer.php?category=YW5kcm9pZA%3D%3D&column=ZG9jdW1lbnQ%3D&type=d2lkZ2V0#a10