Microsoft speech sdk 5.1 text to speech

//用于将文字转化成的语音保存成本地的pcm文件

long CPlugin14Ctrl::OnSpeak(LPCTSTR uContents, long uVolume)
{
// TODO: Add your dispatch handler code here

CString cStr=uContents ;
//AfxMessageBox(cStr);

//COM初始化:

CComPtr<ISpVoice> m_cpVoice;
HRESULT hr = m_cpVoice.CoCreateInstance(CLSID_SpVoice );

if (FAILED(::CoInitialize(NULL)))
return -1;

TCHAR szFileName[256]="X:\\xx.wav"; //假设这里面保存着目标文件的路径

USES_CONVERSION;
WCHAR m_szWFileName[1000];

wcscpy( m_szWFileName, T2W(szFileName) );//转换成宽字符串

//设置当前采样频率
CComPtr<ISpAudio> m_cpOutAudio1; //声音输出接口
SpCreateDefaultObjectFromCategoryId( SPCAT_AUDIOOUT, &m_cpOutAudio1 ); //创建接口
SPSTREAMFORMAT eFmt = SPSF_44kHz16BitMono;
CSpStreamFormat Fmt;
Fmt.AssignFormat(eFmt);
if ( m_cpOutAudio1 )
{
hr = m_cpOutAudio1->SetFormat( Fmt.FormatId(), Fmt.WaveFormatExPtr() );
}
else hr = E_FAIL;
if( SUCCEEDED( hr ) )
{
m_cpVoice->SetOutput( m_cpOutAudio1, FALSE );
}

//创建一个输出流,绑定到wav文件
CSpStreamFormat OriginalFmt;
CComQIPtr<ISpStream> cpWavStream;
CComQIPtr<ISpStreamFormat> cpOldStream;
hr = m_cpVoice->GetOutputStream(&cpOldStream );
if (hr == S_OK)
{
hr = OriginalFmt.AssignFormat(cpOldStream);
}
else
hr = E_FAIL;
// 使用sphelper.h中提供的函数创建 wav 文件

if (SUCCEEDED(hr))
{
hr = SPBindToFile( m_szWFileName, SPFM_CREATE_ALWAYS, &cpWavStream,
&OriginalFmt.FormatId(), OriginalFmt.WaveFormatExPtr() );
}
if( SUCCEEDED( hr ) )
{
//设置声音的输出到 wav 文件,而不是 speakers
m_cpVoice->SetOutput(cpWavStream, TRUE);
}

//声音设置范围 0--100
m_cpVoice->SetVolume(uVolume);

//设置语速-10---10
m_cpVoice->SetRate(-1);

//开始朗读
BSTR bstr = cStr.AllocSysString();
m_cpVoice->Speak(bstr, SPF_ASYNC | SPF_IS_NOT_XML, 0 );

//等待朗读结束
m_cpVoice->WaitUntilDone( INFINITE );
cpWavStream.Release();

//获取当前采样频率 44KHZ 32-35

/*
// SPSTREAMFORMAT eFmt;
CComPtr<ISpStreamFormat> cpStream;
HRESULT hrOutputStream = m_cpVoice->GetOutputStream(&cpStream);
if (hrOutputStream == S_OK)
{
CSpStreamFormat Fmt;
hr = Fmt.AssignFormat(cpStream);
if (SUCCEEDED(hr))
{
eFmt = Fmt.ComputeFormatEnum();
}
}

CString strInt;
strInt.Format("%d",eFmt);
AfxMessageBox(strInt);

*/
//把输出重新定位到原来的流
m_cpVoice->SetOutput( cpOldStream, FALSE );

//释放BSTR
SysFreeString(bstr);

//结束要释放资源
::CoUninitialize();

return 0;
}

时间: 2024-10-29 19:05:59

Microsoft speech sdk 5.1 text to speech的相关文章

容易使用的读取文本播放器 Text to Speech Maker 2.5

FilmConvert Stand Alone 1.216 MacOSXAutodesk.Smoke.v2015.SP1.MacOSX 1DVDAutodesk Smoke 2015提供更快的效能和更平易近人的价格专 为以Mac计算机作业的小型工作室设计,Smoke 2015专业影音特效和剪辑工具现在具备了 3D追踪.新的Timeline FX工作流程.针对搭载OS X Mavericks操作系统的新版Mac Pro新增硬件支持和系统运作的最佳化,并与Final Cut Pro X提供更佳的互通

Microsoft Speech SDK开发包 使用

下载开发包.我们首先从微软的官网上面下载开发包,下载地址如下: http://www.microsoft.com/en-us/download/details.aspx?id=10121我们主要下载三个关键的程序:SpeechSDK51.exe . msttss22L.exe.SpeechSDK51LangPack.exe,将这三个下载下来即可.   安装sdk.分别将下载的三个安装包解压安装就可以了(记住安装目录).   环境配置.这里我们需要将您安装的Microsoft Speech SDK

智能电话机器人,使用Microsoft语音识别技术(Speech sdk)

最近公司接手到了一个有挑战的项目,很有意思,拿出来和大家分享下,交流下开发过程中的一些收获和感悟. 智能电话机器人 原委是这样的,有一个大佬,手里有好多好多,总之就是好多手机充x卡,他想把这些充x卡充值到不同的用户手机号里.有的朋友接触过的,会说“可以和移动去谈,然后搞到移动的接口,根据接口开发程序,然后把充x卡密码都弄进数据库里,用程序读取,之后调用移动接口完成充值.” 说得好,漂亮!而且充x卡密码存到数据库里面这件事,大佬已经找人没日没夜加班干活全都录入到数据库里了. 但是事实很悲催,由于各

csharp:Google TTS API text to speech

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

Csharp: speech to text, text to speech in win

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

[转]Microsoft Platform SDK 选择及在vc++6.0中的配置

Windows Platform SDK Download Sites: Windows Server 2003 PSDK February 2003 Edition,可以和VC6一起使用.并支持各种目标OS的最后一个版本的SDK. This edition of the SDK supports development for the following platforms: Windows Server 2003 Windows Advanced Server, Limited Editio

智能电话机器人,使用Microsoft语音识别技术(Speech sdk)(下)

接上文 现在,硬件上的准备工作做完了. 下一步,先打开Modem的电源,用SecureCRT连接串口,敲入些AT命令,看看Modem能否执行. 这里简单说一下AT命令: AT命令有两种解释一种是调制解调器命令语言,简单来说就是一些固定格式的字符串,我们通过串口向Modem发送AT命令的字符串,Modem就会按照 命令去执行不同的操作.AT命令的百度百科请看这里,具体的命令格式和使用方法请自行百度. 我们先来试试拨号 向串口发送命令 : atdt10086;\r 不出意外的话Modem就会摘机,并

(转) 使用Speech SDK 5.1文字转音频

下载地址: http://www.microsoft.com/en-us/download/details.aspx?id=10121 SeppchSDK51.exe 语音合成引擎 SpeechSDK51LangPack.exe 支持日语和简体中文需要这个支持. SpeechSDK51MSM.exe 如果要将引擎作为产品的一部分发布需要这个. Sp5TTintXP.exe XP下Mike和Mary语音 sapi.chm 文档 1.安装SpeechSDK51.EXE 2.安装SpeechSDK51

VS2017项目无法加载,找不到指定的SDK&quot;Microsoft.NET.Sdk&quot;

新环境 安装完sdk后,无法加载项目,可能是 环境变量引起的所以只要配置环境变量即可. 1.下载 .NET Core SDK   https://www.microsoft.com/net/download/windows 2.cmd 命令 查下本机安装路径  dotnet --info 3.配置用户环境变量 变量名:MSBuildSdksPath 变量值:C:\Program Files\dotnet\sdk\2.2.300\Sdks 保存,重新打开即可. 引用:https://github.