by M.K » 2006年3月19日(日) 22:21
こんばんは...
自分も必要に迫られ...
どうにか動くものを製作しました。
シロウト考えですがご容赦ください...
1.Windowsアプリケーションプロジェクトを作成し、そのプロジェクトに新しくBasicプログラムファイル(*.abp/*.bas)を追加する。
2.それに以下のコードを打ち込む。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
Class _ITextToSpeech
Inherits IUnknown
Public
'{ dualインターフェイス特有のメソッド(ダミー)を加えておく
Virtual Sub GetTypeInfoCount()
Virtual Sub GetTypeInfo()
Virtual Sub GetIdsOfNames()
Virtual Sub Invoke()
'}
'ここから下は、TextToSpeechのメソッドを並べる
Virtual Function initialized_Get(pVal As DWordPtr) As DWord
Virtual Function initialized_Set(pVal As Long) As DWord
Virtual Function Speak(Text As BytePtr) As DWord
Virtual Function StopSpeaking() As DWord
Virtual Function FastForward() As DWord
Virtual Function Pause() As DWord
Virtual Function Resume() As DWord
Virtual Function Rewind() As DWord
Virtual Function Device_Get(pVal As DWordPtr) As DWord
Virtual Function Device_Set(pVal As Long) As DWord
Virtual Function Enabled_Get(pVal As DWordPtr) As DWord
Virtual Function Enabled_Set(pVal As Long) As DWord
Virtual Function IsSpeaking(pVal As DWordPtr) As DWord
Virtual Function Speed_Get(pVal As DWordPtr) As DWord
Virtual Function Speed_Set(pVal As Long) As DWord
Virtual Function TTSMode_Get(pVal As BytePtr) As DWord
Virtual Function TTSMode_Set(pVal As BytePtr) As Dword
Virtual Function AboutDlg(hWnd As DWord,title As BytePtr) As DWord
Virtual Function GeneralDlg(hWnd As DWord,title As BytePtr) As DWord
Virtual Function LexiconDlg(hWnd As DWord,title As BytePtr) As DWord
Virtual Function TranslateDlg(hWnd As DWord,title As BytePtr) As DWord
Virtual Sub FindEngine() 'ダミーとして定義
Virtual Function CountEngines(pVal As DWordPtr) As DWord
Virtual Function ModeName(index As Long,pVal As BytePtr) As DWord
Virtual Function MfgName(index As Long,pVal As BytePtr) As DWord
Virtual Function ProductName(index As Long,pVal As BytePtr) As DWord
Virtual Function ModeID(index As Long,pVal As BytePtr) As DWord
Virtual Function Speaker(index As Long,pVal As BytePtr) As DWord
Virtual Function Style(index As Long,pVal As BytePtr) As DWord
Virtual Function Gender(index As Long,Gender As DWordPtr) As DWord
Virtual Function Age(index As Long,pVal As DWordPtr) As DWord
Virtual Function Features(index As Long,pVal As DWordPtr) As DWord
Virtual Function Interfaces(index As Long,pVal As DWordPtr) As DWord
Virtual Function EngineFeatures(index As Long,pVal As DWordPtr) As DWord
Virtual Function LanguageID(index As Long,pVal As DWordPtr) As DWord
Virtual Function dialect(index As Long,pVal As BytePtr) As DWord
Virtual Function MouthHeight_Get(pVal As DWordPtr) As Dword
Virtual Function MouthHeight_Set(pVal As Integer) As DWord
Virtual Function MouthWidth_Get(pVal As DWordPtr) As DWord
Virtual Function MouthWidth_Set(pVal As Integer) As DWord
Virtual Function MouthUpturn_Get(pVal As DWordPtr) As DWord
Virtual Function MouthUpturn_Set(pVal As Integer) As DWord
Virtual Function JawOpen_Get(pVal As DWordPtr) As DWord
Virtual Function JawOpen_Set(pVal As Integer) As DWord
Virtual Function TeethUpperVisible_Get(pVal As DWordPtr) As DWord
Virtual Function TeethUpperVisible_Set(pVal As Integer) As DWord
Virtual Function TeethLowerVisible_Get(pVal As DWordPtr) As DWord
Virtual Function TeethLowerVisible(pVal As Integer) As DWord
Virtual Function TonguePosn_Get(pVal As DWordPtr) As DWord
Virtual Function TonguePosn_Set(pVal As Integer) As DWord
Virtual Function LipTension_Get(pVal As DWordPtr) As DWord
Virtual Function LipTension_Set(pVal As Integer) As DWord
Virtual Function LastError_Get(pVal As DWordPtr) As DWord
Virtual Function LastError_Set(pVal As Long) As DWord
Virtual Function SuppressExceptions_Get(pVal As DWordPtr) As DWord
Virtual Function SuppressExceptions_Set(pVal As Integer) As DWord
Virtual Function EngineSelect(index As Long) As DWord
Virtual Function LipType_Get(pVal As DWordPtr) As DWord
Virtual Function LipType_Set(pVal As Integer) As DWord
Virtual Function CurrentMode_Get(pVal As DWordPtr) As DWord
Virtual Function CurrentMode_Set(pVal As Long) As DWord
Virtual Function hWnd(pVal As DWordPtr) As DWord
Virtual Function Find(RankList As BytePtr,index As DWordPtr) As DWord
End Class
'2398E32F-5C6E-11D1-8C65-0060081841DE
Dim CLASS_HTTSLIB = [&H2398E32F,&H5C6E,&H11D1,[&H8C,&H65,&H00,&H60,&H08,&H18,&H41,&HDE]] As GUID
/*
[
uuid(2398E32E-5C6E-11D1-8C65-0060081841DE),
helpstring("ITextToSpeech Interface"),
dual
]
*/
Dim IID_ITextToSpeech = [&H2398E32E,&H5C6E,&H11D1,[&H8C,&H65,&H00,&H60,&H08,&H18,&H41,&HDE]] As GUID
TypeDef ITextToSpeech = *_ITextToSpeech
Dim VText As ITextToSpeech
3.メインウィンドウのCreateイベントに以下のコードを挿入する
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
CoInitialize(NULL)
If CoCreateInstance(CLASS_HTTSLIB,NULL,CLSCTX_INPROC_SERVER,IID_ITextToSpeech,VarPtr(VText)) <> 0 Then
EnableWindow(GetDlgItem(hMainWnd,CommandButton1),FALSE)
MessageBox(hMainWnd,"MS VoiceText(Vtext.dll)がインストール" & Chr$(13) & Chr$(10) &"されていないか不正です!","エラー",MB_OK Or MB_ICONSTOP)
End
End If
End Sub
4.メインウィンドウにボタン(ここではCommandButton1)を配置して、Clickイベントに以下のコードを挿入する。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]
コード: 全て選択
Sub MainWnd_CommandButton1_Click()
'「お待たせいたしました」のUNICODE表記
Dim spkText[21] = [
&h4A,&h30,&h85,&h5F,&h5F,&h30,&h5B,&h30,&h44,&h30,
&h5F,&h30,&h57,&h30,&h7E,&h30,&h57,&h30,&h5F,&h30,
&h00,&h00
] As Byte
VText->StopSpeaking()
VText->Speak(spkText)
End Sub
5.メインウィンドウのDestroyイベントへ
VText->Release()
を挿入する。
6.「リリースコンパイル」してExeにしたものを実行する(重要!)。
ボタンをクリックして「お待たせいたしました」としゃべるか確認してみてください。
※ここで注意することは、文字列をUNICODEで渡すこと。(うちはこれでうまくいきました...)
※テキストボックス(エディットボックス)の文字列をしゃべらせるには、
内容をUNICODEに変えてしゃべらせるようにしてください。
(うちは現在実験中です...)
※このコードはAB-Ver4以降用です。
こんばんは...
自分も必要に迫られ...
どうにか動くものを製作しました。
シロウト考えですがご容赦ください...
1.Windowsアプリケーションプロジェクトを作成し、そのプロジェクトに新しくBasicプログラムファイル(*.abp/*.bas)を追加する。
2.それに以下のコードを打ち込む。
[hide]
[code]
Class _ITextToSpeech
Inherits IUnknown
Public
'{ dualインターフェイス特有のメソッド(ダミー)を加えておく
Virtual Sub GetTypeInfoCount()
Virtual Sub GetTypeInfo()
Virtual Sub GetIdsOfNames()
Virtual Sub Invoke()
'}
'ここから下は、TextToSpeechのメソッドを並べる
Virtual Function initialized_Get(pVal As DWordPtr) As DWord
Virtual Function initialized_Set(pVal As Long) As DWord
Virtual Function Speak(Text As BytePtr) As DWord
Virtual Function StopSpeaking() As DWord
Virtual Function FastForward() As DWord
Virtual Function Pause() As DWord
Virtual Function Resume() As DWord
Virtual Function Rewind() As DWord
Virtual Function Device_Get(pVal As DWordPtr) As DWord
Virtual Function Device_Set(pVal As Long) As DWord
Virtual Function Enabled_Get(pVal As DWordPtr) As DWord
Virtual Function Enabled_Set(pVal As Long) As DWord
Virtual Function IsSpeaking(pVal As DWordPtr) As DWord
Virtual Function Speed_Get(pVal As DWordPtr) As DWord
Virtual Function Speed_Set(pVal As Long) As DWord
Virtual Function TTSMode_Get(pVal As BytePtr) As DWord
Virtual Function TTSMode_Set(pVal As BytePtr) As Dword
Virtual Function AboutDlg(hWnd As DWord,title As BytePtr) As DWord
Virtual Function GeneralDlg(hWnd As DWord,title As BytePtr) As DWord
Virtual Function LexiconDlg(hWnd As DWord,title As BytePtr) As DWord
Virtual Function TranslateDlg(hWnd As DWord,title As BytePtr) As DWord
Virtual Sub FindEngine() 'ダミーとして定義
Virtual Function CountEngines(pVal As DWordPtr) As DWord
Virtual Function ModeName(index As Long,pVal As BytePtr) As DWord
Virtual Function MfgName(index As Long,pVal As BytePtr) As DWord
Virtual Function ProductName(index As Long,pVal As BytePtr) As DWord
Virtual Function ModeID(index As Long,pVal As BytePtr) As DWord
Virtual Function Speaker(index As Long,pVal As BytePtr) As DWord
Virtual Function Style(index As Long,pVal As BytePtr) As DWord
Virtual Function Gender(index As Long,Gender As DWordPtr) As DWord
Virtual Function Age(index As Long,pVal As DWordPtr) As DWord
Virtual Function Features(index As Long,pVal As DWordPtr) As DWord
Virtual Function Interfaces(index As Long,pVal As DWordPtr) As DWord
Virtual Function EngineFeatures(index As Long,pVal As DWordPtr) As DWord
Virtual Function LanguageID(index As Long,pVal As DWordPtr) As DWord
Virtual Function dialect(index As Long,pVal As BytePtr) As DWord
Virtual Function MouthHeight_Get(pVal As DWordPtr) As Dword
Virtual Function MouthHeight_Set(pVal As Integer) As DWord
Virtual Function MouthWidth_Get(pVal As DWordPtr) As DWord
Virtual Function MouthWidth_Set(pVal As Integer) As DWord
Virtual Function MouthUpturn_Get(pVal As DWordPtr) As DWord
Virtual Function MouthUpturn_Set(pVal As Integer) As DWord
Virtual Function JawOpen_Get(pVal As DWordPtr) As DWord
Virtual Function JawOpen_Set(pVal As Integer) As DWord
Virtual Function TeethUpperVisible_Get(pVal As DWordPtr) As DWord
Virtual Function TeethUpperVisible_Set(pVal As Integer) As DWord
Virtual Function TeethLowerVisible_Get(pVal As DWordPtr) As DWord
Virtual Function TeethLowerVisible(pVal As Integer) As DWord
Virtual Function TonguePosn_Get(pVal As DWordPtr) As DWord
Virtual Function TonguePosn_Set(pVal As Integer) As DWord
Virtual Function LipTension_Get(pVal As DWordPtr) As DWord
Virtual Function LipTension_Set(pVal As Integer) As DWord
Virtual Function LastError_Get(pVal As DWordPtr) As DWord
Virtual Function LastError_Set(pVal As Long) As DWord
Virtual Function SuppressExceptions_Get(pVal As DWordPtr) As DWord
Virtual Function SuppressExceptions_Set(pVal As Integer) As DWord
Virtual Function EngineSelect(index As Long) As DWord
Virtual Function LipType_Get(pVal As DWordPtr) As DWord
Virtual Function LipType_Set(pVal As Integer) As DWord
Virtual Function CurrentMode_Get(pVal As DWordPtr) As DWord
Virtual Function CurrentMode_Set(pVal As Long) As DWord
Virtual Function hWnd(pVal As DWordPtr) As DWord
Virtual Function Find(RankList As BytePtr,index As DWordPtr) As DWord
End Class
'2398E32F-5C6E-11D1-8C65-0060081841DE
Dim CLASS_HTTSLIB = [&H2398E32F,&H5C6E,&H11D1,[&H8C,&H65,&H00,&H60,&H08,&H18,&H41,&HDE]] As GUID
/*
[
uuid(2398E32E-5C6E-11D1-8C65-0060081841DE),
helpstring("ITextToSpeech Interface"),
dual
]
*/
Dim IID_ITextToSpeech = [&H2398E32E,&H5C6E,&H11D1,[&H8C,&H65,&H00,&H60,&H08,&H18,&H41,&HDE]] As GUID
TypeDef ITextToSpeech = *_ITextToSpeech
Dim VText As ITextToSpeech
[/code]
[/hide]
3.メインウィンドウのCreateイベントに以下のコードを挿入する
[hide]
[code]
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
CoInitialize(NULL)
If CoCreateInstance(CLASS_HTTSLIB,NULL,CLSCTX_INPROC_SERVER,IID_ITextToSpeech,VarPtr(VText)) <> 0 Then
EnableWindow(GetDlgItem(hMainWnd,CommandButton1),FALSE)
MessageBox(hMainWnd,"MS VoiceText(Vtext.dll)がインストール" & Chr$(13) & Chr$(10) &"されていないか不正です!","エラー",MB_OK Or MB_ICONSTOP)
End
End If
End Sub
[/code]
[/hide]
4.メインウィンドウにボタン(ここではCommandButton1)を配置して、Clickイベントに以下のコードを挿入する。
[hide]
[code]
Sub MainWnd_CommandButton1_Click()
'「お待たせいたしました」のUNICODE表記
Dim spkText[21] = [
&h4A,&h30,&h85,&h5F,&h5F,&h30,&h5B,&h30,&h44,&h30,
&h5F,&h30,&h57,&h30,&h7E,&h30,&h57,&h30,&h5F,&h30,
&h00,&h00
] As Byte
VText->StopSpeaking()
VText->Speak(spkText)
End Sub
[/code]
[/hide]
5.メインウィンドウのDestroyイベントへ
VText->Release()
を挿入する。
[b]6.「リリースコンパイル」してExeにしたものを実行する(重要!)。[/b]
ボタンをクリックして「お待たせいたしました」としゃべるか確認してみてください。
※ここで注意することは、文字列をUNICODEで渡すこと。(うちはこれでうまくいきました...)
※テキストボックス(エディットボックス)の文字列をしゃべらせるには、
内容をUNICODEに変えてしゃべらせるようにしてください。
(うちは現在実験中です...)
※このコードはAB-Ver4以降用です。