基于MSTTS的網(wǎng)絡(luò )通信應用開(kāi)發(fā)
武漢大學(xué)電信學(xué)院(430072) 楊宗長(cháng)
2003/08/04
VOIP(Voice over IP,俗稱(chēng)IP電話(huà))是建立在IP技術(shù)上的分組化、數字化傳輸技術(shù),其基本原理是:通過(guò)語(yǔ)音壓縮算法對話(huà)音進(jìn)行壓縮編碼處理,然后把這些語(yǔ)音數據按IP等相關(guān)協(xié)議進(jìn)行打包,經(jīng)過(guò)IP網(wǎng)絡(luò )把數據包傳輸到目的地,再把這些語(yǔ)音數據包串起來(lái),經(jīng)過(guò)解碼解壓處理后,恢復成原來(lái)的語(yǔ)音信號,從而達到由IP網(wǎng)絡(luò )傳送話(huà)音的目的。雖然經(jīng)過(guò)幾年的快速發(fā)展.然而由于種種原因,VOIP離成熟的應用還有一段不小的距離;實(shí)際上,人們在網(wǎng)絡(luò )通信的內容還是文本為主,正如:IOCQ等.
一、MSTTS(Microsoft Text TO Speech,文本朗讀)網(wǎng)絡(luò )通信設計
MSTTS 是基于COM(Component Object Model,組件對象模型) 規范的文本朗讀技術(shù);簡(jiǎn)單地說(shuō),它能將文本直接朗讀出來(lái).因此應用MSTTS技術(shù) ,我們可以開(kāi)發(fā)出具有語(yǔ)音功能的網(wǎng)絡(luò )通信,
本文的基本設計思路: 通信方,將通話(huà)文本信息通過(guò)網(wǎng)絡(luò )傳輸到對方;對方接收到信息后,顯示信息并同時(shí)通過(guò)MSTTS 播放出來(lái)。

二、MSTTS 應用程序開(kāi)發(fā).
MSTTS基于COM 規范的文本朗讀技術(shù);COM是基于二進(jìn)制標準一種軟件組件通信技術(shù),它主要的目標是為了管理日益復雜的應用程序和實(shí)現代碼重用.在使用COM組件對象時(shí),一般地使用兩種方式:
A.通過(guò)CoCreateInstance() 或CoCreateInstanceEx()實(shí)例化對象;然后調用Addref()引用 計數,使用完后,再調用Release()釋放對象
B..另外一種更簡(jiǎn)便的方法就是使用智能指針(smart pointer)。
所有的智能指針都是基于_com_ptr_t 的模塊類(lèi),_ com_ptr_t 它封裝IUnknow QureyInterface ,Addref() 和 Release() 方法;它具有自動(dòng)計數的機制:即在構造對象時(shí),自動(dòng)計數;在析構對象時(shí),自動(dòng)調用Release().通過(guò) #import 指令可以入服務(wù)組件到應用程序中,并生成智能指針定義.
1.MTTS 組件的應用編程
導入MSTTS 組件
#import "C:\Winnt\Speech\VText.DLL" no_namespace // MSTTS 的安裝目錄
CoInitialize(NULL); //COM 初始化
ITextToSpeechPtr pSkPtr(_uuidof(TextToSpeech)); /MSTTS智能指針
ITextToSpeech *pTxtSph=pSkPtr.GetInterfacePtr();;
pTxtSph->AddRef();
1>.朗讀
char buf[]=”Hello, the word!”; //文本信息
pTxtSph->Speak(buf); //朗讀
2>.暫停
pTextSph->Pause();
3>.繼續
pTxtSph->Resume();
4>.停止
pTxtSph->Stop();
2.網(wǎng)絡(luò )通信應用編程
<1> 套接字
它是網(wǎng)絡(luò )的基本構件,是網(wǎng)絡(luò )應用程序接口。它具有可以被命名和尋址的通信端點(diǎn),使用中的每一個(gè)套接字都有其類(lèi)型和一個(gè)與之相連聽(tīng)進(jìn)程。WINDOWS SOCKET 版本支持兩種套接字:流套接字(SOCK_STREAM)和數據報套接字(SOCK_DGRAM) .
<2>、WINDOWS SOCKETS 實(shí)現
WINDOWS SOCKETS 實(shí)現是指實(shí)現了WINDOWS SOCKETS規范所描述的全部功能的一套軟件。在VC++6.0 開(kāi)發(fā)平臺中它提供了專(zhuān)門(mén)的阻塞形式的CSocket 類(lèi)() 和異步形式的CAsyncSocket 類(lèi),封裝實(shí)現了Windows Sockets 功能..
<3>網(wǎng)絡(luò )數據報通信的編程實(shí)現
A. 創(chuàng )建建套接字
CasyncSocket m_Sock;
M_Sock.Create(6000,SOCK_DGRAM);// 數據報套接字,端口6000
B. 發(fā)送文本信息
char textbuf[]=”Hello,good day!”
m_Sock.SendTo(textbuf,//發(fā)送的數據
sizeof(buf),//數據的大小
,6000,//對方的端口
“127.0.0.1”,//對方的主機名或IP 地址
0);
C. 接收文本信息
char revbuf[50];//接收緩存區
CString strHost;//保存發(fā)送方IP地址的字符串
unsigned int port;//發(fā)送方端口
int len=m_Sock.ReceiveFrom(revbuf,50,strHost,port); //接收信息
pTxtSph->Speak(revbuf); //朗讀接收到的文本信息
3.程序示例
<1>用戶(hù)界面(如下圖)

<2>通信演示(單機的自發(fā)自收)

計算機世界網(wǎng)(www.ccw.com.cn)
相關(guān)鏈接:
亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩
宽甸|
忻城县|
紫阳县|
东光县|
道孚县|
建平县|
阿荣旗|
汾西县|
闻喜县|
页游|
泰安市|
思南县|
文登市|
板桥市|
岳西县|
南江县|
济宁市|
阿拉善左旗|
瑞昌市|
信丰县|
渝北区|
浏阳市|
文成县|
克什克腾旗|
丘北县|
眉山市|
平阴县|
土默特左旗|
嵩明县|
邹平县|
昌江|
昌图县|
遂平县|
阿勒泰市|
沭阳县|
凤冈县|
四子王旗|
鹤壁市|
花莲市|
双城市|
冷水江市|
http://444
http://444
http://444
http://444
http://444
http://444