首页>>>技术>>>语音应用>>>语音合成(TTS)  语音合成产品

基于MSTTS的网络通信应用开发

武汉大学电信学院(430072) 杨宗长 2003/08/04

  VOIP(Voice over IP,俗称IP电话)是建立在IP技术上的分组化、数字化传输技术,其基本原理是:通过语音压缩算法对话音进行压缩编码处理,然后把这些语音数据按IP等相关协议进行打包,经过IP网络把数据包传输到目的地,再把这些语音数据包串起来,经过解码解压处理后,恢复成原来的语音信号,从而达到由IP网络传送话音的目的。虽然经过几年的快速发展.然而由于种种原因,VOIP离成熟的应用还有一段不小的距离;实际上,人们在网络通信的内容还是文本为主,正如:IOCQ等.

一、MSTTS(Microsoft Text TO Speech,文本朗读)网络通信设计

  MSTTS 是基于COM(Component Object Model,组件对象模型) 规范的文本朗读技术;简单地说,它能将文本直接朗读出来.因此应用MSTTS技术 ,我们可以开发出具有语音功能的网络通信,

  本文的基本设计思路: 通信方,将通话文本信息通过网络传输到对方;对方接收到信息后,显示信息并同时通过MSTTS 播放出来。


二、MSTTS 应用程序开发.

  MSTTS基于COM 规范的文本朗读技术;COM是基于二进制标准一种软件组件通信技术,它主要的目标是为了管理日益复杂的应用程序和实现代码重用.在使用COM组件对象时,一般地使用两种方式:

  A.通过CoCreateInstance() 或CoCreateInstanceEx()实例化对象;然后调用Addref()引用 计数,使用完后,再调用Release()释放对象

  B..另外一种更简便的方法就是使用智能指针(smart pointer)。

  所有的智能指针都是基于_com_ptr_t 的模块类,_ com_ptr_t 它封装IUnknow QureyInterface ,Addref() 和 Release() 方法;它具有自动计数的机制:即在构造对象时,自动计数;在析构对象时,自动调用Release().通过 #import 指令可以入服务组件到应用程序中,并生成智能指针定义.

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.网络通信应用编程

<1> 套接字

  它是网络的基本构件,是网络应用程序接口。它具有可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连听进程。WINDOWS SOCKET 版本支持两种套接字:流套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM) .

<2>、WINDOWS SOCKETS 实现

  WINDOWS SOCKETS 实现是指实现了WINDOWS SOCKETS规范所描述的全部功能的一套软件。在VC++6.0 开发平台中它提供了专门的阻塞形式的CSocket 类() 和异步形式的CAsyncSocket 类,封装实现了Windows Sockets 功能..

<3>网络数据报通信的编程实现

A. 创建建套接字

CasyncSocket m_Sock;

M_Sock.Create(6000,SOCK_DGRAM);// 数据报套接字,端口6000

B. 发送文本信息

char textbuf[]=”Hello,good day!”

m_Sock.SendTo(textbuf,//发送的数据

sizeof(buf),//数据的大小

,6000,//对方的端口

“127.0.0.1”,//对方的主机名或IP 地址

0);

C. 接收文本信息

char revbuf[50];//接收缓存区

CString strHost;//保存发送方IP地址的字符串

unsigned int port;//发送方端口

int len=m_Sock.ReceiveFrom(revbuf,50,strHost,port); //接收信息

pTxtSph->Speak(revbuf); //朗读接收到的文本信息

3.程序示例

<1>用户界面(如下图)


<2>通信演示(单机的自发自收)


计算机世界网(www.ccw.com.cn)


相关链接:
捷通华声“飓风行动”降低语音应用门槛 2003-08-04
语音应用客户满意度调研 2003-07-29
Nuance Voice Platform - NVP 2.0语音平台 2003-07-22
语音合成发挥作用 2003-07-21
浅析国元证券呼叫中心自动语音信息制作方式 2003-07-21

分类信息:     文摘   技术_语音合成_文摘