1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、简介
SYN6288中文语音合成芯片是背景宇音天下科技有限公司与2010年初推出的一款性价比更高,效果更自然的一款中高端语音合成芯片。SYN6288通过异步串口(UART)通信方式,接收待合成的文本数据实现文本到语音(或TTS语音)的转换。 二、功能特点
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”);六、声音提示音列表 /* 声音提示音列表 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"); |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9055 浏览 16 评论
4086 浏览 18 评论
1175浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 00:45 , Processed in 1.137133 second(s), Total 50, Slave 41 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号