单片机学习小组
直播中

吕钢格

7年用户 958经验值
私信 关注

SYN6288中文语音合成芯片的功能特点有哪些呢

SYN6288中文语音合成芯片是什么?
SYN6288中文语音合成芯片功能特点有哪些呢?

回帖(1)

张颖

2022-1-19 11:40:26
一、简介

SYN6288中文语音合成芯片是背景宇音天下科技有限公司与2010年初推出的一款性价比更高,效果更自然的一款中高端语音合成芯片。SYN6288通过异步串口(UART)通信方式,接收待合成的文本数据实现文本到语音(或TTS语音)的转换。
二、功能特点




  • 支持GB2312、GBK、BIG5和UNICODE内码格式的文本
  • 每次合成的文本量最多可达200字节
  • 支持多种控制命令,包括:合成,停止,暂停合成,继续合成,改变波特率等
  • 支持休眠功能,在休眠状态下可降低功耗,支持多种方式查询芯片状态。
  • 支持串口数据通讯接口,支持三种通信波特率:9600,19200,38400
  • 支持16级音量调整,播放文本的前景音量和播放背景音乐的背景音量可分开控制。
  • 可通过发送控制标志调节词语语速,支持6级词语语速调整。
  • 芯片内固化有多首和弦音乐、提示音效和针对某行业领域的常见语音提示音。
  • 内部继承19首声音提示音,23首和弦提示音,15首背景音乐
  • 内置10bit推挽式、可独立供电的功放,进行数模DAC输出、

三、命令帧

1.命令帧格式

帧头FD+ 数据区长度 + 数据区

2.控制命令


/* 芯片设置命令  最后一个字节是前面所有数的异或,可以用计算器计算*/
u8 SYN_StopCom[] = {0xFD, 0X00, 0X02, 0X02, 0XFD};        //停止合成
u8 SYN_SuspendCom[] = {0XFD, 0X00, 0X02, 0X03, 0XFC}; //暂停合成
u8 SYN_RecoverCom[] = {0XFD, 0X00, 0X02, 0X04, 0XFB};  //恢复合成
/* 返回0x4E表名芯片任在合成播音中,返回0x4F表名芯片处于空闲状态*/
u8 SYN_ChackCom[] = {0XFD, 0X00, 0X02, 0X21, 0XDE};    //状态查询
u8 SYN_PowerDownCom[] = {0XFD, 0X00, 0X02, 0X88, 0X77};  //进入POWER DOWN 状态命令
/* 修改波特率,有3中模式 命令参数的低3位 0x00  0x01 0x02 分别对应9600 ,19200 38400*/
u8 SYN_SetBond[] = {0xFD,0x00,0x03,0x31,0x00,0xCF}; // 修改波特率 9600
//u8 SYN_SetBond[] = {0xFD,0x00,0x03,0x31,0x01,0xCE}; // 修改波特率 19200
//u8 SYN_SetBond[] = {0xFD,0x00,0x03,0x31,0x02,0xCD}; // 修改波特率  38400


四、通信函数

1.串口


/********************************************
@功能:串口3发送缓冲区的数据
@说明:
@参数: *data 要发送的数据的缓冲区
@返回值: 无
*********************************************/
void u3_TxData(uchar *data)
{
        int        i;       
        while((USART3->SR&0X40)==0);//可以发送数据
        for(i = 1;i <= (data[0]*256+data[1]);i++){                       
                USART3->DR = data[i+1];  //把数据送到串口
                while((USART3->SR&0X40)==0);        //等待发送完成
        }
}


2.SYN6288

注意:
下面的SY6288SEND就是u3_TxData

#define  SY6288SEND u3_TxDataLength   // 串口3发送


/*
发送文本
Music:选择背景音乐。0:无背景音乐,1~15:选择背景音乐
*HZdata:要发送的文本,一个字符串
*/
void SYN_FrameInfo(u8 Music, u8 *HZdata)
{
  u8  Frame_Info[50];
  u8  HZ_Length;  // 文本的长度
  u8  ecc  = 0;                          //定义校验字节
  u16 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 ;                         //构造命令字:合成播放命令
  /* 字节高5位表示背景音乐 ,低3位表示编码格式 0 是GB2312编码*/
  Frame_Info[4] = 0x01 | Music << 4 ; //构造命令参数:背景音乐设定


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


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


/* 发送芯片设置命令 配置,停止合成、暂停合成等设置
Info_data:芯片的命令
*/
void YS_SYN_Set(u8 *Info_data)
{
  u8 Com_Len;
  Com_Len = strlen((char*)Info_data);
  SY6288SEND(Info_data,Com_Len);   // 串口发送
}


五、文本控制标记列表


/* 文本控制标记列表
设置前景文本播放音量(含提示音效) 全局 [v?] ?为音量值 取值0-16 0 为静音  默认[v10]
设置背景音乐音量 全局 [m?] ? 为音量值,取值0-16  0为静音  默认[m4]
设置词语语速  全局 [t?]  ? 为词语语速值,取值0-5  默认[t4]
设置数字处理策略  全局 [n?] ? 为0,自动判断 为1 数字作号码处理 为2 数字作数值处理  默认[n0]
*/
  SYN_FrameInfo(0, “[v16][m1][t5]你好[n2]123444444”);
表示设置文本背景音乐无音量16背景音量1播放你好,数字按数值处理
六、声音提示音列表


/* 声音提示音列表  25段声音提示音
sounda  出错声
soundb  刷卡成功
soundc  刷卡成功
soundd  刷卡成功
sounde  刷卡成功
soundf   激光声
soundg  门铃声
soundh  门铃声
soundi   电话铃声
soundj   电话铃声
soundk  广播提示音
soundl   提示音
soundm  提示音
soundn   警报
soundo   警报
soundp   警报
soundq  紧急警报
soundr   紧急警报
sounds  布谷声
soundt   提示音
soundu  提示音
soundv  提示音
soundw 提示音
soundx  提示音
soundy  提示音
*/
  SYN_FrameInfo(0,"[v16][m1][t5]sounda");
播放提示音
七、和弦提示音列表


/* 和弦提示音列表  8首
msga   1s
msgb   1s
msgc   1s
msgd   1s
msge   2s
msgf    3s
msgg   4s
msgh   5s
*/


/* 和弦铃声   15首
ringa    60s
ringb    70s
ringc    27s
ringd    65a
ringe    60s
ringf     57s
ringg    60s
ringh    53s
ringi     35s
ringj     25s
ringk    18s
ringl     38s
ringm   60s
ringn    23s
ringo    5s
*/
  SYN_FrameInfo(0,"[v16][m1][t5]ringa");
播放和弦音乐
举报

更多回帖

×
20
完善资料,
赚取积分