SPEECH SDK中编程文档

以下是各个组COM对象的简介。
一、高级对象(HIGH LEVER SPEECH OBJECT):
1. Voice Commands API:功能是对应用程序进行控制,一般在语言识别系统识别了一个命令后,会调用此接口使某个应用程序完成一定的功能,如果你的程序想使用语音控制功能就必须使用此组对象
2. voice Dictation API:功能是进行听写输入,即语音识别。
3. Voice Text API :此组对象完成从文字到语音的转换功能,即语音合成。后面 的例子会用到此对象。
4. Voice Telephony API :它把语音识别与语音合成综合利用到了电话系统之上,利用此对象可以建立一个电话应答系统,甚至可以通过电话控制你的计算机。
5. Audio Objects API :主要封装了计算机上的发音系统。

以下是一个报时钟表的程序,在这个程序中采用了Voice Text API对象,当你按下按钮时这个程序会报时间, 同时它还有一个编辑框,当你在里面输入英文单词以后,只要按一下按钮,它也会把单词读出来。程序比较简单,主要让你有一个感性的认识。具体代码如下:
//源程序文件clock.cpp
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <malloc.h>
#include <mmsystem.h>
#include <initguid.h>
#include <objbase.h>
#include <objerror.h>
#include <ole2ver.h>
#include <time.h>
#include "resource.h"

#include <speech.h>

PIVOICETEXT gpIVTxt;

BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static char tmpbuf[128];//存放时间的字符。
switch (uMsg) {
case WM_INITDIALOG:
{
SetTimer(hWnd,1,1000,NULL);//建立定时器
break;
}
case WM_TIMER:
{
_tzset();

/* Display operating system-style date and time. */
_strtime( tmpbuf );
SetDlgItemText(hWnd,IDC_STATICCLOCK,LPCSTR(tmpbuf));//显示时间到对话框上。
break;
}
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDSPEAK:
{
char* pSpeak;
pSpeak=(char *)malloc(1024*64);//64KB

// Speak
GetDlgItemText(hWnd,IDC_EDIT, LPTSTR(pSpeak), 64*1024-1);//获取编辑框内的字符,最大长度必须限制在64kb-1内。
gpIVTxt->Speak(LPTSTR(pSpeak), VTXTST_QUESTION | VTXTSP_NORMAL, NULL); //读出编辑框中的字符
free(pSpeak);
return TRUE;
}
case IDCANCEL:
{ KillTimer(hWnd,1);
EndDialog (hWnd, IDCANCEL);
return TRUE;
}
case IDC_CLOCKSPEAK:
{gpIVTxt->Speak(LPCSTR(tmpbuf),VTXTST_QUESTION | VTXTSP_NORMAL, NULL);//读出现在的时间
return TRUE;
}
case IDC_STOP:
{gpIVTxt->StopSpeaking();//停止发音
return TRUE;
}

}
break;
};

return FALSE; // didn't handle
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{

CoInitialize(NULL);


if(CoCreateInstance(CLSID_VTxt,NULL, CLSCTX_LOCAL_SERVER,IID_IVoiceText, (LPVOID *) &gpIVTxt) != S_OK)
return 0;
gpIVTxt->Register(NULL,"Clock",NULL, IID_IVTxtNotifySink,NULL,NULL);
//必须使用这个注册函数
// Bring up the dialog box

DialogBox(hInstance,MAKEINTRESOURCE(IDD_CLOCK), NULL, (DLGPROC) DialogProc);//启动对话框

gpIVTxt->Release();//释放接口

CoUninitialize();
return 0;
}
  资源文件clock.rc与资源头文件resource.h在此省略,在VC中可以利用资源编辑器制作一个对话框,VC会自动生成这两个文件,为了与上述代码配合,对话框的ID为IDD_CLOCK。其它对话框上的控件的ID如下所示:
注意在编译以前,要把SDK的头文件路径在VC中设置好。
二、低级对象(LOW LEVER SPEECH OBJECT):
1. DirectSpeechRecognition API :提供了更强大的语音识别控制功能,包括枚举语音引擎等功能。
2. DirectTextToSpeech API:提供了更强大的语音合成功能。
  如果我们用DirectTextToSpeech API修改发声钟表程序,将会为该程序提供更强大的功能,甚至可以调节发音频率,发音者的年龄等,由于其应用很复杂,我这里不再举例。有兴趣的人可以查阅SPEECH SDK中编程文档。
那么如何获得这个SDK 呢?是不是得花很多钱呢?NO!微软公司免费提供此SDK,大家可以到www.microsoft.com 网站上下载此程序。
  通过以上介绍,我们只是看到了Speech SDK这个巨大冰山中的一个小角,如果要想全面掌握它就必须仔细阅读Speech SDK自身的参考文档。它的应用前景是广阔的,我们可以利用它制作会说话的程序,虽然是只能说英文,但是毕竟是一个崭新的功能,势必会使你的程序更加引人注目,而且你还可以编写英语听写软件以及英语学习软件,使自己的程序轻而易举地就具有了多媒体的功能,不用再去费劲心思地去编写语音识别与语音合成引擎,而在windows 2000当中,语音识别与语音合成功能和windows 2000结合在一起成为标准配置,我想用不了多久,带有语音人机界面的程序将会大量出现。
  最后我想再谈谈在Delphi中使用Speech SDK时需注意的几个问题,因为Delphi目前在国内拥有广泛的用户。
  1.如何Delphi中使用Activex 控件:在Delphi 3.0中(其它版本我没有试过)使用Speech SDK提供的Activex控件会产生一些问题,在往Delphi中Import Activex 控件之后,如果你往窗体上放置控件,Delphi就会弹出一个错误信息如图二。

 

图二

  我经过仔细研究之后,初步判断这可能是在窗体在调用控件提供的IVIEWOBJECT接口绘画控件的图案时,Delphi 与控件的自绘发生了冲突。解决的方法是修改控件的注册表信息,改变控件自绘方式。注意:修改注册表不当,会导致WINDOWS启动失常,因此我强烈建议在修改前备份注册表文件。步骤如下:
  ①启动"REGEDIT.EXE"。查找某个控件的DLL文件,例如"Voice Text Control"的DLL文件名叫"VTEXT.DLL",在查找对话框里输入"VTEXT.DLL",然后开始查找。查找会在此处停下,如图三。

图三

  ②选择miscstatus子键,修改其default的值,改为4。
  ③选择miscstatus的子键1,按DEL键删除它,然后给miscstatus加入一个新的子键,名称为4。这样你就可以把Voice Text Control加到Delphi中的窗体上去了。其它的控件也可依法进行修改,只是每次查找时需确定要修改控件所对应的DLL文件名。
  2.使用COM接口。在Delphi中也可以直接使用COM接口,但是由于SPEECH SDK只提供了接口的C语言的头文件,使得DELPHI无法直接使用,必须把这个文件翻译成PASCAL语言,幸好这个工作已经有人做了,读者可以上网到www.delphi-jedi.org 中下载一个文件,解压缩之后按照说明使用即可。另外需说的是,在Delphi 中只使用ActiveX控件的读者最好也能下载这个PASCAL 头文件,这会更加方便你使用控件中的一些方法以及属性。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity Speech SDK是一款由Unity Technologies推出的语音识别软件开发工具包。它通过使用人工智能技术,可以将用户的语音转换为文本,并且可以与应用程序的其他功能进行集成。 Unity Speech SDK具有以下主要特点和功能。首先,它支持多种语言的语音识别,用户可以根据需要选择适合自己的语言。其次,它具有高准确性和灵敏度,能够准确识别用户的语音,并将其转化为相应的文本。另外,该SDK还支持实时识别和实时响应,可以在用户说话的同时及时进行识别和处理。 Unity Speech SDK还提供了丰富的开发工具和功能,以帮助开发人员更方便地使用和集成语音识别功能。例如,它提供了语音识别API和示例代码,可以帮助开发者快速上手并实现自己的语音识别功能。此外,该SDK还支持自定义词汇和短语,开发者可以根据自己的需求添加和管理自定义的词汇库,以提高识别的准确性。 Unity Speech SDK的应用范围非常广泛。它可以用于游戏开发,例如玩家可以通过语音命令控制游戏角色的动作和行为,增加游戏的交互性和趣味性。同时,它也可以应用于虚拟现实和增强现实技术,例如用户可以通过语音与虚拟角色进行对话或者使用语音指令进行虚拟世界的操作。此外,Unity Speech SDK还可以用于开发智能助手和语音控制的应用程序,例如语音助手、语音搜索和语音导航等。 总之,Unity Speech SDK是一个强大的语音识别工具包,可以帮助开发者在Unity引擎轻松实现语音识别功能,并且为各种应用程序提供更加智能和互动的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值