fire64
16.03.2009, 11:40
Написал код преобразующий текст в голос и сохраняющий его в wav файл, но файл получается битым
и открывается только VLC плеером
//========= Copyright © 2009, Fire64, All rights reserved. ============
//
// Purpose:
//
// $NoKeywords: $
//================================================== ===========================
#include <stdio.h>
#include <string.h>
#include <sapi.h>
#include <tchar.h>
int main( int argc, char **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_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
CoCreateInstance(CLSID_SpStream, NULL, CLSCTX_ALL, IID_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->SetOutput( spStream, TRUE );
pVoice->Speak(m_sText, 0, NULL);
pVoice->Release();
pVoice = NULL;
CoUninitialize();
return 0;
}
и открывается только VLC плеером
//========= Copyright © 2009, Fire64, All rights reserved. ============
//
// Purpose:
//
// $NoKeywords: $
//================================================== ===========================
#include <stdio.h>
#include <string.h>
#include <sapi.h>
#include <tchar.h>
int main( int argc, char **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_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
CoCreateInstance(CLSID_SpStream, NULL, CLSCTX_ALL, IID_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->SetOutput( spStream, TRUE );
pVoice->Speak(m_sText, 0, NULL);
pVoice->Release();
pVoice = NULL;
CoUninitialize();
return 0;
}