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