Unity接入讯飞语音识别___Android版

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MIYIshi/article/details/68957648

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就可以啦。

猜你喜欢

转载自blog.csdn.net/MIYIshi/article/details/68957648