单片机语音播报怎么做?语音模块原理及程序编写思路

发布者:骄阳少年最新更新时间:2023-01-04 来源: zhihu关键字:单片机  语音播报  语音模块 手机看文章 扫描二维码
随时随地手机看文章

我最欢就是做带语音播报的产品,写程序的过程太枯燥了。

有些产品一开发就是几个月,整个过程都跟冷冰冰的LED、蜂鸣器、按键、LCD屏打交道难免有些寂寞。

加上语音就不同了,录制好一个好听的妹子声音,不但可以提升整个产品的逼格,自己也满满的成就感。

今天就来聊聊带语音的产品怎么做。

实际产品中,用单片机播放语音方案有很多种,唯一没有开发板那种,因为成本各方面都不满足产品需求。

另外就是加一个语音芯片,如果利润高的产品会优先使用这种,一个几块钱还能接受。

还有就做软解码的,就是把语音文件解码成喇叭能够识别的PWM和DAC数据,这种技术难度最大,对工程师编程水平是一个考验。

虽然难度大,但是成本低,不需要额外增加语音芯片,老板的最爱,反正工程师掉点头发对公司又没影响。

软解码大概在6,7年前做电子狗的时候玩过一次,大概原理就是把语音文件合并成bin文件,烧录到外置的flash里面,做好每条语音的地址映射。

用单片机读取Flash的数据并解码,然后转换成PWM或者DAC经过功放输出到喇叭。

这种一般要有个写上位机的配合,以前市面上没有在把语音文件合并成bin文件的工具,现在好像有了。

时间相隔太久,很多细节记不清楚了,后续如果还能找到资料再跟大家分享。

今天无际单片机编程给大家讲后面我做过的一种方法:用语音芯片

这是语音芯片的一些介绍:

我们需要关注的就是,这个芯片对语音长度的支持分别有55s、25s、85s,如果产品语音少还是挺合适的。

这种芯片如果语音少的直接用芯片内部的Flash,如果语音多了就需要外挂一个Flash来存储语音数据。

一般每个产品的语音都是不一样的,那怎么把我们想要的语音通过这个语音芯片播放出来呢?

想实现这个功能要经过以下几个步骤:

1. 通过软件把语音文案转成mp3格式语音文件,类似的软件有很多,比如说科大讯飞。

2. 把语音文件提供给芯片方,让他们帮你定制。

3. 拿到样品后就是焊接到自己板子上,然后根据芯片规格书写控制时序程序,每条语音都对应了一个地址,只要把地址数据写入芯片,芯片就会自动播放指定语音。

整个过程是不是非常简单?

除了播放语音功能以外,还有一些附加功能,比如说静音,音量调节、循环播放等等。

下面来看下芯片的引脚定义

一般使用3根线来跟单片机通讯。

PA0/SDA:数据线

PA1/SCL:时钟线

PA2:忙碌线,当有语音播报的时候,该引脚为低电平

芯片的控制时序如下:

不难发现,数据开始之前SCL需要先产生5ms的低电平同步头,然后数据在SCL线的上升沿被读取,一共读取8位,也就是1个字节。

如果你不会写这个时序也没关系,芯片原厂都有提供例程。



关键字:单片机  语音播报  语音模块 引用地址:单片机语音播报怎么做?语音模块原理及程序编写思路

上一篇:学单片机有什么用?单片机自学网有哪些?
下一篇:学单片机需要什么学历?单片机开发需要学什么

推荐阅读最新更新时间:2024-11-10 20:43

PC机与单片机多机的互相通信
  本文提出了一种切实可行的方法,通过实际电路搭建和调试,实现了PC机与单片机多机的互相通信,达到了预定的目标,使该系统具有如下功能:   (1)PC机可以对所有100多个单片机进行控制,根据需要,发送不同控制字到达每个单片机;   (2)PC机对单片机的状态修改是随机的、没有规律的;   (3)所有单片机将自身的一些状态信息按照顺序回传至PC机。   1 互通信的几种实现方法   PC 机至多个单片机的广播比较简单,难度较大的是多个单片机发送数据至PC机。由于100多个单片机均挂在一个数据总线上,系统设计的难点就在于数据总线控制权的传递,绝对不能出现有2个或者2个以上设备同时向总线上发送数据。系统设计之初,考虑了两种总线控
[单片机]
PC机与<font color='red'>单片机</font>多机的互相通信
基于HX711+51单片机电子秤
仿真原理图如下 原理图 单片机源程序如下: #include reg52.h #include intrins.h #include string.h #include main.h #include LCD1602.h #include HX711.h #include eeprom52.h #define uchar unsigned char #define uint unsigned int unsigned long HX711_Buffer = 0; unsigned long Weight_Maopi = 0; unsigned long Weight_Maopi_0 = 0; long
[单片机]
基于HX711+51<font color='red'>单片机</font>电子秤
STM32单片机(6) PWM输出实验
/******************************************************************************* * * 软件功能: PWM输出实验 * *******************************************************************************/ #include stm32f10x.h #include delay.h void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_
[单片机]
AVR单片机通讯用发送标识UDRE和TXC的区别
AVR单片机通讯用发送标识UDRE和TXC的区别: AVR的说明书上说: “TXC标志位可以用来检验一个数据帧的发送是否已经完成,RXC标志位可以用来检验接收缓冲器中是否还有数据未读出。在每次发送数据之前(在写发送数据寄存器UDR前)TXC标志位必须清零。” “数据寄存器空UDRE标志位表示发送缓冲器是否可以接受一个新的数据。该位在发送缓冲器空时被置"1”;当发送缓冲器包含需要发送的数据时清零。” “当整个数据帧移出发送移位寄存器,同时发送缓冲器中又没有新的数据时,发送结束标志TXC置位。TXC在传送结束中断执行时自动清零,也可在该位写"1”来清零。” 看完上述的说明之后,我一直疑惑在发送数据时,是不是要同时进行两种操作
[单片机]
51单片机的串口通信详解-原理 寄存器 编程等
单片机的通信一般有并行通信和串行通信。并行通讯是数据的各位同时发送或接收,并行通信控制简单,传输速度快,传输线较多。 参看下图: 串行通讯传输线少,可利用电话网,但传送控制复杂。数据一位一位顺序发送或接收。 串行通讯中有一种是异步通信,即我们通常所说的串口通信。这是我们今天要分享的内容: 异步通讯用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。用这种格式表示字符,则字符可以一个接一个地传送。 一、在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特
[单片机]
51<font color='red'>单片机</font>的串口通信详解-原理 寄存器 编程等
单片机P1口高四位做按键,低四位做输出显示程序
;有对应的C51程序 ;本程序主要是初步体现基于单片机的按键的设计, ;用P1口的低八位发光二极管显示,只是为了显示实验结果 ;2007-06-05 org 0000h ljmp start org 0060h start: mov a,#0f0h ;准备给P1口高四位置高,做输入 mov p1,a ;给P1口高四位置高 mov a,p1
[单片机]
温度传感器DS18B20 89C51单片机C语言程序
#include reg52.h #define uchar unsigned char /*宏定义 字符型数据 整型数据 */ #define uint unsigned int uint DD; sbit DQ=P2^2; //定义DS18B20总线I/O unsigned int temputer; char Co de = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; uchar co de C = {0x0, 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F}; /*****延时子
[单片机]
keil中GD32 MCU IAP中APP的存储地址如何设置?
前面和大家聊过什么是IAP(有不懂的小伙伴请看下前面的视频哦),那么IAP中APP的存储地址该如何设置呢 以keil为例,打开工程的option选项卡: 将IROM1中的地址改为你想要保存的位置,比如0x08008000开始的位置: 这样通过keil烧录,程序就自动下载到从0x08008000起始的flash区域哦。 如果你想要通过IAP烧录APP,也一定要烧录到0x08008000起始的flash区域哦,否则跳转到APP中执行程序就会出错的。
[单片机]
keil中GD32 <font color='red'>MCU</font> IAP中APP的存储地址如何设置?
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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