использование SAPI через C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fire64, 16 Mar 2009.

  1. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    Написал код преобразующий текст в голос и сохраняющий его в wav файл, но файл получается битым

    и открывается только VLC плеером

    PHP:
    //========= Copyright © 2009, Fire64, All rights reserved. ============
    //
    // Purpose: 
    //
    // $NoKeywords: $
    //=============================================================================

    #include <stdio.h>
    #include <string.h>
    #include <sapi.h>
    #include <tchar.h>

    int mainint argcchar **argv )
    {
        
    wchar_t *m_sText L"This sounds normal  but the pitch drops half way through";

        
    ISpStream *spStream NULL;

        
    ISpVoice pVoice NULL;

        
    WAVEFORMATEX _fmt;

        if (
    FAILED(CoInitialize(NULL)))
        {
            return 
    0;
        }

        
    CoCreateInstance(CLSID_SpVoiceNULLCLSCTX_ALLIID_ISpVoice, (void **)&pVoice);


        
    CoCreateInstance(CLSID_SpStreamNULLCLSCTX_ALLIID_ISpStream, (void **)&spStream);


        
    _fmt.wFormatTag=WAVE_FORMAT_PCM;
        
    _fmt.nChannels=1;
        
    _fmt.wBitsPerSample=16// 16 bit
        
    _fmt.nSamplesPerSec=44100// 44 khc
        
    _fmt.nBlockAlign=2;
        
    _fmt.nAvgBytesPerSec=88200;
        
    _fmt.cbSize=0;


        
    spStream->BindToFile(L"out.wav"SPFM_CREATE_ALWAYS, &SPDFID_WaveFormatEx, &_fmt,SPFEI_ALL_EVENTS);


        
    pVoice->SetOutputspStreamTRUE );

        
    pVoice->Speak(m_sText0NULL);

        
    pVoice->Release();

        
    pVoice NULL


        
    CoUninitialize();


        return 
    0;
    }
     
    #1 fire64, 16 Mar 2009
    Last edited: 16 Mar 2009