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

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

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

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

  回顧上次寫博客至今都有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:朗讀完成事件,朗讀完成后會觸發該時間。可以在該事件中處理播放完成后的流程。

  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
欧美中文字幕在线观看| 国产精品专区第二| 亚洲人永久免费| 国产精品亚洲片夜色在线| 亚洲一区精品电影| 蜜月aⅴ免费一区二区三区| 亚洲国产日韩欧美在线99| 日韩国产欧美精品在线| 亚洲综合在线小说| 欧美高清不卡在线| 国产一区二区av| 国产精品视频网| 亚洲性日韩精品一区二区| 亚洲男人的天堂在线播放| 亚洲最大福利视频| 免费91麻豆精品国产自产在线观看| 日韩女在线观看| 亚洲国产欧美一区二区丝袜黑人| 中文亚洲视频在线| 午夜精品久久久久久久99黑人| 性色av一区二区咪爱| 日产精品久久久一区二区福利| 2018中文字幕一区二区三区| 亚洲天堂av在线播放| 日韩欧美黄色动漫| 国产精品久久久久高潮| 国内精品美女av在线播放| 国产日韩精品综合网站| 国产一区二区三区直播精品电影| 成人免费在线网址| 国产精品一区二区三区成人| 国产精品久久一区| 国产91ⅴ在线精品免费观看| 欧美电影免费观看大全| 国产精品久久久av| 欧美视频在线观看免费| 国产日韩精品在线播放| 午夜精品国产精品大乳美女| 国产精品视频免费观看www| 国产黑人绿帽在线第一区| 91亚洲国产成人精品性色| 97精品视频在线| 97视频在线观看亚洲| 欧美丰满少妇xxxxx| 欧美最顶级丰满的aⅴ艳星| 精品久久久久久久中文字幕| 欧美性猛交xxxx免费看漫画| 97成人超碰免| 成人精品一区二区三区| 国产不卡精品视男人的天堂| 在线观看日韩www视频免费| 国产精品一香蕉国产线看观看| 国产精品久久久久久久久久久久| 久久久久久久999精品视频| 国产精品h在线观看| 亚洲日韩中文字幕在线播放| 久久99国产精品久久久久久久久| 久久久国产在线视频| 亚洲国产另类久久精品| 国模视频一区二区三区| 国产精品久久久一区| 狠狠躁夜夜躁人人爽天天天天97| 亚洲欧美综合区自拍另类| 57pao精品| 日本中文字幕不卡免费| 欧美日韩加勒比精品一区| 久久久免费精品| 色老头一区二区三区在线观看| 一级做a爰片久久毛片美女图片| 伊人久久久久久久久久久久久| 欧美插天视频在线播放| 欧美精品videosex牲欧美| 亚洲成人教育av| 亚洲精品资源在线| 久久影视电视剧免费网站| 亚洲已满18点击进入在线看片| 亚洲女人天堂成人av在线| 亚洲日韩中文字幕在线播放| 国产亚洲xxx| 精品视频—区二区三区免费| 在线观看亚洲区| 国产一区二区香蕉| 国产精品视频一区二区高潮| 日韩人在线观看| 亚洲国产天堂久久综合网| 亚洲成人在线网| 91高清视频免费| 久久久亚洲国产天美传媒修理工| 国产91精品久久久久久久| www日韩中文字幕在线看| 欧美最猛性xxxxx(亚洲精品)| 亚洲美女激情视频| 国产一级揄自揄精品视频| 在线电影av不卡网址| 国产欧美日韩中文字幕在线| 欧美日韩高清区| 国产精品视频999| 日韩欧美一区二区在线| 国产欧美日韩综合精品| 成人综合网网址| 国产精品旅馆在线| 欧美日韩成人免费| 日韩av综合中文字幕| 欧美精品在线看| 欧美国产一区二区三区| 亚洲高清免费观看高清完整版| 精品性高朝久久久久久久| 欧美成人自拍视频| 国内精品久久久久伊人av| 亚州av一区二区| 成人精品网站在线观看| 欧美做受高潮1| 国产丝袜一区视频在线观看| 欧美精品少妇videofree| 亚洲三级免费看| 俺去啦;欧美日韩| 国产成人精品电影| 久久久久一本一区二区青青蜜月| 久久精品亚洲热| 日韩视频永久免费观看| 欧美激情中文字幕乱码免费| 欧美日韩免费网站| 亚洲最大成人免费视频| 亚洲第一精品夜夜躁人人躁| 亚洲欧美中文在线视频| 国产精品高潮粉嫩av| 国产精品福利网| 国产精品十八以下禁看| 国产欧美久久一区二区| 中文字幕精品www乱入免费视频| 亚洲视频在线观看视频| 亚洲精品永久免费| 最新的欧美黄色| 午夜精品一区二区三区av| 亚洲缚视频在线观看| 欧美一级淫片丝袜脚交| 久久免费视频在线观看| 国产精品久久久久久影视| 国产精品偷伦免费视频观看的| 精品女同一区二区三区在线播放| 久久综合伊人77777| 亚洲аv电影天堂网| 日本高清视频一区| 亚洲电影av在线| 欧美专区福利在线| 国产精品久久久久久久久久久不卡| 久久青草精品视频免费观看| 日韩视频第一页| 国产精品美女999| 91高清视频免费观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 91黑丝在线观看| 欧美激情va永久在线播放| 亚洲成年人在线播放| 亚洲a区在线视频| 成人信息集中地欧美| 久久久极品av| 欧美中文在线字幕| 亚洲精品福利免费在线观看| 国产精品久久久久久久久久小说| 欧美激情乱人伦| 亚洲a∨日韩av高清在线观看| 日韩美女视频免费看| 亚洲精品视频在线播放|