Megaphone_TTS.c 4.3 KB
#include <stdio.h>
#include <string.h>

#include "Megaphone_TTS.h"
#include "cn_tts/cn_tts.h"
#include "JZsdkLib.h"
#include "Intl_tts/Intl_tts.h"

#include "version_choose.h"

static int g_Megaphone_TTS_tone = 0x01;
static int g_Megaphone_TTS_volue = 100;
static int g_Megaphone_TTS_speed = 0x32;

int tts_add = 0x00;
int TTS_Compound_flag=0;//默认是0     //TTS 标志



static int TTS(int name,int volume,int speed,int len,char *data, int ReplyFlag);//文本播放UTF-8,name发音人默认name==1;volume合成音量默认合成音量100;speed语速默认speed==50;argv文本内容。


/*********
 * 
 *  TTS初始化
 * 
 * *********/
T_JZsdkReturnCode TTS_Init()
{
    //讯飞初始化
    login_tts();

#if FIRMWARE_ORIGIN == OVERSEAS_VERSION 
	//海外版初始化
	espeak_init();
#endif

}



/*********
 * 
 *  TTS设置音色
 * 
 * *********/
T_JZsdkReturnCode TTS_SetTone(int tone)
{
	switch (tone)
	{
		case 0x01:
			printf("tts设置为 中文女声\n");
		break;
		
		case 0x02:
			printf("tts设置为 中文男声\n");
		break;
		
		case 0x11:
			printf("tts设置为 英文女声\n");
		break;

		case 0x12:
			printf("tts设置为 英文男声\n");
		break;

#if FIRMWARE_ORIGIN ==  DOMESTIC_VERSION   //国内版才有方言

		case 0x31:
        	printf("tts设置为 东北话\n");
        break;
            
		case 0x32:
			printf("tts设置为 四川话\n");
			break;
				
		case 0x33:
			printf("tts设置为 河南话\n");
			break;
				
		case 0x34:
			printf("tts设置为 湖南话\n");
			break;
				
		case 0x35:
			printf("tts设置为 陕西话\n");
			break;
				
		case 0x36:
			printf("tts设置为 广东话\n");
			break;

#elif FIRMWARE_ORIGIN == OVERSEAS_VERSION   //海外版才有其他国家的语音

		case 0x41://俄 russian ru
			printf("tts设置为 俄语\n");
		break;
		
		case 0x42://法 french fr-fr      
			printf("tts设置为 法语\n");
		break;
		
		case 0x43://德 german de        
			printf("tts设置为 德语\n");
		break;
		
		case 0x44://韩 ko      
			printf("tts设置为 韩语\n");
		break;
		
		case 0x45://意大利 italian it   
			printf("tts设置为 意大利语\n");
		break;
		
		case 0x46://波兰 polish pl       
			printf("tts设置为 波兰语\n");
		break;

		case 0x47://西班牙 spanish es
			printf("tts设置为 西班牙语\n");
		break;
		
		case 0x48://葡萄牙 portugal pt-pt    
			printf("葡萄牙语\n");
		break;

#endif

		default:
			printf("无效的tts设置\n");
			return JZ_ERRORCODE_TTS_INVALID_TONE;
        break;
	}	
		
	g_Megaphone_TTS_tone = tone;
	return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*********
 * 
 *  TTS设置语速
 * 
 * *********/
T_JZsdkReturnCode TTS_SetSpeed(int Speed)
{
	if ( (Speed < 0) || (Speed > 100) )
	{
		printf("TTS语速超出范围\n");
		return JZ_ERRORCODE_TTS_INVALID_SPEED;
	}
	
	printf("设置tts语速倍率为%d \n",Speed);
	g_Megaphone_TTS_speed = Speed;
	return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;

}

T_JZsdkReturnCode TTS_SetAppendTone(int tone)
{
	if (tone == 0x00 || tone == 0x01 || tone == 0x02)
	{
		tts_add = tone;

		return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS; 
	}

	else
	{
		tts_add = 0x00;

		return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE; 
	}	
}

/*********
 * 
 *  TTS播放
 * 
 * *********/
int TTS_Play(int len, char *data,  int ReplyFlag)
{
	return TTS(g_Megaphone_TTS_tone, g_Megaphone_TTS_volue, g_Megaphone_TTS_speed, len, data, ReplyFlag);
}

static int TTS(int name,int volume,int speed,int len,char *data, int ReplyFlag)//文本播放UTF-8,name发音人默认name==1;volume合成音量默认合成音量100;speed语速默认speed==50;argv文本内容。
{
	if(name < 0x40) //中英文或者方言
	{
		TTS_cnTTS(name, volume, speed, len, data, ReplyFlag);
	}
	else if(name>0x40&&name<0x50)//外语
	{
#if FIRMWARE_ORIGIN == OVERSEAS_VERSION 
		espeak_tts(name,speed,data,len);
#endif
	}
}

/*********
 * 
 *  获取音色
 * 
 * 
**********/
int TTS_Get_tone()
{
	return g_Megaphone_TTS_tone;
}
/*********
 * 
 *  获取语速
 * 
 * 
**********/
int TTS_Get_speed()
{
	return g_Megaphone_TTS_speed;
}

/*********
 * 
 *  20、获取追加音色
 * 
 * 
**********/
int TTS_Get_TTS_AppendTone()
{

    return tts_add;

}