语音识别

最近一直关注语音识别,研究了一番顺手做了一个简单的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>

图片:



首次测试语音识别遇到各种问题:

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状态的权限

<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.RECORD_AUDIO" />

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.READ_PHONE_STATE" />

权限问题很重要,如果提示出来还好,没有提示的话会很头疼。。。。

其实讯飞语音 语音识别不难,使用方法在官方文档中都有介绍,详情见:
http://dev.voicecloud.cn/developer.php?category=YW5kcm9pZA%3D%3D&column=ZG9jdW1lbnQ%3D&type=d2lkZ2V0#a10













 
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值