| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- #include "StdAfx.h"
- #include "TTSjt.h"
- CTtsJt::CTtsJt(void) : m_IsInit(false), m_UseCount(0), m_Module(NULL), m_ProcJTTS_Init(NULL),
- m_ProcJTTS_End(NULL), m_ProcJTTS_SetParam(NULL), m_ProcJTTS_PlayToFile(NULL)
- {
- }
- CTtsJt::~CTtsJt(void)
- {
- close();
- }
- /*****************************************************************
- **【函数名称】 load
- **【函数功能】 加载TTS引擎
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CTtsJt::load( LPCTSTR LibPath /*= NULL*/ )
- {
- if(LibPath == NULL)
- m_Module = LoadLibrary(_T("jTTS_ML.dll"));
- else
- m_Module = LoadLibrary(LibPath);
- if(m_Module == NULL)
- return false;
- if((m_ProcJTTS_Init = (__jTTS_Init)GetProcAddress(m_Module, _T("jTTS_Init"))) == NULL)
- return false;
- if((m_ProcJTTS_End = (__jTTS_End)GetProcAddress(m_Module, _T("jTTS_End"))) == NULL)
- return false;
- if((m_ProcJTTS_SetParam = (__jTTS_SetParam)GetProcAddress(m_Module, _T("jTTS_SetParam"))) == NULL)
- return false;
- if((m_ProcJTTS_PlayToFile = (__jTTS_PlayToFile)GetProcAddress(m_Module, _T("jTTS_PlayToFile"))) == NULL)
- return false;
- return true;
- }
- /*****************************************************************
- **【函数名称】 init
- **【函数功能】 初始化TTS
- **【参数】 a_ErrorInfo:如果初始化失败,返回失败原因
- **【返回值】 TRUE:初始化成功
- ****************************************************************/
- bool CTtsJt::init( LPTSTR a_ErrorInfo )
- {
- if (!m_IsInit)
- {
- // 系统从注册表中得到序列号和初始化字符串,进行初始化。
- ERRCODE err = m_ProcJTTS_Init(NULL, NULL);
- if (err != ERR_NONE)
- {
- CString strError = "";
- strError.Format("创建TTS实例失败, ERRCODE = %d", err);
- lstrcpy(a_ErrorInfo, strError.GetBuffer());
- return false;
- }
-
- m_IsInit = true;
- }
- // 用户计数
- ++m_UseCount;
- return true;
- }
- /*****************************************************************
- **【函数名称】 close
- **【函数功能】 释放TTS连接
- **【参数】
- **【返回值】
- ****************************************************************/
- void CTtsJt::close( void )
- {
- --m_UseCount;
- if (m_UseCount == 0)
- {
- m_ProcJTTS_End();
- m_IsInit = false;
- if(m_Module != NULL)
- {
- FreeLibrary(m_Module);
- m_Module = NULL;
- }
- }
- }
- /*****************************************************************
- **【函数名称】 setParam
- **【函数功能】 设置合成前的参数
- **【参数】 a_NumReadType读的方式:1数值,2字符串方式
- a_Speed:音速
- a_Volume:音量
- **【返回值】
- ****************************************************************/
- bool CTtsJt::setParam( int a_NumReadType, int a_Speed, int a_Volume )
- {
- if (!m_IsInit)
- return false;
- m_ProcJTTS_SetParam(PARAM_DIGITMODE, a_NumReadType);
- m_ProcJTTS_SetParam(PARAM_SPEED, a_Speed);
- m_ProcJTTS_SetParam(PARAM_VOLUME, a_Volume);
- return true;
- }
- /*****************************************************************
- **【函数名称】 string2Audio
- **【函数功能】 转换文本串到语音文件
- **【参数】 a_Text 要转换的文本串
- a_AudioName 语音文件名
- **【返回值】
- ****************************************************************/
- bool CTtsJt::string2Audio( LPTSTR a_Text, LPTSTR a_AudioName )
- {
- if (!m_IsInit)
- return false;
- ERRCODE err = m_ProcJTTS_PlayToFile(a_Text, a_AudioName, FORMAT_WAV_8K16B, NULL, 0, NULL, 0);
- if (err != ERR_NONE)
- return false;
- return true;
- }
- /*****************************************************************
- **【函数名称】 file2Audio
- **【函数功能】 转换文本文件到语音文件
- **【参数】 a_FileName 要转换的文本文本文件名
- a_AudioName 语音文件名
- **【返回值】
- ****************************************************************/
- bool CTtsJt::file2Audio( LPTSTR a_FileName, LPTSTR a_AudioName )
- {
- if (!m_IsInit)
- return false;
- ERRCODE err = m_ProcJTTS_PlayToFile(a_FileName, a_AudioName, FORMAT_WAV_8K16B, NULL, PLAYCONTENT_TEXTFILE, NULL, 0);
- if (err != ERR_NONE)
- return false;
- return true;
- }
|