第一種方法
1.首先下載一個dll文件 Interop.SpeechLib.dll
放在unity Plugins文件夾里就可以了
下面上代碼 腳本掛在任意地方運行即可
using System.Collections; using System.Collections.Generic; using UnityEngine; using SpeechLib; public class TTS_YuYin : MonoBehaviour { SpVoice voice; // Start is called before the first frame update void Start() { //實例化spvoice 對象 voice = new SpVoice(); //Item(0)中文語音 Item(1)英文語音 voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(0); //語音速度 范圍-10 到10 默認是0 voice.Rate = 0; //語音音量 范圍0到100 默認 100 voice.Volume = 100; } // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Q)) { //同步朗讀(同步朗讀時系統會卡在這里,關都關不掉 直到朗讀完畢才會往下執行,建議使用異步朗讀) //voice.Speak("hello world 是大師級的卡拉膠SD卡聖誕節啊斯柯達SDKask大開殺戒的卡建檔立卡"); //異步朗讀 voice.Speak("狗是由狼馴化而來的。早在狩獵采集時代,人們就已馴養狗為狩獵時的助手。因此," + "狗算是人類最早馴養的家畜。河北武安磁山、河南新鄭裴李崗、浙江余姚河姆渡等遺址,都發現了狗骨骼," + "足證其馴養歷史之久遠。 山東膠縣三里河出土的狗形鬶,造型生動逼真,使我們得見新石器時代家犬的形態特征。" + "陝西西安半坡遺址出土的狗骨,頭骨較小,額骨突出,肉裂齒小,下頜骨水平邊緣彎曲,與華北狼有很大區別," + "說明人類馴養狗的歷史確實很早。", SpeechVoiceSpeakFlags.SVSFlagsAsync); } if (Input.GetKeyDown(KeyCode.W)) { //暫停使用該對象的所有朗讀進程,同步朗讀下無法使用該方法暫停 voice.Pause(); } if (Input.GetKeyDown(KeyCode.E)) { //恢復該對象所對應的被暫停的朗讀進程 voice.Resume(); } } private void OnApplicationQuit() { voice.Pause(); } }
下面是文件地址url:
https://files.cnblogs.com/files/qq2351194611/PC%E7%AB%AF%E8%AF%AD%E9%9F%B3%E8%BD%AC%E6%96%87%E5%AD%97.rar
復制直接下載
打包設置 ! ! ! 分Unity版本 有的版本打包出來沒有聲音
別人測試的2017.3版本的是不用調的,
我用的是2019.4.5f1版本的, 調到4.x打包出來沒法運行,運行就崩潰,具體為什么暫時不清楚,(編輯器里面是好的,)
不調4.x 打包能運行,但是沒聲音,最后只能用插件了 RTVoice PRO
第二種方法RTVoice PRO插件的使用
下面是插件的地址 ()
鏈接:https://pan.baidu.com/s/1C6cvofGjQCA0XjUYCzeYzg
提取碼:mg6h
下載之后導入unity
右擊Hierarchy面板添加兩個對象
這個一定要設置這樣,要不然沒有聲音(如下圖)
Mode 設置成 Speak Native
添加完成之后創建一個腳本
using Crosstales.RTVoice.Tool; using System.Collections; using System.Collections.Generic; using UnityEngine; public class TTS_Spake : MonoBehaviour { public SpeechText speechText; //把剛創建的SpeechText拖上來創建連接 //public TextFileSpeaker speaker;//閱讀文本里面的文字 void Update() { if (Input.GetKeyDown (KeyCode.I )) { speechText.Speak(); } if (Input.GetKeyDown(KeyCode.O)) { speechText.Silence(); } //if (Input.GetKeyDown (KeyCode.K)) //{ // speaker.Speak(); //} } }
運行點擊 I 即可聽到 SpeechText 里面的text 內容
點擊 按鍵O 靜音 上面的靜音是關閉當前的說話, 后面寫程序的時候 ,要是連着點倆次就會有倆個重疊的聲音
解決辦法 Speaker.Silence(); (這是RTVoice版本的解決辦法) 在腳本里面加上這句,連着點擊就不會有重疊的聲音了 (具體看自己寫的程序使用)
speakr.SilenceOnDisable = false; (關閉所有語音播放)
注意如果你是要用中文,則需要切換到中文語種才能讀,要不然報錯(切換為ch或者cn都可以)
下面是他的語種
最后添加一個功能腳本

using Crosstales.RTVoice; using Crosstales.RTVoice.Tool; using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 文字轉語音腳本 /// </summary> public class TTS_YuYin : MonoBehaviour { public SpeechText speechText; public static TTS_YuYin instance; private void Awake() { instance = this; } //說話 有文字提示的 public void Speaking_speak(string strin) { GameObjecting.instance.NPCtext_panel.SetActive(true); NPC_Text.instance.font_text.text = strin; speechText.Text = NPC_Text.instance.font_text.text; speechText.Speak(); } //光說話沒有文字提示的 public void Speaking_meiyouTiShi(string strin) { speechText.Text = strin; speechText.Speak(); } //靜音 public void Speaking_silence() { speechText.Silence(); Speaker.Silence(); } public void ShuiBianGuangGuangMoShi() { Speaking_speak(Type1_String()); } public string Type1_String() { string ss = "你已經進入隨便逛逛模式,在此模式下可以在廠房內隨意走動觀察," + "但無法接取任務。點擊1號NPC可以打開模式選擇進入其他模式。"; return ss; } public string Type1_String(int aa) { string ss= string .Empty; switch (aa) { case 0: ss = "在機械拆裝作業中,防護裝備是必不可少的。下面我們一起對機器人拆裝主要防護裝備進行認識。" + "根據箭頭指引前往換衣間。"; break; case 1: ss = "在機械拆裝作業中,拆裝工具是必不可少的。下面我們一起對機器人拆裝主要拆裝工具進行認識。" + "根據箭頭指引前往工具台。"; break; case 2: ss = "機器人在進行拆卸前,需要進行一系列准備工作。准備工作包括清理工作場地、調整機器人位姿和" + "機器人排油。下面,讓我們完成機器人拆卸前的准備工作。"; break; case 3: ss = "由於機器人工作后的姿態各異,有些姿態不方便拆卸,所以在拆卸前需要對機器人進行位姿的調整," + "讓機器人處於一個合適的拆卸姿態。"; break; case 4: ss = "我們先檢查自己的工作裝備。進行機器的拆裝時,必須穿戴好工作服、勞保鞋和戴好正確的手套。"; break; case 5: ss = "機器人的J5軸包含電機組件、手腕以及減速器三個部分。下面,讓我們來學習J5軸的拆卸。"; break; case 6: ss = "機器人的J4軸包含小臂組件、電機組件和減速機組件。下面,讓我們來學習J4軸的拆卸。"; break; case 7: ss = "機器人的J3軸包含電機組件和J3軸轉座組件。下面,讓我們來學習J3軸的拆卸。"; break; case 8: ss = "機器人的J2軸包含機器人的大臂、電機組件和J2軸減速機。下面,讓我們來學習J2軸的拆卸。"; break; case 9: ss = "機器人的J1軸拆卸包含底座拆除、底座與J1軸轉座分離、減速機拆卸等。下面,讓我們來學習1軸的拆卸。"; break; default: break; } return ss; } }
以上就是插件的簡單使用.(打包出來親測可用)
(.NET Standard2.0 4.x都是可以的)
(補充: PC端打包出來只有自己電腦可以播放聲音,換一台電腦就不行了,很迷茫 ,有知道是怎么回事的么?評論區可以告訴我,感謝 )
(解決辦法PC打包沒聲音: 電腦系統是閹割版的,所以播放不了。如果不能正常播放,先下載“朗讀女”這個軟件,安裝后,斷網測試看能否播放,如果不能,說明系統缺少組件。百度搜索TTS修復工具(最好是官方的)修復即可。)。
Android 端打包出來是可以播放語音的