您好,登錄后才能下訂單哦!
如果在程序中播放語音,該怎么實現呢?(下需代碼是在VS2012中實現)
第一個我想到的是用語音文件,可以引用播放器插件到應用中,再調用這些插件的API來實現。
首先創建一個控制臺應用,在解決方案中添加引用,選中com選項,找到Windows Media Player,然后添加到引用中,在引用中,這個插件的命名空間是WMPLib。接下來就可以用這個插件來實現語音的播放了。
選來引用加入的命名空間:
using WMPLib;
然后在Main方法中寫入
WindowsMediaPlayer player = newWindowsMediaPlayer();//實例化播放器類型
player.URL = "F:/test/a.wma";//把語音文件路徑賦給播放器
Console.Read();//暫停程序,不至于退出
用播放器插件實現起來非常簡單,其實插件功能還很強大,可能理進一步研究player的成員。
第二個,用vbs腳本文件,首先創建一個記事本文件,打開記事本,在里面寫入下面代碼:
CreateObject("SAPI.SpVoice").Speak"測試語音文件.",然后保存并把擴展名改為.vbs,這時,文件的圖標就發生了變化,然后雙擊該vbs文件,就會聽到語音朗讀。
這好像與程序無關,不急,接下來要在C#中,利用IO來處理該文件,并實現對他的調用。
先引入命名空間
using System.IO;
然后生成并調用腳本代碼如下:
string path = @"F:/test/a.vbs";//定義腳本路徑
string content = "CreateObject(\"SAPI.SpVoice\").Speak\"{0}\"";//定議腳本內容框架
content= string.Format(content, "你好,這是一段測試語音!");//合并生成腳本內容
File.WriteAllText(path,content,Encoding.Default);//把內容寫入腳本文件
Process.Start(path);//調用腳本文件
用機器去讀語音,是個好主意,但還要生成腳本文件,就顯的有些業余了,有沒有不生成語音文件的呢,那就是第三種情況。
第三種,用微軟的Speech Platform
要開發Microsoft Speech Platform應用,首先要整理好開發環境
需要下載四個文件
1、SpeechPlatformRuntime.msi
2、MSSpeech_TTS_zh-CN_HuiHui.msi
3、MSSpeech_SR_zh-CN_TELE.msi
4、MicrosoftSpeechPlatformSDK.msi
文件1的下載地址為:http://www.microsoft.com/en-us/download/details.aspx?id=27225
文件2和3的下載地址為:http://www.microsoft.com/en-us/download/details.aspx?id=27224
文件4的下載地址為:http://www.microsoft.com/en-us/download/details.aspx?id=27226
這些文件有x86,有64位的,要依自己的OS而定。
下載安裝完這些文件后,可以在解決方案中引用安裝的SDK,默認安裝在C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\ Microsoft.Speech.dll(要依據系統的路徑確定根目錄)
在代碼中引用命名空間
usingMicrosoft.Speech.Synthesis;
實現播放語音代碼如下:
SpeechSynthesizer ss = newSpeechSynthesizer();//實例化播放語音類型
ss.SetOutputToDefaultAudioDevice();//設置播放語音設備,為當前默認
ss.Volume= 10;//設置音量
ss.Speak("這是一個測試語音!");//讀語音
這樣就實現了簡單的語音而不產生語音文件
后兩種基實都是利用了微軟的TTS功能來實現的,第三種更為專業一些。
下面簡單比較幾種方式的優缺點:
播放器插件 | vbs | Speech Platform | |
優點 | 音質效果好,和語音文件相關。 使用簡單。 | 只需要錄入語音文字就可以,語音信息靈活 不需要安裝文件 | 不需要或產生任何文件 語音功能更強大 |
缺點 | 需要錄制語音,不靈活。 | 音質死板,單調 需要生成腳本文件 | 音質死板,單調 需要安裝包 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。