升龙物业 老版本 ocx IPO, 加密狗 转值班电话

TTSjt.cpp 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #include "StdAfx.h"
  2. #include "TTSjt.h"
  3. CTtsJt::CTtsJt(void) : m_IsInit(false), m_UseCount(0), m_Module(NULL), m_ProcJTTS_Init(NULL),
  4. m_ProcJTTS_End(NULL), m_ProcJTTS_SetParam(NULL), m_ProcJTTS_PlayToFile(NULL)
  5. {
  6. }
  7. CTtsJt::~CTtsJt(void)
  8. {
  9. close();
  10. }
  11. /*****************************************************************
  12. **【函数名称】 load
  13. **【函数功能】 加载TTS引擎
  14. **【参数】
  15. **【返回值】
  16. ****************************************************************/
  17. bool CTtsJt::load( LPCTSTR LibPath /*= NULL*/ )
  18. {
  19. if(LibPath == NULL)
  20. m_Module = LoadLibrary(_T("jTTS_ML.dll"));
  21. else
  22. m_Module = LoadLibrary(LibPath);
  23. if(m_Module == NULL)
  24. return false;
  25. if((m_ProcJTTS_Init = (__jTTS_Init)GetProcAddress(m_Module, _T("jTTS_Init"))) == NULL)
  26. return false;
  27. if((m_ProcJTTS_End = (__jTTS_End)GetProcAddress(m_Module, _T("jTTS_End"))) == NULL)
  28. return false;
  29. if((m_ProcJTTS_SetParam = (__jTTS_SetParam)GetProcAddress(m_Module, _T("jTTS_SetParam"))) == NULL)
  30. return false;
  31. if((m_ProcJTTS_PlayToFile = (__jTTS_PlayToFile)GetProcAddress(m_Module, _T("jTTS_PlayToFile"))) == NULL)
  32. return false;
  33. return true;
  34. }
  35. /*****************************************************************
  36. **【函数名称】 init
  37. **【函数功能】 初始化TTS
  38. **【参数】 a_ErrorInfo:如果初始化失败,返回失败原因
  39. **【返回值】 TRUE:初始化成功
  40. ****************************************************************/
  41. bool CTtsJt::init( LPTSTR a_ErrorInfo )
  42. {
  43. if (!m_IsInit)
  44. {
  45. // 系统从注册表中得到序列号和初始化字符串,进行初始化。
  46. ERRCODE err = m_ProcJTTS_Init(NULL, NULL);
  47. if (err != ERR_NONE)
  48. {
  49. CString strError = "";
  50. strError.Format("创建TTS实例失败, ERRCODE = %d", err);
  51. lstrcpy(a_ErrorInfo, strError.GetBuffer());
  52. return false;
  53. }
  54. m_IsInit = true;
  55. }
  56. // 用户计数
  57. ++m_UseCount;
  58. return true;
  59. }
  60. /*****************************************************************
  61. **【函数名称】 close
  62. **【函数功能】 释放TTS连接
  63. **【参数】
  64. **【返回值】
  65. ****************************************************************/
  66. void CTtsJt::close( void )
  67. {
  68. --m_UseCount;
  69. if (m_UseCount == 0)
  70. {
  71. m_ProcJTTS_End();
  72. m_IsInit = false;
  73. if(m_Module != NULL)
  74. {
  75. FreeLibrary(m_Module);
  76. m_Module = NULL;
  77. }
  78. }
  79. }
  80. /*****************************************************************
  81. **【函数名称】 setParam
  82. **【函数功能】 设置合成前的参数
  83. **【参数】 a_NumReadType读的方式:1数值,2字符串方式
  84. a_Speed:音速
  85. a_Volume:音量
  86. **【返回值】
  87. ****************************************************************/
  88. bool CTtsJt::setParam( int a_NumReadType, int a_Speed, int a_Volume )
  89. {
  90. if (!m_IsInit)
  91. return false;
  92. m_ProcJTTS_SetParam(PARAM_DIGITMODE, a_NumReadType);
  93. m_ProcJTTS_SetParam(PARAM_SPEED, a_Speed);
  94. m_ProcJTTS_SetParam(PARAM_VOLUME, a_Volume);
  95. return true;
  96. }
  97. /*****************************************************************
  98. **【函数名称】 string2Audio
  99. **【函数功能】 转换文本串到语音文件
  100. **【参数】 a_Text 要转换的文本串
  101. a_AudioName 语音文件名
  102. **【返回值】
  103. ****************************************************************/
  104. bool CTtsJt::string2Audio( LPTSTR a_Text, LPTSTR a_AudioName )
  105. {
  106. if (!m_IsInit)
  107. return false;
  108. ERRCODE err = m_ProcJTTS_PlayToFile(a_Text, a_AudioName, FORMAT_WAV_8K16B, NULL, 0, NULL, 0);
  109. if (err != ERR_NONE)
  110. return false;
  111. return true;
  112. }
  113. /*****************************************************************
  114. **【函数名称】 file2Audio
  115. **【函数功能】 转换文本文件到语音文件
  116. **【参数】 a_FileName 要转换的文本文本文件名
  117. a_AudioName 语音文件名
  118. **【返回值】
  119. ****************************************************************/
  120. bool CTtsJt::file2Audio( LPTSTR a_FileName, LPTSTR a_AudioName )
  121. {
  122. if (!m_IsInit)
  123. return false;
  124. ERRCODE err = m_ProcJTTS_PlayToFile(a_FileName, a_AudioName, FORMAT_WAV_8K16B, NULL, PLAYCONTENT_TEXTFILE, NULL, 0);
  125. if (err != ERR_NONE)
  126. return false;
  127. return true;
  128. }