首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SAPI 5中实现Microsoft语音平台语言

在SAPI 5中实现Microsoft语音平台语言
EN

Stack Overflow用户
提问于 2019-02-13 20:22:45
回答 1查看 296关注 0票数 0

我用C++创建了一个小程序,其中使用了SAPI库。在我的代码中,我列出了安装在我的系统上的语音数量。当我编译时,我得到了11个,但只安装了8个,唯一能说话的声音是Microsoft Anna。我在注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices).中检查过了我安装了几种语言,特别是来自Microsoft Speech平台的语言,但都不能使用。

此外,当我更改语音ID时,我得到一个未处理的异常错误,我认为这是因为所选的ID不存在。

以下是我的代码

代码语言:javascript
复制
#include "stdafx.h"

int main( int argc, char* argv[] )
{

CComPtr<ISpObjectToken>         cpVoiceToken;
CComPtr<IEnumSpObjectTokens>    cpEnum;
ISpVoice *                      pVoice = NULL;
ULONG                           count = 0;
string                          str;

if( FAILED( ::CoInitialize( NULL ) ) )
return FALSE;

HRESULT hr = CoCreateInstance( CLSID_SpVoice, NULL, CLSCTX_ALL, 
IID_ISpVoice, ( void ** )&pVoice );

if( SUCCEEDED( hr ) )
{
   //Enumerate Voices
   hr = SpEnumTokens( SPCAT_VOICES, NULL /*L"Gender=Female"*/, NULL, &cpEnum);
   printf( "Success\n" );
}
else
{
   printf( "Failed to initialize SAPI" );
}

if( SUCCEEDED( hr ) )
{
  //Get number of voices
  hr = cpEnum->GetCount( &count );
  printf( "TTS voices found: %i\n", count );
}
else
{
   printf( "Failed to enumerate voices" );
   hr = S_OK;
}

if( SUCCEEDED( hr ) )
{
   cpVoiceToken.Release();

   cpEnum->Item( 3, &cpVoiceToken ); //3 represents the ID of the voice

   pVoice->SetVoice( cpVoiceToken );
   hr = pVoice->Speak( L"You have selected Microsoft Server Speech Text to Speech Voice (en-GB, Hazel) as the computer's default voice.", 0, NULL ); //speak sentence
   pVoice->Release();
   pVoice = NULL;
}

::CoUninitialize();
system( "PAUSE" );

}

唯一能工作的声音是Microsoft Anna,我不明白为什么。如果其他语言不可用,程序就不会告诉我有这么多语言。我想知道Microsoft语音平台语言是否与SAPI兼容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-13 20:22:45

经过多次尝试和失败,我终于找到了我的问题的答案。我用Win32编译了我的程序。因此,我决定将其更改为x64,并重新编译了解决方案。我更改了程序中的语音ID,来自Microsoft Speech Platform的语音正常工作。这意味着MS语音平台语言是64位语音,而Microsoft Anna是32位语音。

下面的post启发了我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54670115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档