AndroidStudio->Jar->unity3d实现讯飞语音接入
一.引用
[MemoryC] Unity3D调用Android功能与组件(八)——讯飞语音识别与合成
二.成功导出Jar
1.mylibrary中的目录结构

2.导出jar
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/mytest.jar'
//设置拷贝的文件
from('build/intermediates/packaged-classes/release/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
//重命名
rename ('classes.jar', 'mytest.jar')
}
makeJar.dependsOn(build)
注意:是mylibrary中的gradle.

3.将生成的Jar文件导入u3d中,测试TestU2A()->成功!
三.添加并改写IflyVoicejava的代码
1.导入相关libs

2.复制IfyVoiceJava.class中代码到mylibrary1.java中并改写相关函数

3.重新makeJar并导入U3D中
四.实现更改讯飞语音voicer
1.弃用VoiceStatic.cs,重新封装T2VStatic.CS
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class T2VStatic { public static readonly T2VStatic instance = (T2VStatic)Activator.CreateInstance(typeof(T2VStatic)); //AndroidJavaClass AndroidJavaClass jc; AndroidJavaObject jo; AndroidJavaObject jo1; public T2VStatic() { #if UNITY_ANDROID //Initialize AndroidJavaClass(Please do not delete the commended codes for that those code are for test and check) jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); jo = jc.GetStatic<AndroidJavaObject>("currentActivity"); jo1 = new AndroidJavaObject("com.unity3d.player.mylibrary1", "5b508fb6", jo); //string str = SetVoicer(VoI); jo1.Call("setInitListener", new XfInitListener()); jo1.Call("setTtsListener", new XfSynthesizerListener()); //jo1.Call(methodName: "setRecognizerListener", args: new xfRecognizerListener()); jo1.Call("initVoice"); //startRecognize(); //startSpeaking("你好,小鬼,,,哈哈哈哈!Good morning! Congratulations! HOooray!"); #endif } public void startSpeaking(int VoI,string text) { jo1.Call("setTtsParam", SetVoicer(VoI)); jo1.Call("startSpeak", new AndroidJavaObject("java.lang.String", text)); } public void startRecognize() { jo1.Call("startRecognize"); } private string SetVoicer(int i) { string str = ""; switch (i) { case 0: str = "xiaoyan";//青年女声,,中英文普通话 break; case 1: str = "xiaoyu";//青年男声,,中英文普通话 break; case 2: str = "catherine";//青年女生,,英文 break; case 3: str = "henry";//青年男声,,英文 break; case 4: str = "xiaofeng";//青年男生,,中英文普通话 break; case 5: str = "xiaoxin";//童年男声,汉语普通话 break; case 6: str = "nannan";//同年女声,汉语普通话 break; case 7: str = "vils";//老年男声,汉语普通话 break; default: str = "xiaoyan"; break; } return str; } }
2.调用示例:
string str = "欢迎来到XX乐园!"; T2VStatic.instance.startSpeaking(6, str);
完毕,谢谢!
附一:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools" android:installLocation="preferExternal"> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true"/> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:theme="@style/UnityThemeSelector" android:icon="@mipmap/app_icon" android:label="@string/app_name"> <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> </activity> </application> </manifest>
雁过留声,人死留名。人生仿若风拂沙漠,未留下痕迹……但愿你我之汗水,来得及有所传承……
浙公网安备 33010602011771号