.NET 将文本转换成语音 (转)
?
?
用過金山詞霸的都知道金山詞霸里有個(gè)功能能夠?qū)卧~按其讀音讀出來。也許會(huì)有人認(rèn)為它是事先將所有的單詞的讀音文件存儲(chǔ)在數(shù)據(jù)庫里,然后事需要的時(shí)候再調(diào)用。其實(shí)事實(shí)上并不是這樣,我們有更好的解決辦法,MS就專門提供了這種技術(shù)。
?
在計(jì)算機(jī)中將文本轉(zhuǎn)換成語音的技術(shù)叫做語音合成(TTS:Text To Speech)。要使用它的話就需要到MS官網(wǎng)上去下載地址為:http://www.microsoft.com/reader/developers/downloads/tts.mspx
這個(gè)東西不是很大,到于原理還沒有去想過,因?yàn)楝F(xiàn)在只是幫想了解的朋友做個(gè)最基本的DEMO。
下下來了后就安裝,注意:如果想實(shí)現(xiàn)漢字或非英語的閱讀就要去下載SpeechSDK51LangPack。
下面來創(chuàng)建一個(gè)TTS程序,首先在VS中創(chuàng)建一個(gè)項(xiàng)目,然后添加引用"安裝目錄"Samples"Csharp"ListBox"中的Interop.SpeechLib.dll程序集,在程序里引用SpeechLib Namespace。
創(chuàng)建SpVoiceClass類,(SpVoiceClass是我們這里要用到的主要的類),面在這里必要的屬性如下:
| 屬性名 | 類型 | 說明 |
| Voice | SpObjectToken | 大概是用于設(shè)置聲音的效果 |
| AudioOutput | SpObjectToken | 用于選擇聲卡 |
| Rate | Int | 頻率,說話的速度 |
| Volume | Int | 音量,最大為100 |
?
根據(jù)SpVoiceClass類中幾個(gè)必要的屬性,我們可以做一個(gè)類似下圖的簡單界面
具體的實(shí)現(xiàn)代碼如下:
?
Codeprivate void button1_Click(object sender, EventArgs e)
{
try
{
voic.Voice = voic.GetVoices(null, null).Item(comboBox1.SelectedIndex);
voic.AudioOutput = voic.GetAudioOutputs(null, null).Item(comboBox2.SelectedIndex);
voic.Rate = trackBar1.Value;
voic.Volume = trackBar2.Value;
voic.Speak(textBox1.Text, SpeechVoiceSpeakFlags.SVSFDefault);
}
catch
{
;
}
}
注意:comboBox1.SelectedIndex不為3時(shí)只能讀英語;如果為3,要讀是是英文的話,它就會(huì)一個(gè)字母一個(gè)字母的讀出來,如果是漢字則會(huì)讀漢語(前提是裝了話音補(bǔ)丁)
?
好了,簡單的Demo已經(jīng)完成了,接著去探索吧……
?
?
注:引用
?
http://www.cnblogs.com/desmend/archive/2008/09/26/1299779.html
轉(zhuǎn)載于:https://www.cnblogs.com/lbg280/archive/2008/09/26/1299896.html
總結(jié)
以上是生活随笔為你收集整理的.NET 将文本转换成语音 (转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于CSS属性display:none和
- 下一篇: 快乐