如何使用Microsoft Speech 海康sdk开发包包

&&&&Microsoft Speech SDK 5.1的安装与使用
&Microsoft Speech SDK 5.1的安装与使用
Microsoft Speech SDK 5.1的安装与使用,详解
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
精易模块[源码] V5.28
开发技术下载排行
积分不够下载该资源
如何快速获得积分?
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
Microsoft Speech SDK 5.1的安装与使用
所需积分:5
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
VIP服务公告:  本文主要介绍如何使用微软TTS语音引擎实现文本朗读,以及生成wav格式的声音文件。
1.语音引擎及语音库的安装
  TTS(Text-To-Speech)是指文本语音的简称,即通过TTS引擎把文本转化为语音输出。
  微软TTS语音引擎提供了Windows&Speech&SDK开发包供编程者使用。Windows&Speech&SDK包含语音合成SS引擎和语音识别SR引擎两种,语音合成引擎用于将文字转换成语音输出,语音识别引擎用于识别语音命令。
  Windows&Speech&SDK可以在微软的官网上免费下载,下载地址为:
  在该下载界面中,选择下载SpeechSDK51.exe、SpeechSDK51LangPach.exe和sapi.chm&即可。其中,SpeechSDK51.exe是简体中文语音引擎,SpeechSDK51LangPach.exe是中文男生语音库,sapi.chm是SAPI(The&Microsoft&Speech&API)帮助文档。
  下载完成后,先安装语音引擎SpeechSDK51.exe,再安装中文语音库SpeechSDK51LangPach.exe。安装完成后,可以依次点击【开始】/【控制面板】/【语言】打开图1所示的语言属性对话框。在该对话框的&文字-语音转换&标签页下的&语音选择&中能够看到当前系统安装的全部可用的语音库。
图1&语言属性对话框
2.ISpVoice接口的成员函数
  文本朗读的功能主要是通过使用ISpVoice接口的成员函数来实现的。该接口的常用成员函数有如下一些:
(1)HRESULT&Speak(LPCWSTR&*pwcs,&DWORD&dwFlags,&ULONG&*pulStreamNumber);  //朗读文本
(2)HRESULT&Pause&(&void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&    &//暂停朗读
(3)HRESULT&Resume&(&void);&&&&&&&&&&&&&&&&&&&&&&&&&&     &//恢复朗读&
(4)HRESULT&SetRate(&long&RateAdjust);&&&&&&&&  &   & &//设置朗读速度(取值范围:-10到10)
(5)HRESULT&GetRate(long&*pRateAdjust);&&&&&&&&     &//获取朗读速度
(6)HRESULT&SetVoice(ISpObjectToken&&&*pToken);&&&&  //设置使用的语音库
(7)HRESULT&GetVoice(ISpObjectToken**&ppToken);&&  //获取语音库
(8)HRESULT&SetVolume(USHORT&usVolume);&&&&&&    //设置音量(取值范围:0到100)
(9)HRESULT&GetVolume(USHORT&*pusVolume);&&    //获取音量
(10)HRESULT&SetOutput(IUnknown&*pUnkOutput,BOOL&fAllowFormatChanges);     //设置输出
(11)HRESULT&SpeakStream(IStream *pStream,&DWORD dwFlags,&ULONG *pulStreamNumber);   //朗读wav数据流
3.编程实例
  了解了以上一些ISpVoice接口的成员函数之后,我们就可以开始编写程序来实现文本朗读,以及生成wav格式声音文件的功能了。
3.1环境配置
  首先,我们需要将Windows&Speech&SDK开发包的头文件和库文件所在路径添加到编译器中,具体方法如下(这里以VC++6.0为例):
  依次点击【工具】/【选项】,打开选项对话框,选择【目录】标签,在【路径】中加入&C:\Program&Files\Microsoft&Speech&SDK&5.1\Include&和&C:\Program&Files\Microsoft&Speech&SDK&5.1\Lib\i386&。如图2所示。
图2&选项对话框
  其次,还需要在工程中包含TTS语音引擎头文件和库文件,具体如下:
1 #include &sapi.h&
//包含TTS语音引擎头文件和库文件
2 #include &sphelper.h&
3 #pragma comment(lib, "sapi.lib")
3.2枚举语音库
  枚举语音库需要使用到SpEnumTokens()函数,该函数原型如下:
1 inline HRESULT SpEnumTokens(
const WCHAR
*pszCategoryId,
const WCHAR
*pszReqAttribs,
const WCHAR
*pszOptAttribs,
IEnumSpObjectTokens
  其中,参数ppEnum是IEnumSpObjectTokens类型的指针,用于存储枚举得到的所有语音。IEnumSpObjectTokens的成员函数GetCount()用于得到语音的总个数,而成员函数Item()则用于得到具体的某一个语音。
  如下的代码示例如何枚举得到的所有语音,并将得到的语音库的名字添加到下拉组合框控件中,具体实现如下:
* 函数功能 : 初始化语言包选择组合框控件
者 : 博客园 依旧淡然
6 void CTTSDemoDlg::InitVoicePackageSelComboxCtrl()
//初始化COM组件
if(FAILED(::CoInitialize(NULL)))
MessageBox("初始化COM组件失败!", "提示", MB_OK|MB_ICONWARNING);
//枚举所有语音Token
if(SUCCEEDED(SpEnumTokens(SPCAT_VOICES, NULL, NULL, &m_pIEnumSpObjectTokens)))
//得到所有语音Token的个数
ULONG ulTokensNumber = 0;
m_pIEnumSpObjectTokens-&GetCount(&ulTokensNumber);
//检测该机器是否安装有语音包
if(ulTokensNumber == 0)
MessageBox("该机器没有安装语音包!", "提示", MB_OK|MB_ICONWARNING);
//将语音包的名字加入组合框控件
CString strVoicePackageName = _T("");
CString strTokenPrefixText = _T("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\");
for(ULONG i=0; i&ulTokensN i++)
m_pIEnumSpObjectTokens-&Item(i, &m_pISpObjectToken);
m_pISpObjectToken-&GetId(&pChar);
strVoicePackageName = pC
strVoicePackageName.Delete(0, strTokenPrefixText.GetLength());
m_ComboxVoiceSel.InsertString(i, strVoicePackageName);
//设置默认的语音包选择
m_ComboxVoiceSel.SetCurSel(0);
  通过以上的代码可以看到,首先,我们通过调用CoInitialize()函数完成了对COM组件的初始化。然后,我们调用SpEnumTokens()函数得到了m_pIEnumSpObjectTokens对象,该对象存储了枚举得到的所有语音Token。紧接着,我们调用GetCount()函数得到个数,并调用Item()函数得到具体的每一个语音Token对象m_pISpObjectToken。最后,我们通过调用m_pISpObjectToken对象的GetId()函数便能得到具体的某一个Token对象的ID,其形式为&HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\XXXXX&,去掉其前缀便能得到具体的语音库的名字了。
  该实例运行效果如图3所示,点击&语音包选择&组合框下拉箭头,能够看到与图1中列出的语音包是一致的。
图3&TTS示例运行效果
3.3文本朗读
  点击图3所示界面中的&开始朗读&按钮,能够根据当前所选择的语音包以及设定的语速和音量,对朗读内容编辑框中的内容进行朗读。其具体实现方法如下:
* 函数功能 : 点击"开始朗读"按钮时,该函数被调用
者 : 博客园 依旧淡然
6 void CTTSDemoDlg::OnButtonStartRead()
UpdateData(true);
//获取ISpVoice接口
if(FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**)&m_pISpVoice)))
MessageBox("获取ISpVoice接口失败!", "提示", MB_OK|MB_ICONWARNING);
//设置语言
m_pIEnumSpObjectTokens-&Item(m_ComboxVoiceSel.GetCurSel(), &m_pISpObjectToken);
m_pISpVoice-&SetVoice(m_pISpObjectToken);
//设置播放速度
m_pISpVoice-&SetRate(m_SliderVoiceSpeed.GetPos() - 10);
//设置音量大小
m_pISpVoice-&SetVolume(100 - m_SliderVoiceSize.GetPos());
//检测朗读内容是否为空
if(m_EditContent.IsEmpty())
MessageBox("朗读内容不能为空!", "提示", MB_OK|MB_ICONWARNING);
//开始进行朗读
m_pISpVoice-&Speak(m_EditContent.AllocSysString(), SPF_ASYNC, NULL);
  在以上代码中可以看到,使用了ISpVoice接口函数来完成语音库的选择、语速和音量大小的设定,以及通过调用Speak()函数进行文本朗读。
3.4生成WAV格式的声音文件
  要将文本朗读的声音保存为WAV格式的声音文件,主要是通过调用ISpVoice接口函数GetOutputStream()和SetOutput()来实现的。
以下的代码段给出了实现该功能的示例:
//生成WAV文件
CComPtr&ISpStream& cpISpS
CComPtr&ISpStreamFormat& cpISpStreamF
CSpStreamFormat spStreamF
m_pISpVoice-&GetOutputStream(&cpISpStreamFormat);
spStreamFormat.AssignFormat(cpISpStreamFormat);
HRESULT hResult = SPBindToFile("C:\\Documents and Settings\\Administrator\\桌面\\TEST\\test.wav",
SPFM_CREATE_ALWAYS,
&cpISpStream,
&spStreamFormat.FormatId(),
spStreamFormat.WaveFormatExPtr());
if(SUCCEEDED(hResult))
m_pISpVoice-&SetOutput(cpISpStream, TRUE);
m_pISpVoice-&Speak(m_EditContent.AllocSysString(), SPF_DEFAULT, NULL);
MessageBox("生成WAV文件成功!", "提示", MB_OK);
MessageBox("生成WAV文件失败!", "提示", MB_OK|MB_ICONWARNING);
阅读(...) 评论()Microsoft&Speech&Platform&自学笔记3&动手编写第一个程序
笔 记 人:又吹风
时  间:
主要内容:动手编写第一个程序
  上次我们已经把开发包SDK、运行时Runtime以及各种语言包Language Packs
都安装好了,接下来的是,就是开始学习如何使用这些工具来开发软件了。
1、自学资料介绍
在这里,我就简单介绍一下SDK中的帮助文档的使用吧。安装后Microsoft Speech Platform
SDK之后,打开安装目录(默认为:“C:\Program Files (x86)\Microsoft Speech Platform
SDK”),会看到如下文件组织:
各文件夹解释如下:
Assembly&&&&&&&
用于.Net开发的引用包
Docs&&&&&&&&&&&
SDK帮助文件
Include&&&&&&&&
C/C++包含文件,主要用于C/C++开发
Lib&&&&&&&&&&&&
静态库文件,主要用于C/C++开发
Redist&&&&&&&&&
运行时Runtime
Samples&&&&&&&&
Tools&&&&&&&&&&
工具包,如语法检查、语法分析等工具
打开帮助文件“Docs/ MicrosoftSpeechPlatformSDK.chm”,就可以看到SDK使用教程了。这里只有英文版。
2、使用C#开发一个Hello
我用的是Visual Studio 2010做为开发平台,当然,你也可以使用Visual Studio
2008或其它的,不过,要注意的是,由于Speech Platform依赖Microsoft .NET Framework
4.0,所以,在开发之前,确保你的电脑安装了它,需要说明一点的是,我的电脑是64位的。
打开SDK帮助文档,左边选中“Speech Synthesis”,然后选中“Speaking the Contents of a
String”,此时,右部分就会显示如何使用Speech Platform开发一个简单的示例了。
代码中,主要是用到SpeechSynthesizer的Speak()方法读出一段文字内容。
好,我们先打开VS2010,新建一个Visual C# Windows项目,项目模板使用“Windows
窗体应用程序”,项目名称及存放路径请根据自己情况设置。如下图所示:
项目建好之后,我们修改一下窗体,增加了一Label和一个Button,如下图所示:
然后双击Button,进入Button的点击事件,开始编写代码。
由于我们需要使用Speech Platform
所提供的库来做开发,所以,这里我们要做的是,先引用相关库进来。
然后会弹出“添加引用”对话框,切换到“浏览”选项卡,在“查找范围”中,找到Speech Platform
SDK安装目录下的“Assembly”目录,然后用鼠标框选“Microsoft.Speech.dll”和“Microsoft.Speech.VoiceXml.dll”,点击“确定”就可以将库添加到项目引用中。
Microsoft.Speech是基本库,必须的引用;而“Microsoft.Speech.VoiceXml.dll”,前面也说过了,Microsoft
Platform支持业界VoiceXml声音标记语言,所以,这个动态库,主要是让程序支持VoiceXml声音标记语言。
导入完成之后,就可以写代码了,在Button的点击事件中,输入如下代码:
private void button1_Click(object , EventArgs )
SpeechSynthesizer
= new SpeechSynthesizer();
.Speak("Hello World!");
编写完之后,SpeechSynthesizer字符会有红色波浪线,此时,将鼠标移动到该字符上,右击,“解析”,“using
Microsoft.Speech.Synthesis”,可以自动引用相关命名空间了。
OK,代码就这么简单,然后,按“Ctrl+F5”编译并运行程序,在弹出窗体中,点击Button,就会有声音说出“Hello
World”了。
当然,事实上,事情并不可能这么顺利的。通常你会遇到很多问题,比如:
问题1:No voice installed on the system or none available with the
current security setting.
如下图所示:
出现这种问题的原因有一般有三点:
1、& 你的电脑没有安装语言包,或者语言包的版本与SDK、Runtime版本不一致。
2、& 安全设置有问题,通常在Web开发的时候,IIS用户权限不足造成的。
3、& 你安装了x64的Speech Platform,而编译的程序却是x86的。
解决方法:
检查你的语言包,确保安装了语音识别包SR和文本转语音包TTS,另外,还需要检查你的语言包版本号与SDK、Runtime版本一致;
2、& 给IIS设置足够的权限;
设置项目编译属性,在你的项目中,点击菜单栏的“项目”,然后“TestMSP属性”(根据你的项目名不同),在弹出的窗口中,点击左边的“生成”,然后右边“配置”中选择“Debug”,在“常规”-“目标平台”中,选择“x64”,重新在“配置”中选择“Release”,在“常规”-“目标平台”中,选择“x64”,然后保存一下。这样一来,无论是调试模式还是发布模式,都是x64了,以上问题自然会得到解决。
解决以上问题之后,重新运行,如果你发现,你点击了Button之后,没有发出声音,请不要惊讶。我们慢慢来将它解决掉!
问题2:没有提示错误,也没有发出任何声音!
原因:主要是因为“Microsoft.Speech.Synthesis”和“System.Speech.Synthesis”发生冲突所导致的,为什么这么说?我们打开“控制面板”-“语音识别”,点击左边的“文本到语音转换”,在弹出的对话框中,我们可以看到,在“语音选择”中,只看到两项“Microsoft
Anna”和“Microsoft
Lili”TTS,而我们安装了的“MSSpeech_TTS_en-US_Helen”、“MSSpeech_TTS_zh-CN_HuiHui”、“MSSpeech_TTS_zh-HK_HunYee”都没有出现在其中,这就说明了,系统默认是使用了“System.Speech.Synthesis”作为TTS,而我们在程序中,使用了“Microsoft.Speech.Synthesis”作为TTS,因为两者冲突,这种导致了程序中没有发出任何声音。
解决方法:解决的思路是这样的,我们先把TTS发出的声音保存的文本或内容中,然后再使用播放器进行播放,具体代码如下:
public partial class Form1 : Form
SpeechSynthesizer tts = new SpeechSynthesizer();
&&& SoundPlayer
player = new SoundPlayer();
&&& public
InitializeComponent();
tts.SpeakCompleted += new
EventHandler&SpeakCompletedEventArgs&(tts_SpeakCompleted);
tts_SpeakCompleted(object sender, SpeakCompletedEventArgs e)
player.Stream.Position = 0;
player.Play();
&&& public void
Speak(string text)
player.Stream = new System.IO.MemoryStream();
tts.SetOutputToWaveStream(player.Stream);
tts.SpeakAsync(text);
&&& private void
button1_Click(object sender, EventArgs e)
Speak("Hello World!");
这样一来,就没什么问题了,上面的代码我就不作详细解释了,下次再慢慢讲吧。
&&&&最近心里很不安稳,今天学学Speech
Platform,明天又学学Unity3d,改天又学学OC,然后又是那个又是那个。工作也不用心,一个项目拖太久,渐渐地变得麻木、迷茫、无方向,心里也就没有了当初的激情和斗志~
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 工业相机sdk开发包 的文章

 

随机推荐