April 29, 2024, 08:04:36 AM

News:

IonicWind Snippit Manager 2.xx Released!  Install it on a memory stick and take it with you!  With or without IWBasic!


Speech Object Library

Started by sapero, July 10, 2006, 03:42:27 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

sapero

The simplest way to let your box speak ;D more info at http://www.microsoft.com/speech
#include "objbase.inc"
#typedef SpeechVoiceSpeakFlags int
const SVSFDefault = 0;
const SVSFlagsAsync = 1;
const SVSFPurgeBeforeSpeak = 2;
const SVSFIsFilename = 4;
const SVSFIsXML = 8;
const SVSFIsNotXML = 16;
const SVSFPersistXML = 32;
const SVSFNLPSpeakPunc = 64;
const SVSFNLPMask = 64;
const SVSFVoiceMask = 127;
const SVSFUnusedFlags = -128;

interface ISpeechVoice : IDispatch
{
declare virtual get_Status(ISpeechVoiceStatus *out);
declare virtual get_Voice(ISpeechObjectToken *out);
declare virtual put_Voice(ISpeechObjectToken* rhs);
declare virtual get_AudioOutput(ISpeechObjectToken *out);
declare virtual put_AudioOutput(ISpeechObjectToken* rhs);
declare virtual get_AudioOutputStream(ISpeechBaseStream *out);
declare virtual put_AudioOutputStream(ISpeechBaseStream* rhs);
declare virtual get_Rate(long *out);
declare virtual put_Rate(long rhs);
declare virtual get_Volume(long *out);
declare virtual put_Volume(long rhs);
declare virtual put_AllowAudioOutputFormatChangesOnNextSet(VARIANT_BOOL rhs);
declare virtual get_AllowAudioOutputFormatChangesOnNextSet(VARIANT_BOOL *out);
declare virtual get_EventInterests(SpeechVoiceEvents *out);
declare virtual put_EventInterests(SpeechVoiceEvents rhs);
declare virtual put_Priority(SpeechVoicePriority rhs);
declare virtual get_Priority(SpeechVoicePriority *out);
declare virtual put_AlertBoundary(SpeechVoiceEvents rhs);
declare virtual get_AlertBoundary(SpeechVoiceEvents *out);
declare virtual put_SynchronousSpeakTimeout(long rhs);
declare virtual SynchronousSpeakTimeout(long *out);
declare virtual Speak(BSTR Text, opt SpeechVoiceSpeakFlags Flags=0, long *out);
declare virtual SpeakStream(ISpeechBaseStream* Stream, opt SpeechVoiceSpeakFlags Flags=0, long *out);
declare virtual Pause();
declare virtual Resume();
declare virtual Skip(BSTR Type, long NumItems, long *out);
declare virtual GetVoices(opt BSTR RequiredAttributes=L"", opt BSTR OptionalAttributes=L"", ISpeechObjectTokens *out);
declare virtual GetAudioOutputs(opt BSTR RequiredAttributes=L"", opt BSTR OptionalAttributes=L"", ISpeechObjectTokens *out);
declare virtual WaitUntilDone(long msTimeout,VARIANT_BOOL *out);
declare virtual SpeakCompleteEvent(long *out);
declare virtual IsUISupported(BSTR TypeOfUI, VARIANT* ExtraData, VARIANT_BOOL *out);
declare virtual DisplayUI(long hWndParent, BSTR Title, BSTR TypeOfUI, VARIANT* ExtraData);
};

ISpeechVoice *g_voice;
#define ES_WANTRETURN 0x1000
#define EDIT_1 1
#define BUTTON_2 2

class CSpeakDlg:CDialog
{
declare virtual OnDestroy(),int
{
if (g_voice) g_voice->Release();
}
declare OnSpeak(wstring txt)
{
int temp;
BSTR bstrText = SysAllocString(txt);
g_voice->Speak(bstrText, 0, &temp);
SysFreeString(bstrText);
}
declare virtual OnInitDialog(),int
{
CLSID  clsid;
CLSIDFromProgID(L"SAPI.SpVoice", &clsid);

REFIID rid;
CLSIDFromString(L"{269316D8-57BD-11D2-9EEE-00C04F797396}", &rid);

CButton *bt = GetControl(3);
bt->SetCheck(true);

if CoCreateInstance(&clsid, NULL, CLSCTX_INPROC_SERVER, &rid, &g_voice)
CloseDialog(0)
else
OnSpeak(L"helo! boys?");
}

declare virtual OnControl(int nID, int nNotifyCode, unsigned int hControl),int
{
if (nID == BUTTON_2 && !nNotifyCode )
{
CEdit *ed = GetControl(EDIT_1);
OnSpeak( s2w(ed->GetText()) );
int temp;
SetFocus(EDIT_1);
}
if (nID == 3 && !nNotifyCode )
{
CButton *bt = GetControl(3);
if bt->GetCheck()
ModifyStyle(0, ES_WANTRETURN, EDIT_1)
else
ModifyStyle(ES_WANTRETURN, 0, EDIT_1);
SetFocus(EDIT_1);
}
}
}

global sub main()
{
CSpeakDlg d1;
OleInitialize(NULL);
d1.Create(0,0,490,288,0x80CB0880,0,"Microsoft Speech Object Library Test",0);
d1.AddControl(CTEDIT,"aurora rocks!",10,6,463,240,0x50B100C4,0x200,EDIT_1);
d1.AddControl(CTDEFBUTTON,"Speak!",358,255,123,27,0x50010001,0x0,BUTTON_2);
d1.AddControl(CTCHECKBOX,"Enter = speak",13,260,88,16,0x50010003,0x0,3);
d1.DoModal();
OleUninitialize();
return;
}

ExMember001

interresting the way you code this ;)
a lots simpler than other code ive seen!