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 报错!! 如图文件修改成
以上可以通过测试!! 写的有点乱 请见谅!!
网友评论