如果在程序中播放語音,該怎么實(shí)現(xiàn)呢?(下需代碼是在VS2012中實(shí)現(xiàn))
五通橋網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,五通橋網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為五通橋近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的五通橋做網(wǎng)站的公司定做!
第一個(gè)我想到的是用語音文件,可以引用播放器插件到應(yīng)用中,再調(diào)用這些插件的API來實(shí)現(xiàn)。
首先創(chuàng)建一個(gè)控制臺(tái)應(yīng)用,在解決方案中添加引用,選中com選項(xiàng),找到Windows Media Player,然后添加到引用中,在引用中,這個(gè)插件的命名空間是WMPLib。接下來就可以用這個(gè)插件來實(shí)現(xiàn)語音的播放了。
選來引用加入的命名空間:
using WMPLib;
然后在Main方法中寫入
WindowsMediaPlayer player =newWindowsMediaPlayer();//實(shí)例化播放器類型
player.URL ="F:/test/a.wma";//把語音文件路徑賦給播放器
Console.Read();//暫停程序,不至于退出
用播放器插件實(shí)現(xiàn)起來非常簡單,其實(shí)插件功能還很強(qiáng)大,可能理進(jìn)一步研究player的成員。
第二個(gè),用vbs腳本文件,首先創(chuàng)建一個(gè)記事本文件,打開記事本,在里面寫入下面代碼:
CreateObject("SAPI.SpVoice").Speak"測(cè)試語音文件.",然后保存并把擴(kuò)展名改為.vbs,這時(shí),文件的圖標(biāo)就發(fā)生了變化,然后雙擊該vbs文件,就會(huì)聽到語音朗讀。
這好像與程序無關(guān),不急,接下來要在C#中,利用IO來處理該文件,并實(shí)現(xiàn)對(duì)他的調(diào)用。
先引入命名空間
using System.IO;
然后生成并調(diào)用腳本代碼如下:
string path =@"F:/test/a.vbs";//定義腳本路徑
string content ="CreateObject(\"SAPI.SpVoice\").Speak\"{0}\"";//定議腳本內(nèi)容框架
content=string.Format(content,"你好,這是一段測(cè)試語音!");//合并生成腳本內(nèi)容
File.WriteAllText(path,content,Encoding.Default);//把內(nèi)容寫入腳本文件
Process.Start(path);//調(diào)用腳本文件
用機(jī)器去讀語音,是個(gè)好主意,但還要生成腳本文件,就顯的有些業(yè)余了,有沒有不生成語音文件的呢,那就是第三種情況。
第三種,用微軟的Speech Platform
要開發(fā)Microsoft Speech Platform應(yīng)用,首先要整理好開發(fā)環(huán)境
需要下載四個(gè)文件
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,默認(rèn)安裝在C:\Program Files\Microsoft SDKs\Speech\v11.0\Assembly\ Microsoft.Speech.dll(要依據(jù)系統(tǒng)的路徑確定根目錄)
在代碼中引用命名空間
usingMicrosoft.Speech.Synthesis;
實(shí)現(xiàn)播放語音代碼如下:
SpeechSynthesizer ss =newSpeechSynthesizer();//實(shí)例化播放語音類型
ss.SetOutputToDefaultAudioDevice();//設(shè)置播放語音設(shè)備,為當(dāng)前默認(rèn)
ss.Volume= 10;//設(shè)置音量
ss.Speak("這是一個(gè)測(cè)試語音!");//讀語音
這樣就實(shí)現(xiàn)了簡單的語音而不產(chǎn)生語音文件
后兩種基實(shí)都是利用了微軟的TTS功能來實(shí)現(xiàn)的,第三種更為專業(yè)一些。
下面簡單比較幾種方式的優(yōu)缺點(diǎn):
播放器插件 | vbs | Speech Platform | |
優(yōu)點(diǎn) | 音質(zhì)效果好,和語音文件相關(guān)。 使用簡單。 | 只需要錄入語音文字就可以,語音信息靈活 不需要安裝文件 | 不需要或產(chǎn)生任何文件 語音功能更強(qiáng)大 |
缺點(diǎn) | 需要錄制語音,不靈活。 | 音質(zhì)死板,單調(diào) 需要生成腳本文件 | 音質(zhì)死板,單調(diào) 需要安裝包 |