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

这篇具有很好参考价值的文章主要介绍了基于STM32的SYN6288语音播报模块驱动实验(代码开源)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:本文为手把手教学 SYN6288 语音播报模块的驱动实验,本教程的 MCU 采用STM32F103ZET6。通过 CubeMX 软件配置 UART 串口协议驱 SYN6288 模块进行规定的语音播报。考虑到 SYN6288 模块的集成化与智能化很高,所以该模块的使用是极其便利的。(文末代码开源!

硬件设备:STM32F103ZET6;SYN6288;

硬件实物图:

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

效果图:

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

引脚连接:

SYN6288引脚:

RX --> PA2

TX --> PA3

VCC --> 5V

GND --> GND

一、SYN6288概述

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

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

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

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

二、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连接单片机,STM32开发,STM32,SYN6288,嵌入式

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

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

四、CubeMX配置

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

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

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

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

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

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

4、时钟树配置

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

5、工程配置

syn6288连接单片机,STM32开发,STM32,SYN6288,嵌入式

五、代码与解析

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 ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/**************оƬÉèÖÃÃüÁî*********************/
uint8_t SYN_StopCom[] = {0xFD, 0X00, 0X02, 0X02, 0XFD}; //停止合成
uint8_t SYN_SuspendCom[] = {0XFD, 0X00, 0X02, 0X03, 0XFC}; //暂停合成
uint8_t SYN_RecoverCom[] = {0XFD, 0X00, 0X02, 0X04, 0XFB}; //恢复合成
uint8_t SYN_ChackCom[] = {0XFD, 0X00, 0X02, 0X21, 0XDE}; //状态查询
uint8_t SYN_PowerDownCom[] = {0XFD, 0X00, 0X02, 0X88, 0X77}; //进入POWER DOWN状态命令
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  SYN_FrameInfo(2, "[v7][m1][t5]混分巨兽龙某某666");
	  HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

六、代码开源

代码地址:基于STM32的SYN6288语音播报模块驱动代码资源-CSDN文库

如果积分不够的朋友,点波关注评论区留下邮箱,作者无偿提供源码和后续问题解答。求求啦关注一波吧 !!!文章来源地址https://www.toymoban.com/news/detail-546757.html

到了这里,关于基于STM32的SYN6288语音播报模块驱动实验(代码开源)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32——SYN6288语音合成模块

           语音模块是我们学习工程中常见的模块之一,今天给大家分享SYN6288模块的简单使用,软件部分我会提供stm32f103zet6/stm32f407zgt6的完整代码供大家参考。深入的学习,还需要仔细阅读数据手册等资料。希望这篇文章能帮到大家!          SYN6288语音合成模块是一款基于

    2024年01月19日
    浏览(56)
  • STM32 使用SYN6288语音模块

    本篇文章带大家学习一下SYN6288语音模块,这个模块可以用于车载设备,语音电子书等众多产品当中,而且这个模块支持多种编码格式,GB2312,GBK等字符编码格式。 SYN6288语音合成模块是一种语音合成设备,其可实现文字转语音功能,将输入的文字信息通过内部的处理和合成,

    2024年02月08日
    浏览(40)
  • STM32驱动BY9301语音播报模块

    简介:STM32F103C8T6驱动BY9301语音播报模块源码介绍。 开发平台:KEIL ARM MCU型号:STM32F103C8T6 传感器型号:BY9301 特别提示:驱动内可能使用了某些其他组件,比如delay等,在文末外设模板下载地址内有。 1积分源码下载地址在文末!!! 接口图: 使用举例:  驱动源码: BY9301

    2024年02月09日
    浏览(48)
  • STM32使用ASR01语音播报模块

    先下载天问block软件 点击这里下载天问block  选上设备:  添加扩展:   自己再根据鹿小班模块进行操作进行相关操作,先接上usb数据线 记得先生成模型再去编译下载    发送给单片机通信时只需要vcc gnd 还有tx接上单片机rx,如果想用stm32控制语音模块,可以接线,让asr01读

    2024年02月16日
    浏览(100)
  • STM32控制JQ8400语音播报模块

    时间记录:2024/2/7 标示 说明 ONE LINE 一线操作引脚 BUSY 忙信号引脚,正在播放语音时输出高电平 RX 串口两线操作接收引脚 TX 串口两线操作发送引脚 GND 电源地引脚 DC-5V 电源引脚,3.3-5V DAC-R DAC输出右声道引脚 DAC-L DAC输出左声道引脚 SPK- 喇叭-引脚 SPK+ 喇叭+引脚 (1)时序图 (

    2024年04月11日
    浏览(43)
  • STM32驱动JQ8900语音模块

    上次写了esp32驱动JQ8900模块,我做设计一般会把外设先在esp32上实现一般,再移植到比较复杂的stm32上去。直接上正常运行的干货代码。 STM32F10x系列任意开发板(这里我使用的是f103zet6正点原子开发板) JQ8900播报模块一个,喇叭一个,12V/5V电源适配器一个,杜邦线若干 代码如

    2024年02月13日
    浏览(41)
  • 基于STM32的NRF24L01 2.4G通讯模块的驱动实验(HAL库)

    前言: 本文为手把手教学 NRF24L01 2.4G 通讯模块的驱动实验,本教程的  MCU  采用 STM32F103ZET6 与 STM32F103C8T6 ,彼此进行互相通讯。通过  CubeMX 软件配置  SPI  协议驱动 NRF24L01 2.4G 通讯模块( HAL库 )。 NRF24L01 2.4G 是嵌入式较为常见的模块,希望这篇博文能给读者朋友的工程项目

    2024年02月16日
    浏览(43)
  • STM32+JR6001语音播报

      文章目录 前言 一、JR6001怎么用? 二、使用步骤 1.合成语音 2.STM32代码 总结   最近在做一个利用STM32最小系统实现语音播报的小项目,加入到智能家居远程控制系统中,用来提示上位机对应操作的播报,于是就选择了JR6001作为语音播报模块,接下来就是学习过程。 提示:

    2024年02月06日
    浏览(177)
  • 【ESP32S3 Sense接入语音识别+MiniMax模型+TTS模块语音播报】

    讲解视频: ESP32S3 AI助手使用MiniMax大模型生产工具1 大家好,今天的教程将围绕如何实现精准的语音播报功能展开,我们用到了ESP32S3 Sense接入语音识别+MiniMax模型对话+SNR9816TTS模块。 目前这是我使用的ESP32S3官方硬件👍👍👍(小小的身材有大大的力量)只需要35元加摄像头麦

    2024年04月12日
    浏览(63)
  • STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072

    STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072 Proteus 仿真小实验: STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072 功能: 硬件组成:STM32F103C6单片机 +0.960LED显示屏+DHT11温度湿度+电位器模拟SGP30二氧化碳传感器+蜂鸣器LED+串口模拟语音播报+电机模拟电风扇换气+多

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包