首先添加一個系統(tǒng)的語音COM組件的引用microsoft speech object library然后在程序中聲明一個語音類dim RC As SpeechLib.SpSharedRecoContext這個類有一些事件,如果你要處理它的一些事件,可以用withevent來聲明然后在窗體LOAD事件或你需要的地方先創(chuàng)建一個實例RC = New SpeechLib.SpSharedRecoContext當一個RC被實例化后,系統(tǒng)就會運行語音識別程序.前提是你的系統(tǒng)已經(jīng)正確安裝這個功能.一般默認就已經(jīng)安裝好的.其次提醒一下,WIN7的語音識別比XP的好N倍.從閱讀到偵聽都好很多.然后就可以在你需要閱讀的地方使用RC.Voice.Speak("hello 我", 11)11那里是一些枚舉,用來標識系統(tǒng)用前臺還是后臺或其他方式來閱讀文字,簡單的來說就是閱讀的時候不會卡住你的程序.你可以選其他的枚舉來試試作用.以上為閱讀部分.如果需要程序聽你說話,則需要聲明一個偵聽類dim RG As SpeechLib.ISpeechRecoGrammar在初始化時將之與上面的RC建立關(guān)系,此時則必須要用withevent來聲明上面的RC,因為涉及電腦聽到你的語音后,會觸發(fā)一個事件,并將聽到的內(nèi)容傳遞到該事件.其次,要讓系統(tǒng)聽到的解析為命令,就必須準備一個XML結(jié)構(gòu)的文件來保存那些固定的命令.如果電腦在XML文件中找不到那些固定命令或同時不屬于系統(tǒng)命令,電腦將會將其解釋為聽寫.RG = RC.CreateGrammar '(0)
目前創(chuàng)新互聯(lián)公司已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、富平網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
RG.CmdLoadFromFile("聽到.xml", SpeechLib.SpeechLoadOption.SLODynamic)
RG.CmdSetRuleIdState(0, SpeechLib.SpeechRuleState.SGDSActive)然后寫一個過程來處理聽到的事件Private Sub 聽到命令(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal 話語 As SpeechLib.ISpeechRecoResult) Handles RC.Recognition RC.Voice.Speak("我聽到了" 話語.PhraseInfo.GetText, 11)End Sub以上為偵聽部分.下面列一個XML的例文?xml version="1.0" encoding="gb2312"?
GRAMMAR LANGID="804"
RULE NAME="命令" TOPLEVEL="ACTIVE"
L
P打開播放器
P上我的QQ
P關(guān)閉你自己 /L
/RULE
/GRAMMAR要讓系統(tǒng)正確地偵聽到你說的話,前提你必須運行語音識別程序并讓其激活到"正在聆聽"狀態(tài).并且你必須有一個能正常使用的話筒而且保證話筒已經(jīng)打開.(廢話-_-|||)以上就是用VB.NET語音識別的最基本的一些操作.希望對你有幫助.更深入的內(nèi)容有興趣的話可以和我一起研究.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim s As Object
s = CreateObject("sapi.spvoice")
s.speak("speak")
End Sub
.c 是c語言的源程序,
.cpp是c++語言的源程序,
這是兩種不同的語言,語法不同。但是c++兼容c語言的絕大部分語法特性,所以該段代碼在C++中可以運行,但是在C語言中就會報錯。
下面以常見的hello world為例。
1、打開vs2012——文件——新建——項目,單擊(如圖)
2、在對話框左側(cè)分別找到模板——其他語言——visual c++——win32(如圖)。選擇“win32控制臺應(yīng)用程序”并設(shè)置好”名稱“和”存儲路徑 “后單擊確定
3、單擊下一步
4、然后勾選”空項目“
5、接著單擊菜單欄——視圖——解決方案資源管理器
6、在彈出的浮動窗口中單擊右鍵 ”源文件“(如圖)
7、然后選擇——添加——新建項 單擊(如圖)
8、接著選擇visual c++ 后選擇”c++文件“并命名為holloworld.c
9、接著輸入c語言代碼
復(fù)制內(nèi)容到剪貼板
#includestdio.h
int main()
{
printf("hello world!");
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
接著單擊”本地windows調(diào)試器“或者ctrl + F5
10、單擊是
11、運行結(jié)果如下圖
C++和C#都是編程常用語言,二者相似但又有很多不同,在編程上的具體差異有以下幾點
1、設(shè)計目的上有所區(qū)別。
在C++設(shè)計之時考慮到提供先進的面向?qū)ο筇匦裕瑫r也為了提供很好的性能。為了以往的程序得到保證、工程師在開發(fā)時的知識兼容,目前C#與C++幾乎完全兼容。
2、C#通過底層的虛擬機機制減少了C++語言中常常容易發(fā)生的內(nèi)存泄漏和安全性問題,運行速度相對減慢,但是大大提高了開發(fā)者的效率。
3、C#編譯成中間語言與Java在字節(jié)代碼上有些相似。而C++經(jīng)常把代碼編譯成匯編語言之后,在通過Iust-In-Time編譯進程轉(zhuǎn)換成本機的可執(zhí)行代碼。
4、C#不再需要顯式地刪除動態(tài)分配的給堆的內(nèi)存,而C++則要這么做,無用存儲單元收集器將周期性地清空。
5、C#中指針的運用可能與C++一樣,但它只用于已特別標記為應(yīng)用指針的代碼塊中。對于大部分的程序,C#依賴VB/Java風(fēng)格的對類實例的引用,而不需和C++一樣頻繁地使用指針。
6、C++比C#中用來顯式重載的運算符比要多,主要是C#編譯器是運用一些定制的基本操作符重載(如=)來自動計算出組合操作符的重載(如+=)
7、C++依賴于標準庫,C#依賴于.NET基類。.NET基類是以單一的繼承為基礎(chǔ),而標準庫是以繼承和模板為基礎(chǔ)。
8、C#是基于GUI的環(huán)境下(不僅僅是Windows環(huán)境,盡管現(xiàn)在只是在Windows中可用)專門為編程和背景服務(wù)(如Web服務(wù))而設(shè)計的。這與語言本身無關(guān),而是反映在基類庫的設(shè)計中。
以下是一個TTS語音的示例程序,它可以識別中文跟英文的文本,通過此程序可以幫助編程者快速的熟悉VB下TTS的編程,
也可根據(jù)這個示例進一步開發(fā)有關(guān)英文小精靈之類的軟件?。?/p>
運行之前必須安裝microsoft中文引擎,附錄在程序所在的文件夾里面!!
本站提供TTS_forVB免費下載,版權(quán)歸該下載資源的合法擁有者所有。
laser_2008
在VB中使用文字朗讀引擎(TTS)技術(shù)
現(xiàn)今市面上流行的一些英語學(xué)習(xí)軟件,在廣告詞上經(jīng)常說自己使用了國際頂尖的全程語音TTS技術(shù),能進行整段英文的流利朗讀,并能自由調(diào)節(jié)朗讀的速度與頻率等。那么,這個神奇的TTS究竟是什么東西呢?
其實,TTS是微軟出品的一套文字朗讀引擎(Text-To-Speech Engine),這些英語軟件就是調(diào)用它來進行英文朗讀的。我們在英語學(xué)習(xí)軟件的編程開發(fā)中也可使用TTS技術(shù),下面筆者將利用Visual Basic 5.0來揭開TTS神秘的面紗。
一、安裝TTS引擎
TTS引擎所需的Microsoft Text-to-Speech Engine與Microsoft Speech API軟件都可到微軟的站點去下載,也可以在“金山詞霸2000”或“金山詞霸.net”的安裝光盤上找到(文件名為MSTTS.EXE與SPCHAPI.EXE)。安裝了TTS引擎后,在Windows所在目錄下會生成一個SPEECH目錄,其中有一個Vtxtauto.tlb文件,在編程時我們需要調(diào)用它。
二、在VB中引入Vtxtauto.tlb文件
進入VB 5.0,執(zhí)行選單命令“文件/新建工程/標準EXE”并確定,然后執(zhí)行選單“工程”中的“引用”,單擊“瀏覽”按鈕到Windows目錄下的SPEECH子目錄,打開Vtxtauto.tlb文件,將“VoiceText 1.0 Type Library”添加到引用列表中,選中它并單擊確定。將庫Vtxtauto引入VB后,我們可以通過選單“視圖”中的“對象瀏覽器”來了解它所封裝的類,以及各類成員函數(shù)的屬性的意義、使用格式等信息。一些主要的方法與屬性意義,筆者在下面的源程序中將給出注釋,在這里就不詳細列出。
三、設(shè)置控件及屬性
在FORM1上添加三個Label控件、一個TextBox控件、一個HScrollBar控件和六個CommandButton控件。窗體及各控件的主要屬性設(shè)置如下:
FORM1:Caption=“英文朗讀”
LABEL1:Caption=“請輸入英文文檔”
LABEL2:Caption=“朗讀速度”
LABEL3:Caption=“ ”
(LABEL3標簽用來顯示朗讀速度值)
TEXT1:Text=“Please input english text”;ToolTiptext=“請輸入或粘貼英文文檔”; MultiLine=True;ScrollBars=3-Both
HSCROLL1:名稱=SpeedChange;Min=90;Max=300(Min與Max屬性值分別用來限定可調(diào)節(jié)的語速的最小與最大值)
COMMAND1:名稱=read;Caption=“朗讀”
COMMAND2:名稱=pause;Caption=“暫?!?/p>
COMMAND3:名稱=stop;Caption=“停止”
COMMAND4:名稱=prev;Caption=“上一句”
COMMAND5:名稱=next;Caption=“下一句”
COMMAND6:名稱=quit;Caption=“退出”
2007-11-5 03:53 PM laser_2008
四、編寫代碼
下面我們就可以一步步地編寫代碼,具體代碼如下:
'在窗體裝載時調(diào)用Register方法注冊,括號內(nèi)的兩個參數(shù)是字符串
Private Sub Form_Load()
Call VTxtAuto.VTxtAuto.Register(Space(8), Space(8))
'因為語速的默認值為170,故水平滾動條的初值也設(shè)為170
SpeedChange.Value = 170
End Sub
'設(shè)置朗讀速度調(diào)節(jié)代碼,當水平滾動條的值Value發(fā)生變化時將其賦給控制語速的Speed屬性
Private Sub SpeedChange_Change()
VTxtAuto.VTxtAuto.Speed=SpeedChange.Value
Label3.Caption = SpeedChange.Value
End Sub
'設(shè)置“朗讀”按鈕代碼
Private Sub read_Click()
'如果朗讀出錯,則轉(zhuǎn)到出錯處理標記模塊ErrorHandler
On Error GoTo ErrorHandler
'調(diào)用方法Speak進行朗讀,第一個參數(shù)是要朗讀的文本,第二個參數(shù)是設(shè)置朗讀風(fēng)格
Call VTxtAuto.VTxtAuto.speak(Trim(Text1.Text), vtxtsp_VERYHIGH + vtxtst_READING)
Exit Sub
ErrorHandler:
MsgBox "只能朗讀英文文檔,不能朗讀漢字字符!", , "出錯信息"
End Sub
'設(shè)置“暫停”按鈕代碼
Private Sub pause_Click()
If VTxtAuto.VTxtAuto.IsSpeaking Then
'如果屬性IsSpeaking為真,則表示正在朗讀,調(diào)用AudioPause方法暫停朗讀
Call VTxtAuto.VTxtAuto.AudioPause
pause.Caption = "恢復(fù)"
Else
'如果已經(jīng)處于暫停狀態(tài)則調(diào)用AudioResume方法恢復(fù)朗讀
Call VTxtAuto.VTxtAuto.AudioResume
pause.Caption = "暫停"
End If
End Sub
'設(shè)置“停止”按鈕代碼,調(diào)用StopSpeaking方法停止當前朗讀
Private Sub stop_Click()
Call VTxtAuto.VTxtAuto.StopSpeaking
End Sub
'設(shè)置“上一句”按鈕代碼,調(diào)用AudioRewind方法往后跳過一句
Private Sub prev_Click()
Call VTxtAuto.VTxtAuto.AudioRewind
End Sub
'設(shè)置“下一句”按鈕代碼,調(diào)用AudioFastForward方法向前跳過一句
Private Sub next_Click()
Call VTxtAuto.VTxtAuto.AudioFastForward
End Sub
'設(shè)置“退出”按鈕代碼
Private Sub quit_Click()
Unload Me
End Sub
本程序在中文Windows 95/98、VB 5.0環(huán)境下運行通過。運行時在文本編輯框中輸入或粘貼英文文檔,然后單擊“朗讀”按鈕就可播放讀音。
五、程序改進思路
本文對在VB編程中使用TTS技術(shù)只是起個拋磚引玉的作用,熟悉VB編程的電腦愛好者來可以對本程序作一些改進,例如增加對聲卡和TTS引擎是否安裝的檢測、增加從文本文件或數(shù)據(jù)庫中讀取文檔的功能、增加讓用戶選擇朗讀的優(yōu)先級和發(fā)聲音量調(diào)節(jié)等功能。這些功能實現(xiàn)起來較為復(fù)雜,感興趣的讀者可進行深入研究。
2008-6-17 03:35 PM walefrt
語音朗讀軟件有:如WINDOWS自帶的講述人, 和第三方免費軟件[url= ][u]Panopreter中文版[/u][/url], 或[url= ][u]英文版[/u][/url
MS Speech 是一個合成語音軟件,可用來形成語音(例如朗讀"Hi I am Mike"),Speech SDK是用來將Speech的功能使用于自己的程序的輔助開發(fā)工具。