SpeechSample.cpp
上传用户:zhaopin
上传日期:2007-01-07
资源大小:79k
文件大小:3k
源码类别:

语音合成与识别

开发平台:

Visual C++

  1. /*
  2.  * File: SpeechSample.cpp
  3.  * Purpose: CSpeech sample for wxWindows
  4.  * Author: Julian Smart
  5.  * Created: 1998
  6.  * Updated:
  7.  * Copyright: (c) 1998, Julian Smart
  8.  */
  9. // For compilers that support precompilation, includes "wx.h".
  10. #include "wx_prec.h"
  11. #ifdef __BORLANDC__
  12. #pragma hdrstop
  13. #endif
  14. #ifndef WX_PRECOMP
  15. #include "wx.h"
  16. #endif
  17. // CSpeech
  18. #include "cspeech.h"
  19. // OLE
  20. #include <objbase.h>
  21. // Define a new application type
  22. class MyApp: public wxApp
  23. { public:
  24.     wxFrame *OnInit(void);
  25. };
  26. // Define a new frame type
  27. class MyFrame: public wxFrame
  28. {
  29. public:
  30.     MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
  31.     void OnMenuCommand(int id);
  32.     Bool OnClose(void) ;
  33. CSpeech& GetSpeech() { return m_speech; }
  34. wxMultiText* m_speechCtrl;
  35. CSpeech m_speech;
  36. };
  37. // ID for the menu quit command
  38. #define SPEECH_QUIT 1
  39. #define SPEECH_SAY 2
  40. // This statement initializes the whole application and calls OnInit
  41. MyApp myApp;
  42. // A macro needed for some compilers (AIX) that need 'main' to be defined
  43. // in the application itself.
  44. IMPLEMENT_WXWIN_MAIN
  45. // `Main program' equivalent, creating windows and returning main app frame
  46. wxFrame *MyApp::OnInit(void)
  47. {
  48.   if (FAILED(CoInitialize(NULL))) return FALSE;
  49.   // Create the main frame window
  50.   MyFrame *frame = new MyFrame(NULL, "wxWindows Speech Sample", 50, 50, 320, 165);
  51.   // Give it an icon
  52.   frame->SetIcon(new wxIcon("mondrian"));
  53.   // Make a menubar
  54.   wxMenu *file_menu = new wxMenu;
  55.   file_menu->Append(SPEECH_SAY, "&Say text");
  56.   file_menu->Append(SPEECH_QUIT, "E&xit");
  57.   wxMenuBar *menu_bar = new wxMenuBar;
  58.   menu_bar->Append(file_menu, "&File");
  59.   frame->SetMenuBar(menu_bar);
  60.   // Make a panel with a message
  61.   wxPanel *panel = new wxPanel(frame, 0, 0, 350, 200);
  62.   panel->SetLabelPosition(wxVERTICAL) ;
  63.   frame->m_speechCtrl = new wxMultiText(panel, (wxFunction) NULL, "Enter text to speak:",
  64.    "Hello, welcome to the wxWindows speech sample.", 5, 5, 300, 100);
  65.   // Show the frame
  66.   frame->Show(TRUE);
  67.   // Return the main frame window
  68.   return frame;
  69. }
  70. // My frame constructor
  71. MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h):
  72.   wxFrame(frame, title, x, y, w, h)
  73. {
  74. m_speech.Init();
  75. }
  76. // Intercept menu commands
  77. void MyFrame::OnMenuCommand(int id)
  78. {
  79.   switch (id) {
  80.     case SPEECH_SAY:
  81. {
  82. char* val = m_speechCtrl->GetValue();
  83. wxString str(val);
  84. if (str != "")
  85. m_speech.Say(str);
  86.      break;
  87. }
  88.     case SPEECH_QUIT:
  89. {
  90.        this->Close();
  91.      break;
  92. }
  93.   }
  94. }
  95. Bool MyFrame::OnClose(void)
  96. {
  97. m_speech.Terminate();
  98.     CoUninitialize ();
  99. return TRUE;
  100. }