TTS即text to sound, 输入字符它可以帮你转化为语音输出。
UNV6288可以实现中文、英文、数字的语音合成。用户也可以定义语音大小速度等参数。
这个模块的控制方式很简单,只要通过 TTL 串口向模块发送GBK编码,串口发送什么就播放什么。
另外可以通过BUSY脚了解模块是正在合成播报还是处于空闲状态。
硬件接口说明
如果只是播报语音不需要了解模块工作状态则模块的TX脚可不接。
SPK+/SPK-接喇叭,可接喇叭类型为4欧3W,8欧1.5W,16欧1W。若要驱动更高功率喇叭需外接有源功放。
硬件接口连接
用户MCU的串口TX/RX脚分别与本模块的RX/TX脚连接(即收发交叉连接)。
如下图:
串口软件设置
与模块通信的SSCOM软件设置如下,注意波特率为9600
串口通信格式:
模块通信设置
基本控制:
printf(“大家好”);
控制模块播报“大家好”这个内容。
模块TX发送提示信息:
模块在不同情形下通过TX脚向用户MCU发送不同的回传信息:
控制示例代码:
大家可以加入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代表发声时不同的背景音乐)。