Unity+Android+讯飞SDK

来源:互联网 发布:js身份证号计算年龄 编辑:程序博客网 时间:2024/06/05 00:35

1,讯飞官网创建应用程序可参考:

github.com/wwnje/GitBook/blob/master/unity/demo/unity_xfyun.md

2,创建android studio 项目 以下简称as









3,将讯飞sdk下载解压,libs文件夹里面的 msc.jar 和unity class.jar 放置在 as项目的libs目录下 如下图


unity class.jar  在D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes 下面


4,在 as 项目 main文件夹下面新建一个文件夹,名字为 jniLibs ,将讯飞sdk libs目录下的so文件,拷贝到jniLibs文件夹下 如下图:




5,在as项目下引用 Msc.jar 和 class.jar , as项目-右键如下图


6,点击+添加引用库。



7,修改 AndroidManifest.xml配置



框起来的部分 unity 和 android 交互必须添加

应用style theme直接删除

再添加一些讯飞权限



8,修改 build.gradle



第一个框 修改成 apply plugin: 'com.android.library'

第二个直接删除


9,编写测试代码



11. public classMainActivity extends UnityPlayerActivity   继承UnityPlayerActivity

importandroid.os.Bundle;

importandroid.util.Log;

importcom.iflytek.cloud.InitListener;

importcom.iflytek.cloud.RecognizerResult;

importcom.iflytek.cloud.SpeechConstant;

importcom.iflytek.cloud.SpeechError;

importcom.iflytek.cloud.SpeechUtility;

importcom.iflytek.cloud.SpeechRecognizer;

importcom.iflytek.cloud.SpeechSynthesizer;

importcom.iflytek.cloud.SynthesizerListener;

importcom.iflytek.cloud.ErrorCode;

importcom.unity3d.player.UnityPlayer;

importcom.unity3d.player.UnityPlayerActivity;

importorg.json.JSONArray;

importorg.json.JSONObject;

importorg.json.JSONTokener;

public classMainActivityextendsUnityPlayerActivity {

private static finalStringTAG="MainActivity";

publicSpeechRecognizerspeechRecognizer;

publicSpeechSynthesizerspeechSynthesizer;

@Override

protected voidonCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

//注意这里的appid为讯飞官网上注册获得的appid

SpeechUtility.createUtility(getApplicationContext(),"appid=你的ID");

speechSynthesizer= SpeechSynthesizer.createSynthesizer(getApplicationContext(),sInitListener);

}

publicInitListenersInitListener=newInitListener() {

@Override

public voidonInit(intcode) {

UnityPlayer.UnitySendMessage("Manager","Result","speak init success!");

Log.d("mySynthesiezer:","InitListener init() code = "+ code);

}

};

//开始合成  将文本转换成语音

public voidstartConstant() {

//设置发音人

speechSynthesizer.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan");

//设置音调

speechSynthesizer.setParameter(SpeechConstant.PITCH,"50");

//设置音量

speechSynthesizer.setParameter(SpeechConstant.VOLUME,"50");

intcode =speechSynthesizer.startSpeaking("欢迎使用语音导航!",mSynListener);

Log.d(TAG,"mySynthesiezer start code:"+ code);

}

privateSynthesizerListenermSynListener=newSynthesizerListener() {

//会话结束回调接口,没有错误时,error为null

public voidonCompleted(SpeechError error) {

Log.d(TAG,"onCompleted: ");

}

//缓冲进度回调

//percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。

public voidonBufferProgress(intpercent,intbeginPos,intendPos, String info) {

}

//开始播放

public voidonSpeakBegin() {

}

//暂停播放

public voidonSpeakPaused() {

}

//播放进度回调

//percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.

public voidonSpeakProgress(intpercent,intbeginPos,intendPos) {

}

//恢复播放回调接口

public voidonSpeakResumed() {

}

//会话事件回调接口

public voidonEvent(intarg0,intarg1,intarg2,Bundlearg3) {

}

};

}


10,build arr


11,将 arr 放到 unity 项目 Plugins - Android 目录下





12,编写 c# 测试脚本



c#测试脚本


13 player Setting  设置和as项目一样的id



模拟器或真机测试!! 目前我只是测试的  合成 !!

如果有values 报错!!  如图文件修改成









作者:东北大熊
链接:http://www.jianshu.com/p/5459aa19456a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原创粉丝点击