亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#文本轉語音并保存wav和MP3文件

2019-11-17 03:08:31
字體:
來源:轉載
供稿:網友

C#文本轉語音并保存wav和MP3文件

  回顧上次寫博客至今都有4個多月了,最近工作比較的忙沒時間寫博文。以后會多堅持寫博文,與大家分享下最近遇到的問題。最近因為項目需要,研究了下用C#開發TTS。下面把大體的思路給大家說說,希望對大家有所幫助。

  首先需要了解下MS的SAPI,它是微軟的語音API。它包括了語音識別SR引擎和語音合成SS引擎兩種語音引擎。等下會給大家看下語音合成SS引擎。它由不同的版本,操作系統的不同使用的版本不同,不過我喜歡使用其他的合成語音包,比如:NeoSpeech公司的合成語音包?;剡^頭來,MS 的SAPI的版本有:5.1、5.3和5.4。具體用途如下:  

  1.Windows Speech SDK 5.1版本支持xp系統和server 2003系統,需要下載安裝。XP系統默認只帶了個Microsoft Sam英文男聲語音庫,想要中文引擎就需要安裝Windows Speech SDK 5.1。下載地址:http://www.microsoft.com/download/en/details.aspx?id=10121

2. Windows Speech SDK 5.3版本支持Vista系統和Server 2008系統,已經集成到系統里。Vista和Server 2003默認帶Microsoft lili中文女聲語音庫和Microsoft Anna英文女聲語音庫。

3. Windows Speech SDK 5.4版本支持Windows7系統,也已經集成到系統里,不需要下載安裝。Win7系統同樣帶了Microsoft lili中文女聲語音庫和Microsoft Anna英文女聲語音庫。Microsoft lili支持中英文混讀。

  到這里環境就準備好了,接下來講訴下開發TTS要用到的類,我使用的是.net類庫提供的語音類System.Speech.Synthesis.SpeechSynthesizer,使用前需要添加引用:System.Speech。該類的主要方法、屬性、事件如下:

  方法:

  GetInstalledVoices():獲取當前系統中安裝的語音播放人,返回一個VoiceInfo對象集合,具體的對象有在控制面板中,語音項可以查看。Xp默認是Microsoft Sam。

  SelectVoice(string):選擇當前朗讀的人員,參數是朗讀者名稱,如:Microsoft Sam

  SpeakAsync(string):開始進行異步朗讀,參數是朗讀的文本。

  Speak(string):開始進行朗讀,參數是朗讀的文本。這里我沒有弄懂SpeakAsync和Speak的區別,我試了下效果都一樣。

  Pause():暫停正在播放朗讀。

  Resume():繼續播放暫停的朗讀。

  SetOutputToWaveFile(string):保存語音文件,調用該方法后需要調用Speak方法。參數是保存文件的路徑。如:d:/124.wav或d:/123.MP3

  SetOutputToNull():保存文件結束語句,必須調用該語句,否則生產的語音文件無法播放。

  屬性:

  Rate:播放語速,-10~10

  Volume:音量調節:0~100

  Voice:正在使用某個人員播放,返回:VoiceInfo對象。

  事件:

  SpeakCompleted:朗讀完成事件,朗讀完成后會觸發該時間??梢栽谠撌录刑幚聿シ磐瓿珊蟮牧鞒獭?/p>

  SpeakStarted:朗讀開始事件。

  SpeakPRogress:朗讀過程事件,可以繼續一些進度條處理。

  。。。。

其他屬性、方法、事件用得少就不多講了,自己看下API就知道了。有什么問題可以給我留言,我們共同探討。界面如下:

還是把代碼貼上來吧,主要代碼如下:

private SpeechSynthesizer synth = null;//語音對象

/// <summary> /// 返回一個SpeechSynthesizer對象 /// </summary> /// <returns></returns> private SpeechSynthesizer GetSpeechSynthesizerInstance() { if (synth == null) { synth = new SpeechSynthesizer(); } return synth; }

/// <summary> /// 獲得朗讀設置對象 /// </summary> /// <returns></returns> private VoiceClass GetVoiceClass() { VoiceClass setViceClass = new VoiceClass(); setViceClass.VoiceName = cboTokens.Text; setViceClass.Rate = int.Parse(cboSpeed.Text); setViceClass.Volume = tbVoice.Value; setViceClass.VoiceText = txtInput.Text; return setViceClass; }

/// <summary> /// 播放 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnGo_Click(object sender, EventArgs e) { if (IsVaild()) { VoiceClass setViceClass = GetVoiceClass();//VoiceClass 是自己建立的一個類,里面封轉了語速 音量 播放人 播放文本 Thread thread = new Thread(RingVoice); thread.Start(setViceClass); } } /// <summary> /// 開始朗讀 放在線程中 /// </summary> /// <param name="VoiceObject"></param> public void RingVoice(object VoiceObject) { try { VoiceClass voiceClass = (VoiceClass)VoiceObject; synth = GetSpeechSynthesizerInstance(); synth.SelectVoice(voiceClass.VoiceName); synth.Rate = voiceClass.Rate; synth.Volume = voiceClass.Volume; synth.SpeakAsync(voiceClass.VoiceText); } catch (Exception er) { MessageBox.Show(er.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } }

/// <summary> /// 保存 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Click(object sender, EventArgs e) { if (IsVaild()) { synth = GetSpeechSynthesizerInstance(); VoiceClass voiceClass = GetVoiceClass(); synth.SelectVoice(voiceClass.VoiceName); synth.Rate = voiceClass.Rate; synth.Volume = voiceClass.Volume;

SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = "保存文檔"; saveFileDialog.Filter = "*.wav|*.wav|*.mp3|*.mp3"; saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); DialogResult saveDialog = saveFileDialog.ShowDialog(); try {

if (saveDialog == System.Windows.Forms.DialogResult.OK) { synth.SetOutputToWaveFile(saveFileDialog.FileName); synth.Speak(voiceClass.VoiceText); synth.SetOutputToNull(); System.Diagnostics.Process.Start("Explorer.exe", string.Format(@"/select,{0}", saveFileDialog.FileName));//打開wav目錄并選中文件 }

} catch (Exception er) { MessageBox.Show(er.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }

/// <summary> /// 繼續 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnContinum_Click(object sender, EventArgs e) { synth.Resume(); } /// <summary> /// 暫停 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnStop_Click(object sender, EventArgs e) { synth.Pause(); }

有個問題,不知道是什么原因,要播放的內容:歡迎致電12345客服服務系統,它把12345給我朗讀成:1萬2千3百4十五。這個問題還在解決中,誰知道麻煩給我留下言,謝謝。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情精品在线| 成人精品一区二区三区电影免费| 久久99热精品这里久久精品| 亚洲第一中文字幕在线观看| 欧美午夜精品久久久久久人妖| 日韩欧美主播在线| 在线播放日韩专区| 国产精品入口免费视| 亚洲第一区在线观看| 久久久精品一区二区三区| 在线观看久久久久久| 国产精品www色诱视频| 久久视频精品在线| 国产成人精品999| 91成人在线观看国产| 亚洲欧美在线磁力| 在线看片第一页欧美| 91天堂在线观看| 26uuu亚洲国产精品| 欧美日在线观看| 欧美色videos| 国内精品中文字幕| 亚洲国产中文字幕久久网| 国产精品678| 国内精品久久久久久影视8| 成人在线播放av| 色妞欧美日韩在线| 欧美疯狂性受xxxxx另类| 成人在线国产精品| 国产成人精品综合| 色先锋资源久久综合5566| 欧美亚洲一级片| 日韩在线观看你懂的| 色婷婷av一区二区三区在线观看| 另类少妇人与禽zozz0性伦| 一本一本久久a久久精品综合小说| 亚洲片在线观看| 欧美日韩综合视频网址| 国产欧美精品一区二区三区-老狼| 91久久精品美女| 日韩中文字幕免费看| 国产91对白在线播放| 日韩中文字在线| 欧美激情一级二级| 在线亚洲男人天堂| 性欧美长视频免费观看不卡| 亚洲激情在线观看视频免费| 成人日韩av在线| 亚洲欧美日韩精品| 国产精品久久久久久久久久尿| 亚洲最大福利网站| 久久久久久久一区二区| 97香蕉超级碰碰久久免费的优势| 日韩成人在线播放| 国产精品视频网| 最近2019中文免费高清视频观看www99| 日韩专区在线观看| 久久人人看视频| 欧美精品成人91久久久久久久| 久久精品色欧美aⅴ一区二区| 国产亚洲精品一区二区| 国产z一区二区三区| 日本成人精品在线| 国产日本欧美视频| 亚洲人成网站免费播放| 精品免费在线观看| 亚洲成人精品视频在线观看| 国产日韩精品电影| 538国产精品一区二区在线| 亚洲欧洲一区二区三区在线观看| 国产精品1区2区在线观看| 国产在线视频91| 5566成人精品视频免费| 国产亚洲视频中文字幕视频| 精品久久中文字幕久久av| 日韩精品中文字幕有码专区| 欧美在线免费视频| 国产成人jvid在线播放| 黄网动漫久久久| 国产精品入口免费视频一| 久久亚洲一区二区三区四区五区高| 国产不卡在线观看| 亚洲精品女av网站| 亚洲男人天堂手机在线| 国产精品美女久久久久久免费| 91精品国产高清久久久久久久久| 国语自产精品视频在线看抢先版图片| 国产美女高潮久久白浆| 亚洲欧洲第一视频| 日韩美女激情视频| 最近中文字幕mv在线一区二区三区四区| 成人黄色中文字幕| 日本久久久久久久久久久| 欧美最近摘花xxxx摘花| 亚洲免费电影在线观看| 日韩中文字幕国产| 91亚洲精品久久久| 成人欧美一区二区三区在线| 成人h视频在线观看播放| 国产欧美亚洲视频| 欧美怡红院视频一区二区三区| 亚洲第一黄色网| 国产日韩精品综合网站| 欧美一级电影在线| 欧美成人精品xxx| 亚洲自拍av在线| 久久久噜久噜久久综合| 日本三级久久久| 国产欧美一区二区三区四区| 国产伦精品一区二区三区精品视频| 成人国产精品久久久久久亚洲| 日韩欧美高清视频| 国产97色在线| 丝袜美腿亚洲一区二区| 久久久久久一区二区三区| 最近中文字幕mv在线一区二区三区四区| 日韩在线观看视频免费| 日本欧美精品在线| 日本19禁啪啪免费观看www| 精品久久香蕉国产线看观看gif| 国产成人精品一区二区| 久久久久久九九九| 日韩av影视综合网| 亚洲第一福利网站| 欧美亚洲另类在线| 欧美夫妻性生活视频| 欧美日韩免费在线观看| 在线观看欧美视频| 黑人精品xxx一区| 国产色综合天天综合网| 欧美丰满少妇xxxxx做受| 国产在线精品播放| 国产精品久久久久久久久久久新郎| 欧美日韩美女视频| 国产精品视频色| 日本一区二三区好的精华液| 国产最新精品视频| 国产精品久久久久久久久久尿| 日韩美女免费观看| 久久免费少妇高潮久久精品99| 成人福利在线观看| 欧美日韩亚洲成人| 中文字幕亚洲情99在线| 国产91色在线播放| 国产成人精品综合久久久| 91精品国产综合久久香蕉922| 亚洲色图13p| 欧美激情2020午夜免费观看| 亚洲大胆人体av| 欧美在线视频a| 日韩在线中文字幕| 91高潮精品免费porn| 国产精品69精品一区二区三区| 日韩中文字幕不卡视频| 日韩在线视频一区| 日日噜噜噜夜夜爽亚洲精品| 亚洲开心激情网| 日韩欧美成人免费视频| 欧美日韩国产精品一区二区三区四区| 亚洲一区二区日本| 亚洲人av在线影院| 国产欧美va欧美va香蕉在| 日韩有码在线播放| 国产日韩精品在线|