亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用語音即時校對輸入內容

系統 2083 0
原文: 使用語音即時校對輸入內容

?

使用語音即時校對輸入內容

?

此文將介紹利用微軟 TTS 引擎,在錄入數據時進行即時語音校對的示例。

?

這是一項非常簡單且非常實用的技術,此功能在行業軟件中使用的話,將會使用戶的錄入準確率大幅提高,還可減少甚至取消后期核對工作。

?

你需要使用以下類庫來操作 TTS

?

?

在文章末尾處提供的源代碼中將包含此類庫。

?

現在開始編寫這個示例程序:

?

新建一個 WinForm 項目,引入上述 dll ,在窗體后臺代碼中添加對其命名空間的引用:

?

?

using ?DotNetSpeech;

?

?

由于我們還需要用到正則表達式,所以也將其所在命名空間一并引用:

?

?

using ?System.Text.RegularExpressions;

?

?

然后來設計一個基本的用戶界面:

?

使用語音即時校對輸入內容

?

添加一個 B ackgroundWorker組件:

?

?

為其DoWork事件添加處理:

?

?

private ? void ?backgroundWorker1_DoWork( object ?sender,?DoWorkEventArgs?e)

{

????????SpeechVoiceSpeakFlags?SpFlags?
= ?SpeechVoiceSpeakFlags.SVSFlagsAsync;

????????SpVoice?Voice?
= ? new ?SpVoice();

????????Voice.Rate?
= ? - 3 ;

????????Voice.Speak(e.Argument.ToString(),?SpFlags);

}

?

?

Voice.Rate屬性是用來設置語速的修正值的,我希望它讀慢點,所以就設為了 -3

?

這個事件處理的功能就是在后臺將接收到的字符串通過 TTS 念出來。

?

我們再來編寫一個方法,來統一對backgroundWorker1進行調用:

?

?

void ?朗讀( object ?內容)

{

????
try

????{

????????backgroundWorker1.RunWorkerAsync(內容);

????}

????
catch ?(Exception?er)

????{

????????MessageBox.Show(er.Message,?
" 提示 " ,?MessageBoxButtons.OK,?MessageBoxIcon.Error);

????}

}

?

?

為了便于演示,加上我個人習慣,我將此方法名稱設為了中文。

?

由于語音處理需要一定時間,在此期間如果再度調用backgroundWorker1的RunWorkerAsync方法,將會引發異常,所以需要進行捕獲。

?

實際應用中如需要照顧較高速度的錄入,可以采用多個 B ackgroundWorker組件,輪流滾動處理。

?

接下來就是為每個輸入框定義朗讀方式了,我們會在用戶按下回車鍵時,進行語音處理,并將光標跳轉到下一個輸入框。

?

首先設置序號輸入框的事件處理:

?

?

private ? void ?numericUpDown1_KeyDown( object ?sender,?KeyEventArgs?e)

{

????
if ?(e.KeyData? != ?Keys.Enter)? return ;

????朗讀(numericUpDown1.Value);

????textBox1.Select();

}

?

?

然后是品名的:

?

?

private ? void ?textBox1_KeyDown( object ?sender,?KeyEventArgs?e)

{

????
if ?(e.KeyData? != ?Keys.Enter)? return ;

????朗讀(textBox1.Text);

????numericUpDown2.Select();

}

?

?

這兩個都比較簡單,九十直接念出原文。

?

單價則有些不同:

?

?

private ? void ?numericUpDown2_KeyDown( object ?sender,?KeyEventArgs?e)

{

????
if ?(e.KeyData? != ?Keys.Enter)? return ;

????朗讀(
" " ? + ?numericUpDown2.Value);

????numericUpDown3.Select();

}

?

?

在其內容前加了人民幣符號,它閱讀時就會這樣讀:九百六十七元

?

數量與之類似:

?

?

private ? void ?numericUpDown3_KeyDown( object ?sender,?KeyEventArgs?e)

{

????
if ?(e.KeyData? != ?Keys.Enter)? return ;

????朗讀(numericUpDown3.Value?
+ ? " " );

????textBox2.Select();

}

?

?

內部編號有些特殊,我期望它能夠將每個字母或數字都單獨念出,這可以通過加注拼寫標記來實現:“<spell></spell>”

但是這樣還有一個問題,就是他讀數字的時候會將其讀作英文,這不是我們所希望的,這還需通過加注語言標記來修正:“<voice required=""Language=804""></voice>”

故此我們需要附屬一個方法來將源文本格式化:

?

?

private ? void ?textBox2_KeyDown( object ?sender,?KeyEventArgs?e)

{

????
if ?(e.KeyData? != ?Keys.Enter)? return ;

????朗讀(加注中文標記(textBox2.Text));

????button1.Select();

}

?

string ?加注中文標記( string ?原字符串)

{

????
return ? string .Format( " <spell>{0}</spell> " ,?Regex.Replace(原字符串,? @" (.) " ,? @" <voice?required=""Language=804"">$1</voice> " ));

}

?

?

好了,最后是提交按鈕的事件處理,我們也要讓他朗讀點東西:

?

?

private ? void ?button1_Click( object ?sender,?EventArgs?e)

{

????listBox1.Items.Add(
new

????{

????????序號?
= ?numericUpDown1.Value,

????????品名?
= ?textBox1.Text,

????????價格?
= ?numericUpDown2.Value,

????????數量?
= ?numericUpDown3.Value,

????????內部編號?
= ?textBox2.Text

????});

????朗讀(numericUpDown1.Value?
+ ? " 號,添加完畢 " );

????numericUpDown1.Value
++ ;

????numericUpDown2.Value?
= ? 0 ;

????numericUpDown3.Value?
= ? 1 ;

????textBox1.Text?
= ?textBox2.Text? = ? "" ;

????numericUpDown1.Select();

}

?

?

至此這個示例就完成了,其使用效果見下面這段視頻:

?

?

源代碼下載

?


?

插播個小喇叭廣播:

?

我的MailMail現已正式發布,現在開始到9月1日0時止舉辦免費贈送注冊碼活動,歡迎參與^^: http://www.cnblogs.com/SkyD/archive/2008/08/28/1278463.html

?

??

使用語音即時校對輸入內容


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久成人综合 | 免费在线亚洲 | 99re5在线精品视频热线 | 国产激情一区二区三区四区 | 日本黄色录象 | 亚洲视频中文字幕在线观看 | 国产一级特黄高清免费大片 | 亚洲日本中文 | 欧美日韩高清观看一区二区 | 99热这里只有精品在线 | 爱爱日韩| 毛片黄片视频 | 天天爽夜夜爽天天做夜夜做 | 国产一区二区三区影院 | 四虎影院www| 成年女人视频在线观看免费 | 狠狠综合久久综合网站 | 日韩视频亚洲 | 奇米四色视频 | 国产精品久久毛片蜜月 | 99热免费观看 | 国产一区二区三区免费 | 欧美性精品不卡在线观看 | 91久久国产青草亚洲 | 亚洲免费成人网 | 私人午夜影院 | 日韩亚州 | 中文字幕视频免费在线观看 | 国产成人午夜精品影院游乐网 | 日日碰狠狠添天天爽对白 | 国产一区二区三区免费 | 99在线免费观看视频 | 国产亚洲精aa在线观看香蕉 | 狠狠狠色丁香婷婷综合久久五月 | 久久久青青久久国产精品 | 国产v欧美v日韩在线观看 | 国产成人免费全部网站 | 日本久久中文字幕精品 | 欧美成人一区二区三区在线电影 | 久久免费毛片 | 欧美日韩在线观看免费 |