📄 jtts_ml.h
字号:
// jTTS_Play / jTTS_PlayToFile / jTTS_SessionStart 函数支持的dwFlag定义
// 此项仅对jTTS_PlayToFile适用
#define PLAYTOFILE_DEFAULT 0x0000 //默认值,写文件时只增加FORMAT_WAV_...格式的文件头
#define PLAYTOFILE_NOHEAD 0x0001 //所有的格式都不增加文件头
#define PLAYTOFILE_ADDHEAD 0x0002 //增加FORMAT_WAV_...格式和FORMAT_ALAW_8K,FORMAT_uLAW_8K格式的文件头
#define PLAYTOFILE_MASK 0x000F
// 此项仅对jTTS_Play适用
#define PLAY_RETURN 0x0000 // 如果正在播放,返回错误
#define PLAY_INTERRUPT 0x0010 // 如果正在播放,打断原来的播放,立即播放新的内容
#define PLAY_MASK 0x00F0
// 播放的内容
#define PLAYCONTENT_TEXT 0x0000 // 播放内容为文本
#define PLAYCONTENT_TEXTFILE 0x0100 // 播放内容为文本文件
#define PLAYCONTENT_AUTOFILE 0x0200 // 播放内容为文件,根据后缀名采用外界Filter DLL抽取
// 无法判断的当作文本文件
#define PLAYCONTENT_MASK 0x0F00
// 播放的模式,同时用于SessionStart
#define PLAYMODE_DEFAULT 0x0000 // 在jTTS_Play下缺省异步,在jTTS_PlayToFile下缺省同步
// jTTS_SessionStart下为主动获取数据方式
#define PLAYMODE_ASYNC 0x1000 // 异步播放,函数立即退出
#define PLAYMODE_SYNC 0x2000 // 同步播放,播放完成后退出
#define PLAYMODE_MASK 0xF000
// jTTS_FindVoice返回的匹配级别
#define MATCH_LANGUAGE 0 // 满足LANGUAGE,
#define MATCH_GENDER 1 // 满足LANGUAGE, GENDER
#define MATCH_AGE 2 // 满足LANGUAGE, GENDER, AGE
#define MATCH_NAME 3 // 满足LANGUAGE, GENDER,AGE,NAME
#define MATCH_DOMAIN 4 // 满足LANGUAGE, GENDER,AGE,NAME, DOMAIN,也即满足所有条件
#define MATCH_ALL 4 // 满足所有条件
// InsertInfo信息
#define INFO_MARK 0
#define INFO_VISEME 1
//各种信息串的长度
#define VOICENAME_LEN 32
#define VOICEID_LEN 40
#define VENDOR_LEN 32
#define DLLNAME_LEN 256
#define ATTRNAME_LEN 32
#define XMLLANG_LEN 256
//JTTS_PARAM
typedef enum
{
PARAM_CODEPAGE, // CODEPAGE_xxx
PARAM_VOICEID, // Voice ID
PARAM_PITCH, // PITCH_MIN - PITCH_MAX
PARAM_VOLUME, // VOLUME_MIN - VOLUME_MAX
PARAM_SPEED, // SPEED_MIN - SPEED_MAX
PARAM_PUNCMODE, // PUNC_xxx
PARAM_DIGITMODE, // DIGIT_xxx
PARAM_ENGMODE, // ENG_xxx
PARAM_TAGMODE, // TAG_xxx
PARAM_DOMAIN, // DOMAIN_xxx
PARAM_TRYTIMES, //
PARAM_LOADBALANCE, //
PARAM_VOICESTYLE, // VOICESTYLE_CADENCE, VOICESTYLE_FLAT
PARAM_BACKAUDIO, // BACKAUDIO_NONE, BACKAUDIO_MIN - BACKAUDIO_MAX
PARAM_BACKAUDIOVOLUME, // AUDIOVOLUME_MIN - AUDIOVOLUME_MAX
PARAM_BACKAUDIOFLAG, // BACKAUDIOFLAG_xxx
PARAM_VOICEBUFSIZE, // VOICEBUFSIZE_DEFAULT, or n (K)
PARAM_INSERTINFOSIZE, // INSERTINFOSIZE_DEFAULT, or n
}
JTTS_PARAM;
//JTTS_CONFIG
#define JTTS_VERSION4 0x0004 // version 4.0
typedef struct JTTS_CONFIG_T
{
WORD wVersion; // JTTS_VERSION4
WORD nCodePage;
char szVoiceID[VOICEID_LEN]; // 使用的音色
short nDomain;
short nPitch;
short nVolume;
short nSpeed;
short nPuncMode;
short nDigitMode;
short nEngMode;
short nTagMode;
short nTryTimes; // 重试次数,此成员仅用于远程合成
short nReserved1;
BOOL bLoadBalance; // 负载平衡,此成员仅用于远程合成
short nVoiceStyle; // 朗读风格
short nBackAudio; // BACKAUDIO_NONE: 无背景音乐,BACKAUDIO_MIN-BACKAUDIO_MAX: 背景音乐序号,在资源管理中心"录音管理器"中定义
short nBackAudioVolume; // 背景音乐的音量
WORD wBackAudioFlag; // 背景音乐的属性
short nVoiceBufSize; // 设置内部缓冲区的大小
short nInsertInfoSize; // 缓冲区中插入信息的个数
short nReserved[6]; // 保留
}
JTTS_CONFIG;
//JTTS_VOICEATTRIBUTE
typedef struct JTTS_VOICEATTRIBUTE_T
{
char szName[VOICENAME_LEN]; // 只能为英文名称
char szVoiceID[VOICEID_LEN]; // 音色的唯一标识
short nGender; // GENDER_xxx
short nAge; // AGE_xx
DWORD dwDomainArray; // 由低位向高位,分别表示DOMAIN_xxx
DWORD nLanguage; // 支持的语言, LANGUAGE_xxx
char szVendor[VENDOR_LEN]; // 提供厂商
char szDLLName[DLLNAME_LEN]; // 对应的DLL
DWORD dwVersionMS; // 引擎的版本号,对应"3.75.0.31"的前两节
// e.g. 0x00030075 = "3.75"
DWORD dwVersionLS; // e.g. 0x00000031 = "0.31"
}
JTTS_VOICEATTRIBUTE;
// 插入信息
typedef struct INSERTINFO_T
{
int nTag; // 有二种:INFO_MARK, INFO_VISEME
DWORD dwValue; // 具体信息:
// MARK时,高24位mark文本偏移,低8位文本长度
// VISEME时,表示唇型
DWORD dwBytes; // 在语音流的什么地方插入,必须按顺序增加
}
INSERTINFO;
typedef struct JTTS_LANGATTRIBUTE_T
{
int nValue;
char szName[ATTRNAME_LEN];
char szEngName[ATTRNAME_LEN];
char szXmlLang[XMLLANG_LEN];
}
JTTS_LANGATTRIBUTE;
typedef struct JTTS_DOMAINATTRIBUTE_T
{
int nValue;
char szName[ATTRNAME_LEN];
char szEngName[ATTRNAME_LEN];
}
JTTS_DOMAINATTRIBUTE;
typedef struct JTTS_COUNTERS_T
{
int nSession;
}
JTTS_COUNTERS;
// 系统通知消息及回调函数部分
// 系统通知消息
#define WM_JTTS_NOTIFY (WM_USER + 0x4999)
// 回调函数
typedef BOOL (TTSAPI * JTTS_CALLBACKPROC)(WORD wParam, LONG lParam, DWORD dwUserData);
typedef BOOL (TTSAPI * JTTS_DATACALLBACKPROC)(DWORD dwSessionID, WORD wParam, LONG lParam,
unsigned char * pVoiceData, DWORD dwLen,
INSERTINFO* pInsertInfo, int nInsertInfo,
DWORD dwUserData);
// WM_JTTS_NOTIFY / JTTS_CALLBACKPROC / JTTS_DATACALLBACKPROC中wParam的定义
#define NOTIFY_BEGIN 0 // lParam: 没有使用
#define NOTIFY_END 1 // lParam: 没有使用
#define NOTIFY_SENTEND 2 // lParam: 已经读完的字节数
#define NOTIFY_SENTBEGIN 3 // lParam: 将要读到的位置(以字节数计算)
#define NOTIFY_MARK 4 // lParam: 标记Mark串的位置和长度, 参考宏GETMARKOFFSET和GETMARKLEN
#define NOTIFY_VISEME 5 // lParam: 标记唇型信息,现版本中未使用
#define NOTIFY_CHANGECONFIG 6 // 系统主动使用与传入Config不同的配置
#define NOTIFY_DATA 7 // 仅用于 JTTS_DATACALLBACKPROC,传递合成数据和InsertInfo信息
// lParam not use; dwLen是pVoiceData长度; pVoiceData语音数据缓冲;
// nInsertInfo, pInsertInfo是插入数据的数目和内容
// 为和老版本兼容而保留
#define NOTIFY_PROGRESS 2
#define NOTIFY_PROGRESS2 3
// 通过NOTIFY_MARK的lParam得到具体的Mark String的偏移量和长度
#define GETMARKOFFSET(lParam) (lParam >> 8)
#define GETMARKLEN(lParam) (lParam & 0xFF)
//------------------------------------------------------------------------
// 系统函数
ERRCODE TTSAPI jTTS_Init(const char * pcszLibPath, const char * pcszSerialNo);
ERRCODE TTSAPI jTTS_End();
int TTSAPI jTTS_GetLangCount();
ERRCODE TTSAPI jTTS_GetLangAttribute(int nIndex, JTTS_LANGATTRIBUTE * pAttribute);
ERRCODE TTSAPI jTTS_GetLangAttributeByValue(int nValue, JTTS_LANGATTRIBUTE * pAttribute);
int TTSAPI jTTS_GetDomainCount();
ERRCODE TTSAPI jTTS_GetDomainAttribute(int nIndex, JTTS_DOMAINATTRIBUTE * pAttribute);
ERRCODE TTSAPI jTTS_GetDomainAttributeByValue(int nValue, JTTS_DOMAINATTRIBUTE * pAttribute);
//-------------------------------------------------------------
// 音库信息函数
int TTSAPI jTTS_GetVoiceCount();
ERRCODE TTSAPI jTTS_GetVoiceAttribute(int nIndex, JTTS_VOICEATTRIBUTE * pAttribute);
ERRCODE TTSAPI jTTS_GetVoiceAttributeByID(const char *pszVoiceID, JTTS_VOICEATTRIBUTE * pAttribute);
BOOL TTSAPI jTTS_IsVoiceSupported(const char *pszVoiceID);
ERRCODE TTSAPI jTTS_FindVoice(int nLanguage, int nGender, int nAge, char * szName, int nDomain,
char * pszVoiceID, WORD * pwMatchFlag);
ERRCODE TTSAPI jTTS_PreLoad (const char *pszVoiceID);
//------------------------------------------------------------------------
// 设置函数
ERRCODE TTSAPI jTTS_Set(const JTTS_CONFIG * pConfig);
ERRCODE TTSAPI jTTS_Get(JTTS_CONFIG * pConfig);
ERRCODE TTSAPI jTTS_SetParam(JTTS_PARAM nParam, DWORD dwValue);
ERRCODE TTSAPI jTTS_GetParam(JTTS_PARAM nParam, DWORD *pdwValue);
//------------------------------------------------------------------------
// 播放函数
ERRCODE TTSAPI jTTS_SetPlay(UINT uDeviceID, HWND hwnd, JTTS_CALLBACKPROC lpfnCallback, DWORD dwUserData);
ERRCODE TTSAPI jTTS_Play(const char * pcszText, DWORD dwFlag);
ERRCODE TTSAPI jTTS_Stop();
ERRCODE TTSAPI jTTS_Pause();
ERRCODE TTSAPI jTTS_Resume();
int TTSAPI jTTS_GetStatus();
//------------------------------------------------------------------------
// 播放到文件函数
ERRCODE TTSAPI jTTS_PlayToFile(const char *pcszText, const char * pcszFileName,
UINT nFormat, const JTTS_CONFIG * pConfig,
DWORD dwFlag, JTTS_CALLBACKPROC lpfnCallback,
DWORD dwUserData);
//-------------------------------------------------------------
// 合成过程底层函数
ERRCODE TTSAPI jTTS_SessionStart(const char * pcszText, DWORD * pdwSessionID,
UINT nFormat, const JTTS_CONFIG *pConfig, DWORD dwFlag,
int * pnBitsPerSample, int * pnSamplesPerSec);
ERRCODE TTSAPI jTTS_SessionGetData(DWORD dwSessionID, int nBufIndex, unsigned char ** ppVoiceData,
DWORD * pdwLen, int nReserveLen, INSERTINFO** ppInsertInfo,
int* pnInsertInfo);
ERRCODE TTSAPI jTTS_SessionStop(DWORD dwSessionID);
ERRCODE TTSAPI jTTS_SessionGetReadBytes(DWORD dwSessionID, DWORD * pdwBytes);
ERRCODE TTSAPI jTTS_SessionExec(DWORD dwSessionID, JTTS_DATACALLBACKPROC lpfnDataCallback, DWORD dwUserData);
#ifdef __cplusplus
}
#endif
#pragma pack( pop, jtts_ml_h )
#endif //_JTTS_ML_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -