標籤:obj 產生 分享圖片 href vat 代碼 ima name into
一.引用
[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);
完畢,謝謝!
AndroidStudio->Jar->unity3d實現訊飛語音接入