1. 程式人生 > >unity 呼叫C#類將文字轉換為語音

unity 呼叫C#類將文字轉換為語音

    以前做語音的時候都是呼叫事先錄製好的音訊來進行播放,但是這樣太不方便,而且即使是動態載入也會使壓縮包體積大大加大,今天終於找到了一個呼叫類就可以實現將文字轉換成語音狀態;

    在VS的引用中右鍵引用COM裡的Microsoft Speech  object  library類,,然後在程式碼裡名稱空間裡引用using SpeechLib;在需要把文字讀出來的地方加上程式碼

using UnityEngine;
using System.Collections;
using SpeechLib;
public class Test : MonoBehaviour
{

void Update()
    {
SpVoice voice = new SpVoice();
            voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(0);
            voice.Speak("哈嘍我的");
}
}

注意!!!:圖中我圈住的寫的是版本號,如果是5.4的話就用SpVoice voice = new SpVoice();如果是5.1就用SpVoiceClass voice = new SpVoiceClass();來替換,這樣的話大家會發現在C#裡已經能正確的讀出來語音了,但是我們在unity裡卻發現會報錯缺少引用,這時候我們需要根據引用類的路徑找到相應的dll檔案,路徑為,找到一個sapi.dll檔案,複製到unity的Assets檔案下,這個時候會發現還是會報錯,這個時候大家點選該檔案會發現在unity的Inspector裡Type為,而unity能開啟的型別為managed類,所以我們要重新生成解決方案,大家對VS熟練的話就不用我多講,初學者就直接儲存工程重啟unity,在開啟的時候由於工程儲存時有錯誤,再開啟時會跳出一個報錯框,直接點選預設就是第一個,這個時候會在Assets生成一個Interop.SpeechLib.dll的檔案,這個時候就會發現錯誤已經沒有了,在開啟執行就會完美的執行成功,我下邊釋出自己的解決方案,大家放在assets也是可以用的。