当前位置:首页 > 单片机 > 单片机
[导读]引言随着单片机集成化程度的不断提高,现代单片机已经具备了数字信号处理功能,使语音信号处理用单片机实现成为可能。台湾凌阳科技公司(SunPlus)推出的一款SPCE061A就是这样的产品。SPCE061A是以μ"nSP TM16位微控

引言

随着单片机集成化程度的不断提高,现代单片机已经具备了数字信号处理功能,使语音信号处理用单片机实现成为可能。台湾凌阳科技公司(SunPlus)推出的一款SPCE061A就是这样的产品。SPCE061A是以μ"nSP TM16位微控制器及信号处理器芯片为内核的16位单片机,采用模块式集成结构,片内集成了2KB RAM、32KB Flash、ADC、DAC、并行I/O等,特别适合语音信号处理。本文介绍如何实现用SPCE061A单片机采集语音信号,并传送到PC机中的方法。

1 硬件系统结构

1.1 SPCE061A结构

SPCE061A的内部结构如图1,其特点如下:

*16位μ"nSP TM微控制器;

*工作电压:VDD为2.6~3.6V(CPU),VDDH为VDD~5.5V(I/O);

*CPU时钟为0.32~49.152MHz;

*内置存储器:SRAM为2KB,内存Flash为32KB;

*可编程音频处理;

*2个16位可编程定时器/计数器;

*7通道10位ADC(内置麦克风放大和自动增益控制功能);

*2个10位DAC;

*32路可编程通用输入输出端口;

*串行输入输出接口;

*低电压监测/低电压复位功能;

*14个中断源可来自定时器、外部时钟输入、键唤醒等;

*内置在线仿真电路ICE。

1.2 SPCE061A开发方法

SPCE061A的开发是通过在线调试器PROBE实现的,如图2所示。它利用了SPCE061A内置的在线仿真电路ICE和凌阳公司的在线串行编程技术。

1.3 语音采集的硬件电路

语音采集的硬件电路如图3所示。MIC采用驻极体电容话筒,这种话筒具有灵敏度高、无方向性、重量轻、体积小、频率响应宽、保真度好等优点。

与PC机的串行通信用SPCE061A的UART接口,用MAX232芯片进行电平转换,即可实现RS232通信。

2 软件设计与实现

2.1 语音信号的采集压缩与数据传输

(1)语音信号的采集压缩

语音信号处理的基础是对语音信号进行数字化,并采样存储。SRCE061A内置专门用于语音信号采集的自动增益控制放大器(AGC)的麦克风输入通道(MIC_IN)。语音信号经麦克转换成电信号,由隔离电容隔掉直流成分,然后输入至内部前置放大器。SPCE061A内部自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增器时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,以便使进入A/D的信号保持在最佳电平,又可使谐波减至最小。

ADC初始化程序如下:

INT OFF;

R1=0x0030;

[P_TimerA_Ctrl]=R1;

//时钟频率为CLKA的fosc/2

R1=0xfa00;

[P_TimerA_Data]=R1;

//采样率为16kHz

R1=0x003d;

[P_ADC_Ctrl]=R1; //设置AGC功能

R1=0x00A8;

[P_DAC_Ctrl]=R1; //采用自动方式且通过MIC_IN通道输入,通过定时器A的溢出锁存数据,ADC为自动方式

R1=0x1000;

[P_INT_Ctrl]=R1; //开中断IRQ1_TM

INT IRQ;

采样后的数字语音信号数据量非常大,且由于语音信号采样点幅度分布的非均匀性和样本间的相关性等原因,使语音信号中含有大量的冗余信息。因此,在实际应用中采用各种信源编码技术来消除语音信号的冗余度。语音编码方法主要有波形编码、参数编码和混合编码。

*波形编码的基本原理是以波形逼近为原则,在时域上把幅度样本分层量化并用代码表示;特点是语音质量高、抗噪性强编码率高,适于语音及高保真音乐。

*参数编码是基于某种语音产生模型,在编程端分析出该模型参数选择适当的方式进行编码;特点是语音质量差、抗噪抗弱和编码率低。

*混合编码综合了波形和参数编码之优点。

凌阳SPCE061A提供了压缩算法库——SACMLIB(见表1),其处理的语音信号范围是200Hz~3.4kHz的电话语音,并将A/D、编/解码、存储及D/A做成相应的模块,对于每个模块都有其应用程序接口API。

表1 SACM-LIB库中模块及其算法

(2)语音数据的传输

SPCE061A的通用异步串口(UART)提供了一个8位全双工标准接口,用于完成SPCE061A与外设之间的串行通信。借助于IOB口的特殊功能和UART IRQ中断,可以同时完成UART接口的接收与发送数据的过程。根据应用需求,把UART设置为中断方式接收数据,以查询方式发送数据。

UART初始化程序InitUART()见网络补充版(http://www.dpj.com.cn)。

2.2 上位机控制和存储模块

目前,Mircosoft公司的VC++6.0是基于Windows程序设计的主流开发工具之一。VC++不仅秉承了C++简便、灵活及面向对象等优点,而且提供了功能强大的MFC类库,并能自动生成应用程序框架,提供标准化的程序结构和用户接口。特别需要指出的是,为了今后调用低层的音频处理API函数,对由下位上传的音频数据进一步进行语音识别方面的处理,我们使用VC来编写上位机的控制及存储程序。

在实验室和工业应用中,RS232串口是常用的计算机与外部串行设备(单片机)之间的数据传输通道,由于串行通信简单易用,所以应用广泛。通常在VC++中有三种方法可以实现串行通信:

*使用VC++的标准通信函数_inp和_outp来实现串口通信;

*把串口看成是一个特殊的设备文件,使用有关文件处理的API函数来实现串口通信;

*使用ActiveX的串行通信控件MSComm来实现串口通信。

对于本实例来说,主要考虑的因素是实时语音数据存取,以及位机与下位机的配合。因此,采用了串行通信MSComm控件方法来实现串口通信。另外,可以采用二进制流文件Cfile类来存储声音文件。具体步骤见网络补充版。

结语

通过以上实例录制的语音数据,可以从PC机下载到SPCE061A中(或者作为资源文件放入工程中),使用SACM_A2000模块的函数播放验证,效果能够满足进一步语音信号处理需要。

用凌阳SPCE061A处理语音信号有如下独特之处:

*硬件电路简单,因SPCE061A是一款专门为语音信号处理设计的,麦克和喇叭可直接接入,用户不必外接放大电路等;

*软件编程容易,有相应的API函数,可直接调用。

*用ICE和图形界面编译软件,调试方便。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

机器人的寻路系统基于A*算法,该算法能有效地计算出有障碍物环境中的最优路径。该系统实现为分布式架构,其中计算密集型寻路运行在机器人的树莓派4上,而机器人的TI板执行计算路径。

关键字: 机器人 树莓派4 串行通信

在一些特殊的工业场合,有时需要将传感器的信号不断的实时采集和存储起来,并且到一定时间再把数据回放到PC机中进行分析和处理。

关键字: PC机

在高速串行通信中,集成误码率测试仪(Integrated Bit Error Ratio Tester,简称IBERT)是Xilinx提供的一款用于测试transceiver的免费IP。IBERT的example des...

关键字: IBERT 串行通信

在现代工业控制系统和汽车电子领域,CAN(Controller Area Network)总线作为一种高效、可靠的串行通信协议,得到了广泛的应用。CAN总线通过广播的方式发送报文,每个节点都可以接收到总线上的所有信息,但...

关键字: CAN总线 串行通信 节点

PC机所使用的电源是基于一种叫做 “开关模式 ”的技术,所以我们通常把PC电源称为——开关电源(SMPS),它还有一个别名——直流——直流转换器。

关键字: PC机 开关模式 直流

串行通讯是指仅用一根接收线和一根发送线就能将数据以位进行传输的一种通讯方式。尽管串行通讯的比按字节传输的并行通信慢,但是串口可以在仅仅使用两根线的情况下就能实现数据的传输。

关键字: 串口 串行通信

语音识别系统是一种通过捕捉语音信号后对其进行分析和处理的技术。它主要依赖于模式匹配、统计建模和人工神经网络等方法来进行语音识别操作。语音识别系统本质上是一种模式识别系统,包括特征提取、模式匹配、参考模式库等三个基本单元。

关键字: 语音识别 语音信号

串行通信是一种通信方式,数据在通信线上按位进行传输。每位数据占据固定的时间长度,使用少数几条通信线路就可以完成系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

关键字: 串行通信 UART

串行通信接口是一种数据传输方式,采用串行通信协议(Serial Communication Protocol)。它通过串行数据线(Serial Data Line)进行数据传输,通常使用标准的RS-232、RS-485或...

关键字: 串行通信 RS-232
关闭