嵌入式人工智能(28-基于树莓派4B的语音播报模块-SYN6288)

news2024/9/8 23:41:16

1、语音播报模块

语音播报在一些嵌入式场景中很常见,广泛应用于游戏篮球机音效语音播报,跑步机语音导航,按摩椅语音操作指引,设备故障提示,设备操作引导语音,车载安全语音警示,公共场所语音提示,营业厅温馨语音提示等等。

我这里正好有一个语音播报套件cnTTS,通过USBToTTL线驱动,实现串口发送的数据语音播报。

2、SYN6288中文语音合成芯片

将cnTTS语音播报套件拆开可以查看使用的芯片,上面没有激光刻印,看不清楚,只能到网上找资料,目前用的最多的2款语音芯片一个是SYN6288,另一个是JR6001。JR6001是16脚贴片封装,而SYN6288是28脚贴片封装。我这边打开看也没有28脚,经问询厂家使用的是SYN6288。不管这么多了,按SYN6288芯片来使用。

 SYN6288中文语音合成芯片是北京宇音天下科技有限公司于2010年初推出的一款性/价比更高,效果更自然的一款中高端语音合成芯片。SYN6288通过异步串口(UART)通讯方式,接收待合成的文本数据,实现文本到语音(或 TTS语音)的转换。
宇音天下于 2002年最早研制出国内首款语音合成芯片0SYN06188。公司最新推出的SYN6288语音合成芯片,继承了0SYN06188语音芯片的优秀特点:最小SSOP28L贴片封装、硬件接口简单、低功耗、音色清亮圆润、极高的性/价比;除此之外,SYN6288在识别文本/数字/字符串更智能、更准确,语音合成自然度更好、可懂度更高。SYN6288语音合成效果和智能化程度均得到大幅度提高,是一款真正面向中高端行业应用领域的中文语音合成芯片。

3、语音播报模块测试

在开始使用前,先进行下芯片或模块测试,看看输出语音是否正常,我们先进行连线,该模块一共引出4根线,红色接5V供电,这个一定要注意,如果接3.3V,出现语音不清晰的现象。黑色接GND,黄色是接收数据线,接受来自单片机的数据,接USBToTTL模块的TXD,白色是发送数据线,由于没有语音输入,因此该线不接也是可以的,如果要接就接SBToTTL模块的RXD。

接好后插入PC的USB端口。

(1)应用程序测试

插上之后会有提示音,打开宇音天下PC测试程序。

这里只有2个COM口,需要到设备管理器查询我们所使用的COM是否为1和2,如果不是1和2,需要手工设置下。 

 设置好就可以播放文本了。这个应用程序比较老了,一直没有更新,所以只支持串口1、2。语音播报能听,但是整体效果一般,人声阅读没有情感,较为生硬,这里可做做文章,研究下基于情感的阅读芯片。

(2)串口程序发送测试

只要选对串口,设置好波特率,停止位等相关参数,那么就可以使用这个模块。

当点击发送,就会以该文本中文字符的GBK编码数据通过串口发送到语音播报模块,然后它就发出相应的声音。有了这个串口,我感觉使用应该非常简单了。

4、实验代码与现象

红线接5V,黑线接GND,黄线接TXD0,物理引脚8,白色线可以不接。实验完成功能:当按键按下,LED灯亮,语音播报照明灯已经打开一次!再次按下,LED灯灭,语音播报照明灯已经关闭一次。

import serial
import RPi.GPIO as GPIO
import time
import threading
# 指定编号规则为BOARD
GPIO.setmode(GPIO.BOARD)
# 关闭警告
GPIO.setwarnings(False)
# 设置输入引脚
global channel
channel = 13
led = 11
#设置GPIO11输出模式
GPIO.setup(led,GPIO.OUT)
# 设置GPIO输入模式, 使用GPIO内置的上拉电阻, 即开关断开情况下输入为HIGH
GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP)

global Light_Flag
Light_Flag=False

def Buttom_check():
    global Light_Flag
    while True:
        if GPIO.input(channel)==GPIO.LOW:
            time.sleep(0.15)
            if GPIO.input(channel)==GPIO.LOW:
                print('Button pressed.')
                Light_Flag=~Light_Flag
                print(Light_Flag)
                break
         

def other_thread_work():
    if Light_Flag:
        GPIO.output(led,GPIO.LOW)
        pl.write(bytes('照明灯已经打开!','gb2312'))
    else:
        GPIO.output(led,GPIO.HIGH)
        pl.write(bytes('照明灯已经关闭!','gb2312'))


if __name__=='__main__':
    #指定串口设备,设置波特率/打开串口,如果已经打开就不用了
    DEVICE = "/dev/ttyS0"
    pl=serial.Serial(DEVICE,baudrate=9600)
    lock = threading.Lock()
    try:
        while True:
            # 启动按键检测线程
            t0 = threading.Thread(target=Buttom_check)
            t0.start()
            # 创建并启动线程
            t1 = threading.Thread(target=other_thread_work)
            t1.start()
            t0.join()
            t1.join()

    except KeyboardInterrupt:
        print('程序结束')
    finally:
        GPIO.cleanup()

本代码可能和之前的代码有所不同,结构有所变化,主要是增加了多线程处理。我也是不得已而为之,后面会单独写内容来介绍。主要问题有以下几个。

(1)按键检测需要放到死循环里面不停检测,还要注意消抖的问题

(2)串口发送字节如果放到循环里面,必须要给time.sleep函数延时,不然它会将数据接收到缓冲区,程序结束才会播报。

(3)程序功能只让播报一次,不能一直播报,不然影响作息。

(4)如果放到循环里面,即便播报一次,也需要给几秒的延时,不然没有时间响应,但是一旦给延时,CPU就不能响应按键,按键就会失灵,这也是嵌入式开发常见的问题。等有时间详细给同学们解释。

语音播报

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统移植(七)u-boot移植 ④ trusted版本

文章目录 一、U-boot源码适配(一)执行make stm32mp15_trusted_defconfig命令进行配置,生成.config文件(二)执行make menuconfig命令,对u-boot源码进行重新配置1. 对u-boot源码进行配置,移除pmic…

Executable Code Actions Elicit Better LLM Agents

Executable Code Actions Elicit Better LLM Agents Github: https://github.com/xingyaoww/code-act 一、动机 大语言模型展现出很强的推理能力。但是现如今大模型作为Agent的时候,在执行Action时依然还是通过text-based(文本模态)后者JSO…

Java Web——第一天

Web开发课程安排 Web标准 Web标准也称为网页标准,由一系列的标准组成,大部分由W3C( World Wide Web Consortium,万维网联盟)负责制定 三个组成部分: HTML:负责网页的结构 (页面素和内容) CSS:负责网页的表现 (页面元素的外观、位置等页面…

Ubuntu 20.04.6 安装 Elasticsearch

1.准备 -- 系统更新 sudo apt update sudo apt upgrade -- 安装vim 文本编辑器 sudo apt install vim-- jdk 版本确认 java -versionjdk 安装可以参照:https://blog.csdn.net/CsethCRM/article/details/140768670 2.官方下载Elasticsearch 官方地址:h…

PPT图表制作

一、表格的底纹 插入→表格→绘制表格→表设计→选择单元格→底纹 二、把一张图片做成九宫格 1. 把一张图片画成九宫格(处理过后还是一张图片,但是有框线) 绘制33表格→插入图片→全选表格单元格→右键设置形状格式→填充→图片或纹理填充…

Teamcenter RAC开发,创建Item的两种方式

1、如果描述不必填,采用胖客户端的创建方式 newItem itemType.create(newItemId, "", targetTypeComp.getTypeName(), item_name, // "test1", null, null2、如果描述必填,则需要采用SOA的创…

汇川CodeSysPLC教程03-2-6 ModBus TCP

什么是ModBus TCP? ModBus TCP是一种基于TCP/IP协议的工业网络通信协议,常用于工业自动化和控制系统。它是ModBus协议的一个变种,ModBus协议最初由Modicon(现在是施耐德电气的一部分)在1979年开发。 以下是ModBus TC…

二分类、多分类、多标签分类的评价指标

前言 在机器学习和深度学习中,常见的分类任务可以分为:二分类(Binary Classification); 多分类(Multi-class Classification); 多标签分类(Multi-label Classification); 序列分类 (Sequence Classification); 图分类…

SQL优化相关

文章目录 SQL优化1. 数据插入2. 主键优化页分裂页合并索引设计原则 3. order by 优化4. group by 优化5. limit优化6. count优化7. update 优化 SQL优化 1. 数据插入 当我们需要插入多条数据时候,建议使用批量插入,因为每次插入数据都会执行一条SQL&am…

使用YApi平台来管理接口

快速上手 进入YApi官网,进行注册登录https://yapi.pro/添加项目 3. 添加分类 4. 添加接口 5. 添加参数 添加返回数据 可以添加期望 验证 YAPI(Yet Another Practice Interface)是一个现代化的接口管理平台,由淘宝团队…

pip install albumentations安装下载遇19kB/s超级慢细水管解决办法

albumentations 是一个用于图像增强的 Python 库,它提供了丰富的图像变换功能,可以用于数据增强,从而提高深度学习模型的泛化能力。 直接安装命令: pip install albumentations但是如果半夜遇到这种19kB/s的下载速度 为头发着想&…

【通信模块】LoRa与LoRaWAN简介

LoRaWAN网络 技象科技相关文章总结,学习笔记,原文链接如下,转载请标明该出处: LORA: https://www.techphant.cn/tag/l-2 LORAWAN:https://www.techphant.cn/tag/l-3 其他:如LAN https://www…

网络通信---TCP协议1

今日内容 三次握手: 指建立tcp连接时,需要客户端和服务端总共发送三次报文确认连接。 四次挥手: 断开一个tcp连接,需要客户端和服务端发送四个报文以确认断开。 编程模型 TCP报文 客户端 服务端

第6篇文献研读生态廊道相关综述

该文发在生态与农村环境学报。该文章写了生态廊道概念的发展历程、生态廊道类型及功能、生态廊道划定的理论和方法、生态廊道的时间和国内大型生态廊道建设实践。 这篇文章可以让大家了解生态廊道的知识。

Rocketmq-5.3.0和对应dashboard的最新版本Docker镜像,本人亲自制作,部署十分方便,奉献给大家

一、Rocketmq 最新版本5.3.0,采用docker镜像安装方式 二、官方rocketmq镜像对内存等参数配置非常不灵活便利 为了快速、灵活部署rocketmq,以及能方便对其内存等参数进行设置,特意制作了关于它的docker镜像。 三、镜像获取 最新rocketmq-5.…

使用二进制来理解数据和二进制的计算

1 使用二进制来理解数据 和人类的思维习惯不同的是,计算机将把所有的东西数字化之后才会进行处理。那么计算机能理解的数字是什么样的呢?其实,在计算机内部,不管是什么信息都使用二进制来保存和处理的。 计算机为什么要用二进制…

芋道微服务全栈开发日记(商品sku数据归类为规格属性)

商品的每一条规格和属性在数据库里都是单一的一条数据,从数据库里查出来后,该怎么归类为对应的规格和属性值?如下图: 在商城模块,商品的单规格、多规格、单属性、多属性功能可以说是非常完整,如下图&#x…

搭建规范化的vue2项目

项目包含的库 Vue2VuexRouterEslintPrettier 环境 vue:2.6.14 eslint:7.32.0 prettier:2.4.1 eslint-plugin-prettier:4.0.0 eslint-plugin-vue:8.0.3 vue/cli:5.0.8 步骤 全局安装cli工具 npm in…

Vue3----扩展 element Plug card

扩展 element Plug card 增加全屏&#xff0c;折叠操作项 核心代码 <template><div class"cc-card-component"><el-card v-if"state.isShow" :class"state.class" :bodyStyle"bodyStyle" :shadow"props.shadow…

ic进阶|性能篇02:一文带你了解一种特殊的并行技术-展开!

本期文章让我们聊聊一种数字ic设计技术——展开&#xff0c;展开用于产生一个一次迭代就相当于原有结构的多次迭代的新电路结构。其相当于之前聊过的折叠技术的反向操作&#xff0c;折叠使用一个功能单元通过多次迭代来完成原有电路结构一次迭代的操作&#xff0c;相对于通过时…