基于STM32的SYN6288语音播报模块驱动实验(代码开源)_syn6288语音模块

一、SYN6288概述

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

宇音天下于 2002 年最早研制出国内首款语音合成芯片 OSYNO6188 。公司最新推出的SYN6288语音合成芯片,继承了 OSYNO6188 语音芯片的优秀特点:最小 SSOP28L 贴片封装、硬件接口简单、低功耗、音色清亮圆润、极高的性/价比;除此之外, SYN6288 在识别文本/数字/字符串更智能、更准确,语音合成自然度更好、可懂度更高。SYN6288 语音合成效果和智能化程度均得到大幅度提高,是一款真正面向中高端行业应用领域的中文语音合成芯片。

SYN6288 语音合成芯片的诞生,将推动TTS语音合成技术的行业应用走向更深入、更广泛!

二、SYN6288核心叙述

1、SYN6288默认波特率为:9600,输出字符串文本到模块,模块自动输出语音; ;

2、输出的字符文本可以加入前缀(控制参数,实现音量语速等控制),以实现更自然的朗读。

3、芯片支持任意中文文本的合成,可以采用GB2312 、GBK、BIG5和Unicode四种编码方式。芯片支持英文字母的合成,遇到英文单词时按字母方式发音。每次合成的文本量可达200个字节

4、芯片具有文本智能分析处理功能,对常见的数值、电话号码、时间日期、度量衡符号等格式的文本,芯片能够根据内置的文本匹配规则进行正确的识别和处理。例如:“2008-12-21”读作“二零零八年十二月二十一日”,“10:36:28”读作“十点三十六分二十八秒”,“28℃”读作“二十八摄氏度”等等。

三、系统构成

**最小系统包括:**控制器模块、SYN6288语音合成芯片、功放模块和喇叭。

主控制器(MCU)和 SYN6288 语音合成芯片之间通过 UART 接口连接,控制器可通过通讯接口向 SYN6288 语音合成芯片发送控制命令和文本,SYN6288 语音合成芯片把接收到的文本合成为语音信号输出,输出的信号经功率放大器进行放大后连接到喇叭进行播放。

SYN6288 提供一组全双工的异步串行通讯(UART)接口,实现与微处理器或 PC 的数据传输。SYN 6288 利用 TxDRxD 以及 GND 实现串口通信。其中 GND 作为地信号。SYN6288 芯片支持 UART 接口通讯方式,通过 UART 接口接收上位机发送的命令和数据,允许发送数据的最大长度为 206 字节。

四、CubeMX配置

1、RCC配置外部高速晶振(精度更高)——HSE;

2、SYS配置:Debug设置成Serial Wire否则可能导致芯片自锁);

3、USART2配置:异步通讯UART驱动SYN6288,波特率:9600;

4、时钟树配置

5、工程配置

五、代码与解析

5.1 SYN6288代码

syn6288.h:

#ifndef __SYN6288_H
#define __SYN6288_H
 
#include "stm32f1xx_hal.h"
void SYN_FrameInfo(uint8_t Music, uint8_t *HZdata);
void YS_SYN_Set(uint8_t *Info_data);
 
#endif

syn6288.c:

#include "syn6288.h"
#include "usart.h"
#include "string.h"
 
//Music:选择背景音乐。0:无背景音乐,1~15:选择背景音乐
void SYN_FrameInfo(uint8_t Music, uint8_t *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;
  HAL_UART_Transmit(&huart2,Frame_Info,5 + HZ_Length + 1,10000);
}
 
 
/***********************************************************
* 名    称: YS_SYN_Set(u8 *Info_data)
* 功    能: 主函数	程序入口
* 入口参数: *Info_data:固定的配置信息变量
* 出口参数:
* 说    明:本函数用于配置,停止合成、暂停合成等设置 ,默认波特率9600bps。
* 调用方法:通过调用已经定义的相关数组进行配置。
**********************************************************/
void YS_SYN_Set(uint8_t *Info_data)
{
  uint8_t Com_Len;
  Com_Len = strlen((char*)Info_data);
  HAL_UART_Transmit(&huart2,Info_data,Com_Len,10000);
}
 

通过 SYN_FrameInfo 函数可以实现 SYN6288 的语音播报,SYN6288 的集成化程度很高,可以自动解析发送过来的字符汉字等数据,进一步通过喇叭进行语音播报(开发难度极低!)

5.2 main代码

man 函数中通过 **SYN_FrameInf(uint8_t Music, uint8_t *HZdata)**进行语音播报,其中,Music为选择背景音乐,0:无背景音乐,1~15:选择背景音乐。HZdata则为需要发送的数据,其格式为 [vx][mx][tx]“xxxxxxx” 。

**[vx]:前景文本播放音量,**x音量值,取值:0~16(其中0为静音)

**[mx]:**背景音乐音量,x为音量值,取值:0~16(其中0为静音)

**[tx]:**词语语速,x为词语语速值,取值:0~5(5为最高语速)

main.c:

#include "main.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "syn6288.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/516431a36fb62b9118634a5c9e76ba46.png)

![img](https://img-blog.csdnimg.cn/img_convert/e8aeec3869b79be20e630e01eaac6d4d.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/82654b110a8809a47d1fa35405a6b15b.png)

 **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

![img](https://img-blog.csdnimg.cn/img_convert/bf6ad47946574012d213e6d8d6af4939.png)

![img](https://img-blog.csdnimg.cn/img_convert/ea145fa983ca29cd33bcf80aef2f0c49.png)

 

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**

<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />



# 最后

**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**

**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**


**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**

<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />



# 最后

**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**

**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**

**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**
  • 51
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值