单片机语音播报怎么做?语音模块原理及程序编写思路
我最欢就是做带语音播报的产品,写程序的过程太枯燥了。
有些产品一开发就是几个月,整个过程都跟冷冰冰的LED、蜂鸣器、按键、LCD屏打交道难免有些寂寞。
加上语音就不同了,录制好一个好听的妹子声音,不但可以提升整个产品的逼格,自己也满满的成就感。
今天就来聊聊带语音的产品怎么做。
实际产品中,用单片机播放语音方案有很多种,唯一没有开发板那种,因为成本各方面都不满足产品需求。
另外就是加一个语音芯片,如果利润高的产品会优先使用这种,一个几块钱还能接受。
还有就做软解码的,就是把语音文件解码成喇叭能够识别的PWM和DAC数据,这种技术难度最大,对工程师编程水平是一个考验。
虽然难度大,但是成本低,不需要额外增加语音芯片,老板的最爱,反正工程师掉点头发对公司又没影响。
软解码大概在6,7年前做电子狗的时候玩过一次,大概原理就是把语音文件合并成bin文件,烧录到外置的flash里面,做好每条语音的地址映射。
用单片机读取Flash的数据并解码,然后转换成PWM或者DAC经过功放输出到喇叭。
这种一般要有个写上位机的配合,以前市面上没有在把语音文件合并成bin文件的工具,现在好像有了。
时间相隔太久,很多细节记不清楚了,后续如果还能找到资料再跟大家分享。
今天无际单片机编程给大家讲后面我做过的一种方法:用语音芯片 。
这是语音芯片的一些介绍:
我们需要关注的就是,这个芯片对语音长度的支持分别有55s、25s、85s,如果产品语音少还是挺合适的。
这种芯片如果语音少的直接用芯片内部的Flash,如果语音多了就需要外挂一个Flash来存储语音数据。
一般每个产品的语音都是不一样的,那怎么把我们想要的语音通过这个语音芯片播放出来呢?
想实现这个功能要经过以下几个步骤:
通过软件把语音文案转成mp3格式语音文件,类似的软件有很多,比如说科大讯飞。把语音文件提供给芯片方,让他们帮你定制。拿到样品后就是焊接到自己板子上,然后根据芯片规格书写控制时序程序,每条语音都对应了一个地址,只要把地址数据写入芯片,芯片就会自动播放指定语音。整个过程是不是非常简单?
除了播放语音功能以外,还有一些附加功能,比如说静音,音量调节、循环播放等等。
下面来看下芯片的引脚定义
一般使用3根线来跟单片机通讯。
PA0/SDA: 数据线
PA1/SCL: 时钟线
PA2: 忙碌线,当有语音播报的时候,该引脚为低电平。
芯片的控制时序如下:
不难发现,数据开始之前SCL需要先产生5ms的低电平同步头,然后数据在SCL线的上升沿被读取,一共读取8位,也就是1个字节。
如果你不会写这个时序也没关系,芯片原厂都有提供例程。
单片机如何控制语音芯片实现语音播放?
语音芯片 程序写在单片机中,调用语音芯片进行记录,录音成功后,语音芯片会将录音的地址返回给您,您可以使用变量来存储声音。当然,你也可以写一个程序来实时播放这个地址的声音,前提是你想听的时候。说了那么多,单片机如何控制语音芯片实现语音播放?其实方法很简单:
单片机如何控制语音芯片实现语音播放
一、并行操控形式 语音芯片提供按键接口,单片机的输入输出端口可以控制语音芯片的按键接口进行录音、播放、擦除、前、后等操作。还有一种语音微控制器。通过显影板或刻录机写下语音内容后,单片机控制其按键接口进行单段广播、循环广播、暂停、停止等操作。 二、串行操控形式 单片机将语音段信息的地址码发送到语音芯片的串行接口,语音芯片收到信息后进行声音播放。串行通信方式有多种,包括类SPI三线通信、双线通信和单线通信。在这种方法下,语音芯片只能是SLAVE机器设备。一般来说,他们只能接受广播指令,代表N588D系列和许多其他类型。基本上,市场上的语音芯片都提供串行通信方法。
相关问答
单片机 与 语音 芯片怎样连接?办法是你用WTV040系列/WTH系列语音芯片可以实现实现步骤1.用OTP芯片WTV芯片,把声音装进去.2.把语音内容装入语音芯片,后提供语音地址供给你单片机的地址.你...
单片机 C51的汇编语言编程[回答]pragma只是用于之间潜入asm代码,不是变了相的混合编程技术,它不能直接调用其他文件(注意是文件)中的函数。真正意义上的多模块编程,每个模块之间都...
单片机 speaker是什么?单片机speaker是一种用于输出声音的装置,它通常由一个电磁线圈和一个振动膜组成。当单片机通过控制电流流过电磁线圈时,线圈会产生磁场,进而使振动膜振动,从...
谁编写过WT588D 语音 芯片的程序这个需要怎样下载和使用用51 单片机 可以编写他的程序吗?WT588D这个语音芯片不用编写,它提供了多种接口可以通过单片机来控制播放,语音内容及接口方式是通过上位机软件来下载和设置的。WT588D内部有SPI-FLASH,SPI...
51 单片机 怎么与 语音 模块连接?想用电脑往51单片机里写进去一个代码,让单片机通过语音模块把写进去的内容读出来。这涉及两个问题:1、数据提取和通信传输数据与存储数据。你把“欢迎使用”...
单片机 1秒钟定时汇编语言怎么编?可以有两种方法,设晶振为12M,则第一种方法:用延时的方法实现DELAY:MOVR3,#10;延时子程序,延时1秒D1:MOVR4,#200D2:MOVR5,#250D3:DJ...
如果我想能看懂 单片机的 程序,需要怎样学习语言?非常感谢你发来的邀请,我很高兴回答你的问题!现在单片机编程语言主要有两种,一种是汇编语言、一种是C语言。汇编语言要求要对单片机内部结构有要熟悉,由于其...
单片机 c语言keil编译程序老是提示KEYS.H(11): error C129: missing ';' before 'key'?你这个程序也是做成了头文件了吧,在主程序中用#include定义包含这个头文件的位置是在typedefunsignedcharuint8;前面了吧,这样typedef的定义就无效了,交换...
AT89C51 单片机 怎么用汇编语言让4个数码管同时显示1234?4、使用方法:设有启动键K1和暂停/清零键K2。按k1启动计时,按k2则暂停计时,再按k2则清零。5、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,...
求51 单片机的 音乐播放程序 实验仪器必须是DP-51proc-ZOL问答JNBRECLED,PLAYL2;检测语音模块是否播放完毕DJNZR5,PLAYL1;播放时间控制DJNZR6,PLAYL1PLAYL2:SETBPLL;释放播放按键RET;...