新型语音电子钟设计资料.docx

上传人:b****6 文档编号:7725774 上传时间:2023-01-26 格式:DOCX 页数:29 大小:2.34MB
下载 相关 举报
新型语音电子钟设计资料.docx_第1页
第1页 / 共29页
新型语音电子钟设计资料.docx_第2页
第2页 / 共29页
新型语音电子钟设计资料.docx_第3页
第3页 / 共29页
新型语音电子钟设计资料.docx_第4页
第4页 / 共29页
新型语音电子钟设计资料.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

新型语音电子钟设计资料.docx

《新型语音电子钟设计资料.docx》由会员分享,可在线阅读,更多相关《新型语音电子钟设计资料.docx(29页珍藏版)》请在冰豆网上搜索。

新型语音电子钟设计资料.docx

新型语音电子钟设计资料

 

摘要

本文根据单片机的优点,根据采用振荡器的普通电子钟的设计原理入手,设计了一款具有语单识别、报时、秒表等功能的新型语单电子钟。

详细介绍了本语音电子钟系统的硬件和软件设计。

硬件:

单片机系统(DAC(ADC、语音识别、定时\计数等)、时钟芯片单元、音频输入输出单元、显示单元、接口电路单元、电源电路单元、键盘中断单元。

软件:

初始化主程序系统、各功能子系统、中断服务子系统。

本设计系统采用具有dsp(数字信号处理)和双通道DAC的APCE061A单片机和SPLC501A(64行×128列)来完成。

关键字:

新型电子钟语单识别SPCE061ALCD12864

 

Abstract

Accordingtotheadvantagesofusingmicrocontroller,accordingtothedesignoftheoscillatorsordinaryelectricclockmulti-duties,designedaparagraphoftime,withvoicerecognition,thenewvoicefunctionssuchasastopwatchelectricclock.Detailedintroducedthisspeechelectricclocksystemhardwareandsoftwaredesign.Hardware:

thesingle-chipmicrocomputersystem(DAC(ADC,speechrecognition,regularcounting),clockchipunit,audioinput/outputunit,displayunit,interfacecircuitunits,powersupplycircuitunits,keyboardinterruptunit.Software:

initializationmainprogramsystem,eachfunctionsubsystem,interruptservicesubsystem.ThisdesignsystemusingaDSP(digitalsignalprocessor)andthedualchannelDACspce061A,andsplc501A(64dox128column)tocomplete.

 

Keyword:

NewelectricclockSpeechrecognitionSPCE061ALCD12864

 

第一章引言

第一节设计背景和意义

电子钟表是一种用电能为动力的计时器,利用数字电路来显示秒、分、时的计时装置。

其基本组成部分一般由电子元器件构成。

采用LCD显示装置。

电子钟中使用最多的是石英电子钟。

由于采用了振荡频率稳定的石英振荡器和相应的集成电路,石英电子钟比其他各类钟有明显的优越性,包括走时精度高、稳定性好、使用方便、耗电量小、走时延续时间长、体积小、功能多、制造成本低、显示直观等,因而得到广泛应用。

随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。

时钟和日期在现代的生产和生活中占很重要的地位,但目前市场上各式各样的电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大并且无新意,呆板死气。

因此有必要对数字电子钟进行改进,通过高新的技术和高技术的硬件结合来设计新型的电子钟产品。

本设计主要是对电子钟的功能的增强,在满足平时一般的生活需求的同时对其人性化设计,具有语音识别控制、备忘录提示等功能。

第二节研究现状及未来技术发展

本设计对普通电子钟改进的主要技术是语音识别技术和超大规模集成电路技术。

语音识别技术包括信号处理、模式识别、概率论和信息轮、发声机理和听觉机理、人工智能等。

本系统的语音识别包括前端处理、模式匹配来实现人工智能。

语音识别的研究始于20世纪50年代,60年代和70年代初语音识别最重要的发展是语音信号线性预测编码(LPC)技术和动态时间规整(DTW)技术[1],有效地解决了语音信号的特征提取和时间不等长匹配问题,对特定人的语音识别十分有效。

研究特点以孤立字语音识别为主,通常把孤立字作为一个整体来建立模块。

80年代,语音识别研究重点之一是链接词语音识别,开发了各种连接词语音识别和关键词识别算法,如多级动态规划语音识别算法[2]。

目前在语音识别研究领域非常活跃的课题为稳健语音识别、说话人自适应技术、大词汇量关键词识别算法、语音说识别的可信度评测算法。

基于类的语言模型和自适应语言模型,一级深层次的自然语音的理解。

[3]国内外语音识别根据说话人可以分为:

特定人,任意人。

本系统特性为特定人的简单语音识别。

语音识别未来面临的主要问题:

自然语言的识别和理解、语音信息量大、语音的模糊性、语音特性的变动、环境噪声和干扰降低了识别率。

[4]

单片机是超大规模集成电路技术的产物,包括中央处理器CPU、存储器、定时/计数器、中断系统、I/O和DAC(ADC)电路。

早起单片机都是8位或者4位的,随着技术的发展高端的32位单片机诞生,主频超过300MHz,处理速度提高很多倍。

单片机由于集成度高,系统结构简单,模块化,可靠性高,处理速度快,目前在生活中的各个领域随处可见,广泛应用于仪器仪表、航空航天、医用设备等。

单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。

随着超大规模集成电路技术的发展,单片机的应用更加广泛和深入。

 

第二章研究的主要内容及预期目标

第一节研究的理论基础

理论基础:

(1)模/数电子技术

(2)电路分析原理

(3)单片机原理

(4)数字信号处理(DSP)

(5)语音识别技术

研究的主要内容:

(1)语音识别技术

(2)D/A、A/D技术

(3)数字信号处理(DSP)技术

(4)接口电路及键盘电路设计

(5)系统的各子程序模块设计

(6)系统的稳定性和抗干扰性

系统的预期目标和可行性:

(1)系统的预期目标

(2)1SPLC501上面显示时间、日期、星期

(3)时间的可调性和闹铃选择

(4)备忘录提示

(5)语音识别控制报时功能

(6)系统的可行性

(7)系统的稳定性

本系统采用高度集成的单片机SPCE061A,处理速度快,SPCE061A的实时时钟32768Hz经过PLL倍频电路产生系统时钟频率再经过分频得到CPU时钟频率。

时基信号来于32768HZ为系统提供中断信号。

电源的的前后两组电容用来去耦滤波。

[5]为了获得标准3.3V电压,在板子上加入SPY0029A三端稳压器,两个二极管,是为防止误将电源接反造成不必要损失保证了系统的稳定性。

 

第三章系统的硬件设计

第一节ISPCE061单片机系统电路

图3.1.1系统硬件结构图

系统的硬件电路包括:

单片机系统(DAC(ADC、语音识别、定时/计数等)、时钟芯片单元、音频输入输出单元、显示单元、接口电路单元、电源电路单元、键盘中断单元。

IOA的高八位接到液晶模组的八个数据端,同时也连接了液晶模组的电源,即直接用一根10pin的排线连接61板“+”、IOA8~15、“-”与SPLC501A液晶显示模组的“+”、DB0~7、“-”,主要用来向液晶模组传送命令和数据;IOB6接EP,IOB5接R/W,IOB4接AO,用来控制液晶的显示和工作方式。

3.1SPCE061单片机系统电路

图3.1.2SPCE061系统电路

图3.1.2附系统的存储单元分段

SPCE061A包括:

FLASH(闪存)、SRAM(静态内存)、通用I/O端口、定时器/计数器、中断控制、CPU时钟锁相环(PLL)、ADC(模拟数字转换器)、DAC(数字模拟转换器)输出、UART(同步串行输入输出接口)、SIO(串行输入输出接口)、低电压监测/低电压复位模块、Watchdog。

声音模/数转换器输入通道内置麦克风放大器,并具有自动增益控制(AGC)功能。

内置在线仿真电路接口ICE(在线实时仿真/除错器)。

SPCE061A的系统时钟由时钟发生器(32768Hz晶振)、锁相环(PLL)和时间基准信号(RTC)组成。

32768Hz的实时时钟经过PLL倍频电路产生系统时钟频率(Fosc),Fosc再经过分频得到CPU时钟频率(CPUCLK)。

锁相环PLL(PhaseLockLoop)振荡器电路的作用是将系统提供的实时时钟的基频(32768Hz)进行倍频。

时间基准信号,简称时基信号,来自于32768Hz实时时钟,通过频率选择组合而成。

时基信号发生器为定时/计数器提供各种频率选择信号并为中断系统提供中断源信号。

此外,时基信号发生器还可以通过分频产生时基信号,为中断系统提供各种实时中断源信号。

第二节晶振电路

图3.2

晶振电路32768Hz的实时时钟经过PLL倍频电路产生系统时钟频率(Fosc),Fosc再经过分频得到CPU时钟频率(CPUCLK)。

锁相环PLL(PhaseLockLoop)振荡器电路的作用是将系统提供的实时时钟的基频(32768Hz)进行倍频。

时间基准信号,简称时基信号,来自于32768Hz实时时钟,通过频率选择组合而成。

时基信号发生器为定时/计数器提供各种频率选择信号并为中断系统提供中断源信号。

此外,时基信号发生器还可以通过分频产生时基信号,为中断系统提供各种实时中断源信号。

第三节麦克风输入电路

图3.3麦克风输入电路

此电路主要人通过MIC把语音信号输入到系统中,单片机通过dsp算法、A\D转换存储在flash中,然后通过API函数模式匹配进行语音控制识别及时报时等。

第四节音频输出电路

图3.4音频输出电路

当触发MIC_In通道输入后,产生一个开始信号(b15(RDY)=0)。

然后,逐次逼近式ADC首先设置最高位,然后清除SAR的其它位(1000000000B)。

这时,DAC0输出电压(1/2AVdd)与输入电压Vin进行比较。

如果Vin>VDAC,保持原先设置为‘1’的位(最高有效位)仍为‘1’;否则,该位会被清为‘0’。

这个过程重复10次,直到这些位都被比较过。

转换结果将会保存在SAR内。

A/D转换完成之后,P_ADC_Ctrl(读)($7015H)的第15位RDY被置为”1”。

第五节电源电路

图3.5电源电路

采用3节5号电池进行供电,由J10接入,其中的前后两组电容用来去耦滤波,使其供给芯片更加平滑。

为了获得标准3.3V电压,在板子上加入SPY0029A三端稳压器。

两个二极管,是为防止误将电源接反造成不必要损失而设置的,在操作过程中千万不要将电源接反,因为反向电压超过一定的值,二极管将会被损坏,达不到保护的目的。

后面的零电阻及其电源分不同的几路是为了减少电磁干扰设置的。

第六节SPLC501液晶显示系统电路

图3.6液晶显示系统电路

SPLC501为液晶显示控制驱动器,集行、列驱动器和控制器于一体,广泛应用于小规模液晶显示模块。

SPLC501单芯片液晶驱动,可以直接与其他微控制器接口总线相连。

微控制器可以将显示数据通过8位数据总线或者串行接口写到SPLC501的显存中。

SPLC501的特点:

1.内置8580位显示RAM。

RAM中的一位数据控制液晶屏上的一个象素点的亮、暗状态。

“1”亮“0”暗。

2.具有65行驱动输出和132列驱动输出。

3.可以直接与80系列和68系列微处理器相连。

4.内置晶振电路,也可以外接晶振。

5.工作温度范围为-40摄氏度和+85摄氏度之间。

SPLC501液晶显示模组采用GPG12063YS3LCD模块,此模块内嵌SPLC501芯片,采用先进的COG技术,将芯片嵌在LCD玻璃上。

第七节电路板、pc连接电路(下载区)

图3.7下载连接电路图

ICE基本运行方式是通过控制clock及通过ICE伪指令方式,来控制CPU的运行及缓存器资料和内存资料的存取,因此必须通过控制缓存器值的设定来控制目前CPU的动作。

板上的74HC244主要是在我们用下载线进行程序下载时起作用,主要起缓存的作用和完成对SDA是用来作为数据回送还是数据下载进行选择。

3.8晶振、指示灯、复位、电源电路等略。

 

第四章系统的软件设计

系统的软件设计就是个子程序系统设计,包括:

初始主程序、功能程序、语音函数库程序、中断程序

图4.1程序结构图

第一节中断程序系统

4.1.1语音识别中断

语音识别技术主要是音频压缩技术的问题,本系统采用的是特定人的语音识别SD(SpeakerDependent):

是指语音样板由单个人训练,也只能识别训练人的语音命令,而他人的命令识别率较低或几乎不能识别。

[8]接口是API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数。

图4.2识别简图

API函数:

intBSR_DeleteSDGroup(0)

intBSR_Train(intCommandID,intTraindMode)

voidBSR_InitRecognizer(intAudioSource)

intBSR_GetResult(Void)

voidBSR_StopRecognizer(void)

voidBSR_FIQ_Routine

初始化:

【API格式】C:

intBSR_DeleteSDGroup(0);

ASM:

F_BSR_DeleteSDGroup(0)

【功能说明】SRAM初始化。

【参数】该参数是辨识的一个标识符,0代表选择SRAM,并初始化。

【返回值】当SRAM擦除成功返回0,否则,返回-1。

训练部分:

1)【API格式】C:

intBSR_Train(intCommandID,intTraindMode);

ASM:

F_BSR_Train

【功能说明】训练函数。

【参数】

CommandID:

命令序号,范围从0x100到0x105,并且对于每组训练语句都是唯一的。

TraindMode:

训练次数,要求使用者在应用之前训练一或两遍:

BSR_TRAIN_ONCE:

要求训练一次。

BSR_TRAIN_TWICE要求训练两次。

【返回值】训练成功,返回0;没有声音返回-1;训练需要更多的语音数据来训练,返回-2;当环境太吵时,返回-3;当数据库满,返回-4;当两次输入命令不通,返回-5;当序号超出范围,返回-6。

【备注】

①在调用训练程序之前,确保识别器正确的初始化。

②训练次数是2时,则两次一定会有差异,所以一定要保证两次训练结果接近。

③为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音。

④调用函数后,等待2秒开始训练,每条命令只有1.3秒,也就是说,当训练命令超出1.3秒时,只有前1.3秒命令有效。

辨识部分:

1)【API格式】C:

voidBSR_InitRecognizer(intAudioSource)

ASM:

F_BSR_InitRecognizer

【功能说明】辨识器初始化。

【参数】定义语音输入来源。

通过MIC语音输入还是LINE_IN电压模拟量输入。

【返回值】无。

2)【API格式】C:

intBSR_GetResult();

ASM:

F_BSR_GetResult

【返回值】=R1

【功能说明】辨识中获取数据。

【参数】无。

【返回值】

当无命令识别出来时,返回0;

识别器停止未初始化或识别未激活返回-1;

当识别不合格时返回-2;

当识别出来时返回命令的序号。

`【备注】该函数用于启动辨识,BSR_GetResult();

3)【API格式】C:

voidBSR_StopRecognizer(void);

ASM:

F_BSR_StopRecognizer

【功能说明】停止辨识。

【参数】无。

【返回值】无。

【备注】该函数是用于停止识别,当调用此函数时,FIQ_TMA中断将关闭。

中断部分:

【API格式】ASM:

_BSR_InitRecognizer

【功能说明】在中断中调用,并通过中断将语音信号送DAC通道播放。

【参数】无。

【返回值】无。

【备注】

①该函数在中断FIQ_TMA中调用。

②当主程序调用BSR_InitRecognizer时,辨识器便打开8K采样率的FIQ_TMA

中断并开始将采样的语音数据填入辨识器的数据队列中。

③应用程序需要设置一下程序段在FIQ_TMA中:

.PUBLIC_FIQ

.EXTERNAL_BSR_FIQ_Routine//定义全局变量

.TEXT

_FIQ:

PUSHR1,R4to[SP]//寄存器入栈保护

R1=[P_INT_Ctrl]

CALL_BSR_FIQ_Routine//调用子程序

R1=0x2000//清中断标志位

[P_INT_Clear]=R1

POPR1,R4from[SP];//寄存器组出栈

RETI

END

其中实时监控是用来观察辨识是否正常工作,如果辨识正常则会产生一16ms连续稳定方波,否则如果CPU超载则会产生不稳定波形,此时需要删除命令,或是优化程序否则会丢失语音数据产生辨识出现错误的信息。

图4.3识别过程函数功能

识别识别过程:

触发识别训练

"请输入第一条命令"

"请输入第二条命令"

"请再说一遍"(以上提示音每说完一遍出现此命令)

"没有听到任何声音"(当没有检测到声音时出现此命令)

"两次输入名称不相同"(当两次输入的名称不同时出现此命令)

"两次输入命令不相同"(当两次输入的命令有差异时出现此命令)

"准备就绪,请开始辨识"(以上三条语句全部训练成功时,进入......)

图4.3识别功能实现流程图

4.1.2键盘扫描中断

KEY2

+KEY3

图4.4键盘选择说明

语音播报及闹铃程序段:

//文件名称:

bobao.c

//功能描述:

日期和时间的语音播报

#include"SPCE061A.h"

#include"s480.h"

#defineC_T000

#defineC_T011

#defineC_T022

#defineC_T033

#defineC_T044

#defineC_T055

#defineC_T066

#defineC_T077

#defineC_T088

#defineC_T099

#defineC_T1010

#defineC_DIAN11

#defineC_MIN12

#defineC_YEAR13

#defineC_MONTH14

#defineC_DAY15

#defineC_BELL16

externunsignedintyear;

externunsignedintgmonth;

externunsignedintgday;

externunsignedinthour;

externunsignedintmin;

//语法格式:

PlayRespond(unsignedintResult)

//实现功能:

对对传入的实参序号的语音资源进行播报

voidPlayRespond(unsignedintResult)

{

SACM_S480_Initial

(1);

*P_INT_Ctrl_New=*P_INT_Ctrl_New|0x0004;//使初始化后不影响2KZ中断

SACM_S480_Play(Result,3,3);

while((SACM_S480_Status()&0x0001)!

=0)

{

SACM_S480_ServiceLoop();

*P_Watchdog_Clear=0x0001;

}

SACM_S480_Stop();

}

//语法格式:

PlaySpeakYear(intYearTemp)

//实现功能:

播报年

voidPlaySpeakYear(intYearTemp)

{

PlayRespond((YearTemp/1000));

PlayRespond((YearTemp%1000)/100);

PlayRespond((YearTemp%100)/10);

PlayRespond((YearTemp%10));

PlayRespond(C_YEAR);

}

//语法格式:

PlaySpeakMonth(intMonthTemp)

//实现功能:

播报月

voidPlaySpeakMonth(intMonthTemp)

{

if(MonthTemp<10)

PlayRespond(MonthTemp);

elseif(MonthTemp==10)

PlayRespond(C_T10);

elseif(MonthTemp==11)

{

PlayRespond(C_T10);

PlayRespond(C_T01);

}

elseif(MonthTemp==12)

{

PlayRespond(C_T10);

PlayRespond(C_T02);

}

PlayRespond(C_MONTH);

}

//语法格式:

PlaySpeakDay(intDayTemp)

//实现功能:

播报日

voidPlaySpeakDay(intDayTemp)

{

if((DayTemp/10)>1)

PlayRespond(DayTemp/10+C_T00);//十位>1报

if((DayTemp/10)>0)

PlayRespond(C_T10);//报十,十位为1不报1

if((DayTemp%10)!

=0)

PlayRespond(DayTemp%10+C_T00);

PlayRespond(C_DAY);

}

//语法格式:

PlaySpeakHour(intDayTemp)

//实现功能:

播报时

voidPlaySpeakHour(intDayTemp)

{

if(DayTemp<10)

PlayRespond(DayTemp);

elseif(DayTemp==10)

PlayRespond(C_T10);

else

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1