C++ 延迟回波 //这三个版本都包含两个版本所需的文件// #包括 #包括 #包括 //用户输入要说的内容// int main(int argc,char*argv[]) { ISpVoice*pVoice=NULL; if(失败(::CoInitialize(NULL))) 返回FALSE; HRESULT hr=CoCreateInstance(CLSID_SpVoice、NULL、CLSCTX_ALL、IID_ISpVoice、(void**)和pVoice); 如果(成功(hr)) { std::wstring输入; while(true) { std::cout Speak(input.c_str(),0,NULL); } } pVoice->Release(); pVoice=NULL; ::coninitialize(); 返回0; }

C++ 延迟回波 //这三个版本都包含两个版本所需的文件// #包括 #包括 #包括 //用户输入要说的内容// int main(int argc,char*argv[]) { ISpVoice*pVoice=NULL; if(失败(::CoInitialize(NULL))) 返回FALSE; HRESULT hr=CoCreateInstance(CLSID_SpVoice、NULL、CLSCTX_ALL、IID_ISpVoice、(void**)和pVoice); 如果(成功(hr)) { std::wstring输入; while(true) { std::cout Speak(input.c_str(),0,NULL); } } pVoice->Release(); pVoice=NULL; ::coninitialize(); 返回0; },c++,sapi,C++,Sapi,代码很简单。这是微软关于如何使用SAPI进行编辑,使程序说出用户输入的内容的解释,我在这个网站上找到了这一点 我的困难是试图用输出获得回声效果。据我所知,回声效果只不过是在同一时间播放相同的音频,并有10-60毫秒的小延迟(尊重) 有了这个设置,我无法找到一种方法来同时播放并在两者之间放置一个延迟变量。延迟部分并不难,但我无法理解的是同步输出 旁注:你读的是文字,而不是有帮助的linesOk。我能够理解,通过删除for循环,可以通过std::cout>text完成输出hr=pVoice->Spe

代码很简单。这是微软关于如何使用SAPI进行编辑,使程序说出用户输入的内容的解释,我在这个网站上找到了这一点

我的困难是试图用输出获得回声效果。据我所知,回声效果只不过是在同一时间播放相同的音频,并有10-60毫秒的小延迟(尊重)


有了这个设置,我无法找到一种方法来同时播放并在两者之间放置一个延迟变量。延迟部分并不难,但我无法理解的是同步输出

旁注:你读的是文字,而不是有帮助的linesOk。我能够理解,通过删除for循环,可以通过
std::cout>text完成输出
hr=pVoice->Speak(text.c_str(),SPF_IS_XML,NULL)
但让hr同时播放两次以增加延迟的方式仍然让我无法理解。你最好对音频应用回声效果,而不是两次合成。首先,不能保证这两个引擎保持同步。我应该看C++中的音频操作吗?使用Visual Studio Express 2013。有很多可能性。你可以自己做——向你展示如何做——或者你可以使用一个库(搜索“c++信号处理库”,你会发现几十到几百个都可以做到这一点)。
 //All three include files needed for both versions//
#include <sapi.h>
#include <string>
#include <iostream>

//User inputs what is to be said//
int main(int argc, char* argv[])
{
    ISpVoice * pVoice = NULL;

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

    HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
    if (SUCCEEDED(hr))
    {
        std::wstring input;
        while (true)
        {
            std::cout << "Enter text:\n";
            std::getline(std::wcin, input);

            hr = pVoice->Speak(input.c_str(), 0, NULL);
        }
    }
    pVoice->Release();
    pVoice = NULL;
    ::CoUninitialize();
    return 0;
}