Unity版本4.6+Eclipse
1,首先我们先去讯飞开放平台注册一个开发者账号(注册地址:http://www.xfyun.cn),注册完成后进入控制台创建一个新的应用。
2,提交成功后我们需要选择我们需要开通我们需要的服务,点击开通服务
3,上面步骤完成后我们就可以取下载sdk了。在左侧找到SDK下载中心
4,现在我们就可以开始进入开发了,找到我们刚刚下载的压缩包并且解压
5,接下来我们找到一个叫classes.jar的文件,他在unity的安装目录文件中,
windows上路津如下
mac系统上路径如下(找unity安装的位置,然后右键点击Unity 选择 显示包内容--contents---PlaybackEngines---androidPlayer----release---bin
6,新建一个Andrid工程
7,然后把刚刚我们找到的classes.jar文件导入到bin目录下(拖进去即可),然后在添加到构建路径中去,选择classes.jar右键--Build Path ---Add to Build Path.
8,接着把讯飞提供的SDK中libs文件下的部分jar包添加进来
9,在我们下载的sdk文件中找到sample文件找到JsonParser.java导入的工程中如图,并且修改它的包名为你自己工程的包名
10,现在我们就可以写代码了,下面看看MainActivity里面的代码:
package com.example.lijiaunityyuying;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechUtility;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends UnityPlayerActivity {
SpeechRecognizer mIat;
String voiceResult ="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SpeechUtility.createUtility(this, "appid=5818a273");
mIat = SpeechRecognizer.createRecognizer(this, mInitListener);
}
public void StartActivity1(){
mIat.setParameter(SpeechConstant.DOMAIN,"iat");
mIat.setParameter(SpeechConstant.ACCENT,"mandarin");
mIat.setParameter(SpeechConstant.LANGUAGE,"zh_cn");
mIat.setParameter(SpeechConstant.KEY_SPEECH_TIMEOUT,"4000");
mIat.setParameter(SpeechConstant.VAD_EOS,"2000");
mIat.setParameter(SpeechConstant.ASR_PTT,"0");
int ret = mIat.startListening(recognizerListener);
UnityPlayer.UnitySendMessage("Main Camera", "LiJia", "初始化完成");
if(voiceResult != null || voiceResult !=""){
voiceResult = "";
}
}
private RecognizerListener recognizerListener = new RecognizerListener() {
//说话音量
@Override
public void onVolumeChanged(int arg0, byte[] arg1) {
// TODO Auto-generated method stub
}
//得到返回的语音结果
@Override
public void onResult(RecognizerResult arg0, boolean arg1) {
// TODO Auto-generated method stub
voiceResult = voiceResult +JsonParser.parseIatResult(arg0.getResultString());
if(arg1){
UnityPlayer.UnitySendMessage("Main Camera", "LiJia", voiceResult);
}
}
//扩展接口
@Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
// TODO Auto-generated method stub
}
//发生错误回调
@Override
public void onError(SpeechError arg0) {
// TODO Auto-generated method stub
UnityPlayer.UnitySendMessage("Main Camera", "LiJia", "发生错误啦");
}
//结束录音
@Override
public void onEndOfSpeech() {
// TODO Auto-generated method stub
UnityPlayer.UnitySendMessage("Main Camera", "LiJia", "结束录音啦");
}
//开始录音
@Override
public void onBeginOfSpeech() {
// TODO Auto-generated method stub
UnityPlayer.UnitySendMessage("Main Camera", "LiJia", "开始录音啦");
}
};
private InitListener mInitListener = new InitListener() {
@Override
public void onInit(int arg0) {
// TODO Auto-generated method stub
UnityPlayer.UnitySendMessage("Main Camera", "LiJia", "mInitListener");
if(arg0==0){
Toast.makeText(MainActivity.this, "语音可以用", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "语音不可以用", Toast.LENGTH_SHORT).show();
}
}
};
}
11,接着修改res工程目录下的AndroidManifest.xml文件,添加如下权限:
12,现在代码我们就写完啦,现在我们倒出jar包;
13,下面新建一个unity工程,注意工程目录结构
14,接着把刚刚我们生成jar包拖到bin文件中
15,打开我们的android工程找到如下文件拖入到unity工程中的android文件家中
16,接下来我们写一个C#脚本挂在摄像机上
17,发布app就可以啦。