TTS即text to sound, 输入字符它可以帮你转化为语音输出。

UNV6288可以实现中文、英文、数字的语音合成。用户也可以定义语音大小速度等参数。

这个模块的控制方式很简单,只要通过 TTL 串口向模块发送GBK编码,串口发送什么就播放什么。

另外可以通过BUSY脚了解模块是正在合成播报还是处于空闲状态。

硬件接口说明

TTS代码实现JAVA tts模块_模块测试

TTS代码实现JAVA tts模块_单片机_02

如果只是播报语音不需要了解模块工作状态则模块的TX脚可不接。

SPK+/SPK-接喇叭,可接喇叭类型为4欧3W,8欧1.5W,16欧1W。若要驱动更高功率喇叭需外接有源功放。

硬件接口连接

用户MCU的串口TX/RX脚分别与本模块的RX/TX脚连接(即收发交叉连接)。

如下图:

TTS代码实现JAVA tts模块_模块测试_03

串口软件设置

与模块通信的SSCOM软件设置如下,注意波特率为9600

TTS代码实现JAVA tts模块_驱动开发_04

串口通信格式:

TTS代码实现JAVA tts模块_TTS代码实现JAVA_05

模块通信设置

基本控制:

printf(“大家好”);

控制模块播报“大家好”这个内容。

  模块TX发送提示信息:

  模块在不同情形下通过TX脚向用户MCU发送不同的回传信息:

TTS代码实现JAVA tts模块_驱动开发_06

控制示例代码:

大家可以加入QQ群一起学习新知识。删除& —等特殊字符18&751-82&17。

SYN_FrameInfo(0, "[v9][m0][t5]欢迎使用UNV6288 TTS语音模块");

//Music:选择背景音乐。0:无背景音乐,1~15:选择背景音乐
void SYN_FrameInfo(u8 Music, u8 *HZdata)
{
  /****************需要发送的文本**********************************/
  unsigned  char  Frame_Info[50];
  unsigned  char  HZ_Length;
  unsigned  char  ecc  = 0;  			//定义校验字节
  unsigned  int i = 0;
  HZ_Length = strlen((char*)HZdata); 			//需要发送文本的长度

  /*****************帧固定配置信息**************************************/
  Frame_Info[0] = 0xFD ; 			//构造帧头FD
  Frame_Info[1] = 0x00 ; 			//构造数据区长度的高字节
  Frame_Info[2] = HZ_Length + 3; 		//构造数据区长度的低字节
  Frame_Info[3] = 0x01 ; 			//构造命令字:合成播放命令
  Frame_Info[4] = 0x01 | Music << 4 ; //构造命令参数:背景音乐设定

  /*******************校验码计算***************************************/
  for(i = 0; i < 5; i++)   				//依次发送构造好的5个帧头字节
  {
    ecc = ecc ^ (Frame_Info[i]);		//对发送的字节进行异或校验
  }

  for(i = 0; i < HZ_Length; i++)   		//依次发送待合成的文本数据
  {
    ecc = ecc ^ (HZdata[i]); 				//对发送的字节进行异或校验
  }
  /*******************发送帧信息***************************************/
  memcpy(&Frame_Info[5], HZdata, HZ_Length);
  Frame_Info[5 + HZ_Length] = ecc;
  USART3_SendString(Frame_Info, 5 + HZ_Length + 1);
}

其中 [v9] 的作用是让播报声音的音量大小为第9个等级,[m0] 的作用是将背景音乐调成静音,[t5] 的作用是将播报的声音速度提高到最高,具体参考下图。而SYN_FrameInfo( )函数第一个参数是背景音乐选择(0是无背景音乐,1~15代表发声时不同的背景音乐)。

TTS代码实现JAVA tts模块_TTS代码实现JAVA_07