成功使用正确的SAPI输入参数是什么?

本文关键字:输入 参数 是什么 SAPI 成功 | 更新日期: 2023-09-27 18:12:28

我有一个问题,这个COM函数我不知道正确的参数是什么。我收到了来自VS 2013的坏通知。计划:speakBoard

        WAVEFORMATEX waveFORMATEX = new WAVEFORMATEX();
        waveFORMATEX.wFormatTag = 1;
        waveFORMATEX.nChannels = 1;
        waveFORMATEX.nSamplesPerSec = 44100;
        waveFORMATEX.wBitsPerSample = 16;
        waveFORMATEX.nBlockAlign = 4;
        waveFORMATEX.cbSize = 0;        
        SPVTEXTFRAG SPVtextFRAG = new SPVTEXTFRAG();
        SPVtextFRAG.pTextStart = "one";
        SPVtextFRAG.ulTextLen = 100;
        SPVtextFRAG.ulTextSrcOffset = 0;

        SpeakBoard1.STTTSEngine se;
        Guid rguid = new Guid("ggg");
        SpeakBoard1.ISpTTSEngineSite es;
        se.Speak(255, ref rguid, ref waveFORMATEX, ref SPVtextFRAG, es);

成功使用正确的SAPI输入参数是什么?

对于c++,我也面临着类似的问题。这是我填充主结构的代码:

SPVTEXTFRAG fillSPVTEXTFRAG(){
    SPVTEXTFRAG spvTextFrag;
    spvTextFrag.pNext = NULL;
    spvTextFrag.State.eAction = SPVA_Speak;
    spvTextFrag.State.LangID = 3;
    spvTextFrag.State.wReserved = 3;
    spvTextFrag.State.EmphAdj = 3;
    spvTextFrag.State.RateAdj = 3;
    spvTextFrag.State.Volume = 100;
    spvTextFrag.State.PitchAdj.MiddleAdj = 0;
    spvTextFrag.State.PitchAdj.RangeAdj = 0;
    spvTextFrag.State.SilenceMSecs = 0;
    //spvTextFrag.State.pPhoneIds = ;
    spvTextFrag.State.ePartOfSpeech = SPPS_Unknown;// SPPARTOFSPEECH.SPPS_Unknown; 
    spvTextFrag.State.Context.pCategory;
    spvTextFrag.State.Context.pBefore;
    spvTextFrag.State.Context.pAfter;
    spvTextFrag.pTextStart = L"one";
    spvTextFrag.ulTextLen = 100;
    spvTextFrag.ulTextSrcOffset = 0;
    return spvTextFrag;
}

这段代码填充了调用ISpTTSEngine的Speak方法的五个参数之一。但是您还需要为这样的调用实现ISpTTSEngineSite接口。