首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAPI 5.4音频输出参数

SAPI 5.4音频输出参数
EN

Stack Overflow用户
提问于 2015-12-16 11:15:06
回答 1查看 740关注 0票数 0

我有以下非常简单的代码(delphi/Object Pascal),它使用Microsoft SAPI 5.4进行一些文本到语音的转换

代码语言:javascript
复制
// init
var engine : tspvoice;
var voice  : ispeechobjecttoken;
engine:=tspvoice.Create(nil);

// pick the first voice and assign it to the engine
voice := ISpeechObjectToken(0);
engine.Voice := Voice;

// speak
engine.Speak(text, SVSFlagsAsync);

但是,我在输出格式(每采样位数/频率)上看不到任何控制。我有一个来自旧的SAPI SDKdownload的示例应用程序(TTSapp),它允许控制这些参数。不幸的是,我在任何地方都找不到它的源代码,我也找不到任何最新的sapi SDK的下载。

有什么提示吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-21 23:22:50

我通常不使用delphi,但如果有帮助的话,我在C++中有一个例子。在本例中,您可以看到我正在处理CSpStreamFormat,然后调用SPBindToFile来设置它。sapi.h包含您可以使用的所有SPSTREAMFORMAT类型。

代码语言:javascript
复制
    HRESULT hr = S_OK;
    CComPtr<ISpObjectToken> cpVoiceToken;
    CComPtr<ISpVoice> cpVoice;

    CSpStreamFormat cAudioFmt;
    CComPtr<ISpStream> cpStream;

    ::CoInitialize(NULL);
    hr = cAudioFmt.AssignFormat(SPSF_22kHz16BitMono);
    hr = SPBindToFile(L"E:\\fileName.wav", SPFM_CREATE_ALWAYS, &cpStream, &cAudioFmt.FormatId(), cAudioFmt.WaveFormatExPtr());
    hr = cpVoice.CoCreateInstance(CLSID_SpVoice);
    cpVoice->SetOutput(cpStream, TRUE);
    hr = cpVoice->Speak(L"My spoken text goes here", SPF_DEFAULT, NULL);

    cpStream->Close();
    cpStream.Release();
    cpVoice.Release();

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

https://stackoverflow.com/questions/34303360

复制
相关文章

相似问题

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