基于STM32物联网开发板(2)--语音播报SYN6288

发布者:theta18最新更新时间:2024-05-10 来源: elecfans关键字:STM32  语音播报 手机看文章 扫描二维码
随时随地手机看文章

1.SYN6288简介

SYN6288-A语音合成模块是一款性价比更高,效果更自然的一款中高端语音合技术 。 SYN6288-A通过异步串口接收待合成的文本,实现文本到声音(TTS)的转换。

国内首款语音合成评估板SYN6288-A的推出继承了OSYNO6188-A模块的优秀特点:最小体积,硬件接口简单,极高的性价比;除此之外,SYN6288-A文本识别更智能,语音合成更自然,语音合成效果和智能识别效果大幅度提高,是一款面向中高端应用领域的语音合技术。


1.1产品应用范围

◆ 车载信息终端语音播报,车载调度,车载导航
◆ 公交报站器,考勤机
◆ 排队叫号机,收银收费机
◆ 自动售货机,信息机,POS机
◆ 智能玩具,智能手表
◆ 电动自行车
◆ 语音电子书,彩屏故事书,语音电子词典,语音电子导游
◆ 短消息播放,新闻播放
◆ 电子地图

pYYBAGRbfq-ARIgfAAEWsthF-0k302.pngpYYBAGRbfr6AElt_AAPeKQ0Vdyc698.png

  • 硬件接口:

引脚

说明

TXD发送数据脚PA3
RXD接收数据脚PA2
BUSY忙信号检测脚PC5,高电平表示忙


1.2 通讯协议

SYN6288模块采用串口通讯方式,数据格式如下:

默认波特率9600,1位起始位、8位数据位、1位停止位、无校验位、无硬件流控制。

1.2.1 命令帧格式

芯片支持以下命令帧格式: “帧头FD +数据区长度+数据区” 格式。(最大206个字节) 上位机发送给SYN6288-A模块的所有命令和数据都需要用“帧”的方式进行封装后传输。

poYBAGRbf8uAeca5AABUKrwRK3w378.png

  • 数据长度:命令字+命令参数+数据内容+校验值;

  • 校验值:从帧头开始的全部字节数;

  • 同一帧数据中,每个字节直接发送间隔不能超过8ms,数据帧直接发送间隔必须超过8ms;

  • 默认初始波特率为9600bps;若需改变波特率,在发送完设置波特率命令帧后需间隔16毫秒再发送其它命令帧。

  • 9600bps、19200bps两种波特率通讯传输都非常稳定(不管芯片在合成播音还是空闲)。

  • 当模块正在合成文本的时候,如果又接收到一帧有效的合成命令帧,芯片会立即停止当前正在合成的文本,转而合成新收到的文本。

  • 待发送文本长度必须小于等于200个字节。实际发送的长度大于200字节,芯片会报接收失败。

1.2.2 控制命令说明

pYYBAGRbgBWAE8OGAAEOSX1J37I848.png

1.2.3 数据帧示例

(1)无背景音示例

pYYBAGRbgECAV6CGAABnC4pOKW8314.png

(2)带背景音示例

pYYBAGRbgF2ADYK9AADTQ3ia97g202.png

(3)音量设置

poYBAGRbgHaAVmTPAAB8v1eCg2k631.png

(4)波特率设置

pYYBAGRbgJeAcO6hAABUIzybDZM507.png

(5)停止合成命令

pYYBAGRbgK6AZYslAABMex_jUOo923.png

(5)暂停合成命令

pYYBAGRbgMaAYyiGAABNmTdmqyU728.png

(6)恢复合成命令

poYBAGRbgOaACxGYAABPjfiHCho487.png

1.2.4 文本控制标记

poYBAGRbgRCATiBBAADyj9DCE3E025.png

  • 说明:
    ①所有的控制标识均为半角字符。
    ②控制标识需要按照语音合成命令的格式发送,特殊控制标记作为文本进行合成, 即合成命令是“帧头 + 数据区长度 + 合成命令字 + 文本编码格式 + 特殊控制标记文本” 的格式。
    ③控制标识为全局控制标识,也就是只要用了一次,在不对芯片复位或者断电的条件下,其后发送给芯片的所有文本都会处于它的控制之下,除非用相应的 [d] 恢复默认设置。
    ④当芯片掉电或是复位后,芯片将恢复到所有的默认值,原来的设置过的标识失去了作用,需要重新设置。
    ⑤不符合以上可识别的“控制标识”的或者格式不对的一律按普通的字符和数字处理。

1.2.5 提示音效

芯片中提供了25段的声音提示音,可以依据使用场合选用作为信息提示音。下面列表中是目前芯片的内置提示音的名称及声音类型:

poYBAGRbgVyAVfrrAAHLyHudXz0022.png

1.2.6 和弦提示音列表

芯片中提供了23段和弦音乐作为提示音,可以广泛的使用在公共信息播报的场合,下面列表中是目前芯片的内置提示音的名称和播放长度。

poYBAGRbgY2AWR1rAABwHt_og9s754.png

和弦铃声既可作和弦铃声,也是背景音乐的素材

注意:提示音在使用上没有特殊性,与合成普通文本的合成命令相同。但是,需要注意的是:提示音名称前面或后面紧接着是英文字母时,需要使用标点符号、空格、回车等与其他字母隔开,芯片才能够自动识别。 例如:发送文本“sounda,hello!”,sounda 就可以合成对应的短信提示音,但是如果发送的文 本”soundahello!”,sounda就不能合成提示音,而是直接朗读成字母“S-O-U-N-D-A”。


1.3 数据帧组合示例

/*

函数功能:SYN6288语音播报(单条语音不超过206字节)

形参:str --播放语音

      cmd --命令(0~15)0为无背景,1~15为背景音

      vol --音量(0~16)0为静音,16为最大音量

公司:北京万邦易嵌

作者:IT_阿水

*/

void SYN6288_SendData(uint8_t *str,int cmd,int vol)

{

  uint8_t dat_xor=0;

  uint8_t buffer[206];

  uint16_t i=0;

  char temp[10];

  int j=0;

  int str_len=0;

  SYN6288_GetStat();

  Delay_Ms(10);


  /*音量设置*/

  str_len=snprintf(temp,sizeof(temp),'[v%d]',vol&0x1f);

  uint16_t len=strlen((char *)str);//发送是内容长度

  str_len+=len;

  str_len+=3;//加上命令字,命令参数和校验值


  buffer[i]=0xFD;//帧头

  dat_xor^=buffer[i++];

  /*数据长度,两个字节,,高位在前*/

  buffer[i]=(str_len>>8)&0xff;

  dat_xor^=buffer[i++];

  buffer[i]=str_len&0xff; 

  dat_xor^=buffer[i++];

  

  buffer[i]=0x01;//语音合成播放命令

  dat_xor^=buffer[i++]; 

  

  buffer[i]=((cmd&0xf)<<3)|0;//命令参数

  dat_xor^=buffer[i++];

  

  j=0;

  while(temp[j]!='�')

  {

    buffer[i++]=temp[j];

    dat_xor^=temp[j++];

  }

  for(j=0;j;j++)>


关键字:STM32  语音播报 引用地址:基于STM32物联网开发板(2)--语音播报SYN6288

上一篇:STM32+DHT11监测环境的温湿度
下一篇:STM32入门学习笔记之USB读卡器实验2

推荐阅读最新更新时间:2024-11-13 00:59

STM32 定时器的4通道计数器应用
通用定时器确实比较强悍,功能极多我也比较晕 此为在不牵扯PWM 与 DMA下像C51那样计数点灯。 当然你要配置一些IO口作为点灯用这里就不详细说了。 就如 #defineLED2_ON GPIO_ResetBits(GPIOD,GPIO_Pin_7) #define LED2_OFF GPIO_SetBits(GPIOD,GPIO_Pin_7) 这样的。 然后启用通用定时器2设置它的中断等3.0的库; //Timer2中断*// void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroup
[单片机]
STM32的IO外部中断EXTI的使用
一、前言 在之前针对 STM32 的G PI O相关API函数及配置使用进行了详细的介绍,GPIO作为输入引脚时,调用相关读 信号 引脚函数接口就可以在程序的循环中,轮询的对输入信号进行读取 检测 操作,除了轮询的方式访问输入引脚,还可以通过另外一种叫做外部中断的方式来对引脚的输入信号进行检测,本篇首先介绍下EX TI 的结构,接着介绍外部中断的相关概念,对STM32的IO外部中断EXTI有个初步的了解,在此基础上重点围绕IO外部中断EXTI的使用展开分析。 图1 外部中断设计 二、EXTI结构 EXTI(Ex te rnal interrupt/event controller)—外部中断/事件 控制器 ,管理了控制器的
[单片机]
<font color='red'>STM32</font>的IO外部中断EXTI的使用
STM32单片机闪存存储器里存储的是哪些内容
先看rom也就是flash(0x0800 0000-0x0807 ffff)51 2k ,这个空间就是用户存放程序的地方,用户以后自己写boot loader的时候,也是存放在这个空间里的,system memory这个空间是 2k 大小,是st公司在生产完片子的时候,就固化好的isp代码,用户之所以能用上位机软件烧程序就是靠这部分的代码,用户更改不了这个区域,想了解这个区域就看AN2606文档,option bytes这个区域是16个字节,是控制flash区域的寄存器,想了解这些寄存器看STM32F10xxx闪存编程参考手册,SRAM这个区域的其实地址始终是0x2000 0000,终止地址就得根据你的SRAM的大小来进行计算
[单片机]
STM32的简单的SD卡读写
SD卡一般支持两种读写模式,SPI和SDIO模式,SD卡的引脚排序如下图所示。 SPI模式下有几个重要的操作命令,分别是: SD卡R1回应的格式如下 SPI模式下的典型初始化过程如下: 1、初始化硬件配置,SPI配置,IO配置等。 2、上电延时。( 74CLK) 3、复位卡。(CMD0) 4、激活卡,内部初始化并获取卡的类型。 5、查询OCR,获取供电情况。 6、是否使用CRC(CMD59)。 7、设置读写块数据长度(CMD16)。 8、读取CSD,获取存储卡的其他信息(CMD9) 9、发送8CLK后,禁止片选。 SPI模式下的典型读取数据的过程如下,这里采用CMD17来实现。 1、发送CMD17。 2、接收
[单片机]
<font color='red'>STM32</font>的简单的SD卡读写
iar &stm32调试过程中遇到的问题记录
10/16串口可以实现发送但是死或接受不了数据,前段时间还可以,但是不知道动了,不能入中断,后来加了增加几句关于标志位清除的函数后,可以进行接收数据了 1、串口都不能进入中断函数,造成HardFault_Hander,网上知道是由于不能进入中断造成的,需要添加中断向量,中断向量函数入口在启动文件startup_stm32f10x_hd_vl.s中,于是爸库里面的启动文件添加进来,但是报了天量的错误。一查,得知原来库里面的启动文件与IAR不兼容,于是在iar里面搜索“startup_stm32f1”的字样,找到文件里面D:Program Files (x86)IAR SystemsEmbedded Workbench 8.1ar
[单片机]
iar &<font color='red'>stm32</font>调试过程中遇到的问题记录
基于STM32的植物生长动态补光控制系统设计
基于荧光检测的动态补光系统是利用MINI-PAM监测番茄实际光合效率和LED组合光源补光相结合指导温室番茄种植,定量的分析荧光参数并解决了科学适量补光问题。该系统由上位机总控制中心,自主开发设计的STM32单片机的温室信息监控系统,提供稳定电流的可编程恒流源,大功率红、蓝光LED组合光源和MINI-PAM便携调制式荧光检测仪组成。STM32单片机温室环境因子监控系统和便携式调制荧光检测仪分别测量记录环境信息和荧光参数信息,从这些信息分析计算出LED组合光源的亮度和最佳红蓝光比例,最后上位机控制可编程恒流源驱动LED组合光源,最后达到动态补光的目的。 0引言 光合作用是是生物界所有物质代谢和能量的物质基础,植物在光合作用的原
[单片机]
基于<font color='red'>STM32</font>的植物生长动态补光控制系统设计
STM32 常用GPIO操作函数记录
STM32读具体GPIOx的某一位是1还是0 1 /** 2 * @brief Reads the specified input port pin. 3 * @param GPIOx: where x can be (A..G) to select the GPIO peripheral. 4 * @param GPIO_Pin: specifies the port bit to read. 5 * This parameter can be GPIO_Pin_x where x can be (0..15). 6 * @retval The input port pin value. 7 *
[单片机]
STM32串口操作相关事项
放了一段时间,对stm32似乎有点陌生,总结一下! (基于3.0固件库,芯片stm32f103rbt6) 1、配置串口的管脚和时钟 由于串口1、2是在GPIOA上: 所以要是能串口GPIOA、AFIO和1或者2的串口时钟,代码如下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1 , ENABLE); 2、对串口的具体物理管脚进行相应的配置: /* A9 USART1_Tx */ GPIO_InitStructure.GPIO_Pin = GPIO_Pi
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved