以前做語音的時候都是調用事先錄製好的音頻來進行播放,但是這樣太不方便,而且即使是動態加載也會使壓縮包體積大大加大,今天終於找到了一個調用類就可以實現將文字轉換成語音狀態;
在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也是可以用的。