基于SPCE061A单片机的语音信号实时采集
引言
随着单片机集成化程度的不断提高,现代单片机已经具备了数字信号处理功能,使语音信号处理用单片机实现成为可能。台湾凌阳科技公司(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和凌阳公司的在线串行编程技术。如果读者想要使用该芯片及开发系统,可上网www.unsp.com.cn查询,并寻求大学计划的免费支持。
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库中模块及其算法
模块名称 | 压缩算法 | 采样率/kHz | 语音压缩编码率/Kb/s | 用 途 |
SACM_A2000 | 子带编码 | 16 | 16、20、24 | 播放语音及高保真音乐 |
SACM_S480/S720 | CELP混合编码 | 16 | 4.8、7.2 | 播音 |
SACM_S240 | 参数编码 | 24 | 2.4 | 播音 |
SACM_MS01 | FM音乐合成 | 16 | 16、20、24 | 音乐合成 |
SACM_DVR | 子带编码 | 16 | 16Kb/s的传输率,8Ksps的采样率 | ADC信道录音和DAC放音 |
(2)语音数据的传输
SPCE061A的通用异步串口(UART)提供了一个8位全双工标准接口,用于完成SPCE061A与外设之间的串行通信。借助于IOB口的特殊功能和UART IRQ中断,可以同时完成UART接口的接收与发送数据的过程。根据应用需求,把UART设置为中断方式接收数据,以查询方式发送数据。
UART初始化程序InitUART()见网络补充版(http://www.dpj.com.cn)。
2.2 上位机控制和存储模块
目前,Mircosoft公司的VC++6.0是基于Windows程序设计的主流开发工具之
凌阳单片机 语音信号 实时采集 SPCE061A 相关文章:
- 凌阳61单片机之按键无延时消抖(采用状态机编程思想(11-23)
- uC/OS-II在凌阳单片机SPCE061A上的移植(10-16)
- SPMC65P2102A在豆浆机中的应用(07-07)
- 基于SPMC65P2102A单片机作为豆浆机的主控芯片的应用(05-09)
- 基于SPMC65P2408A的电冰箱系统的应用(05-09)
- 基于SPMC75F2413A单片机的直流变频洗衣机的设计方法介绍(05-09)