怎样从音音频号中采集节拍信号?

怎样采集啊

音频信号采集

音频信号采集

  TI公司DSP芯片TMS320V

C5402具有独特的6总线 哈佛结构,使其能够6条流水线同时工作,工作频率达到100MHz。利用VC5402的2个多通道缓冲串行口(McBSP0和McBSP1)来实现与 AIC23的无缝连接。VC5402的多通道带缓冲的串行口在标准串口的基础上加了一个2K的缓冲区。每次串口发送数据时,CPU自动将发送缓冲中的数据 送出;而当接收数据时,CPU自动将收到的数据写入接收缓存。在自动缓冲方式下,不需每传送一个字就发一次中断,而是每通过一次缓冲器的边界,才产生中断 至CPU,从而减少频繁中断对CPU的影响。
  音频芯片采用TLV320 AIC23,它是TI公司的一款高性能立体声音频A/D,D/A放大电路。AIC23的模数转换和数模转换部件高度集成在芯片内部,采用了先进的过采样技 术。AIC23的外部硬件接口分为模拟口和数字口。模拟口是用来输入输出音频信号的,支持线路输入和麦克风输入;有两组数字接口,其一是由/CS、 SDIN、SCLK和MODE构成的数字控制接口。AIC23是一块可编程的音频芯片,通过数字控制口将芯片的控制字写入AIC23内部的寄存器,如采样 率设置,工作方式设置等,共有12个寄存器。音频控制口与DSP的通信主要由多通道缓冲串行口McBSP1来实现。

  AIC23通过数字音频口与DSP的McBSP0完成数据的通信,DSP做主 机,AIC23做从机。主机提供发送时钟信号BCLKX0和发送帧同步信号BFSX0。在这种工作方式下,接收时种信号BCLKR0和接收帧同步信号 BFSR0实际上都是由主机提供的。图1是AIC23与VC5402的接口连接。

  AIC23的数字音频接口支持S(通用音顿格式)模式,也支持DSP模式(专与TIDSP连接模式),在此采用DSP模式。DSP模式工作时,它的帧宽度可以为一个bit长。

  图2是音频信号采集的具体电路图。

  电路的设计和布线是信号采集过程中一个很重要的环节,它的效果直接关系到后期信号处理的 质量。对于DSP达类高速器件,外部晶体经过内部的PLL倍频以后可达上百兆。这就要求信号线走等长线和绘制多层电路板来消除电磁干扰和信号的反射。在两 层板的前提下,可以采取顶层与底层走交叉线、尽量加宽电源线和地线的宽度、电源线成"树杈型"、模拟区和数字区分开等原则,可以达到比较好的效果。

  音频AGC算法的实现

  AGC算法

  使放大电路的增益随信号强度的变化而自动调整的控制方法,就是AGC-自动增益控制。实现AGC可以是硬件电路,即AGC闭环电子电路,也可以是软件算法。本文主要讨论用软件算法来实现音频信号的AGC。

  音频AGC是音频自动增益控制算法,更为准确的说是峰值自动增益控制算法,是一种根据输 入音频信号水平自动动态地调整增益的机制。当音量(无论是捕捉到的音量还是再现的音量)超过某一门限值,信号就会被限幅。限幅指的是音频设备的输出不再随 着输入而变化,输出实质上变成了最大音量位置上的一条水平线;当检测到音频增益达到了某一门限时,它会自动减小增益来避免限幅的发生。另一方面,如果捕捉 到的音量太低时,系统将自动提高增益。当然,增益的调整不会使音量超过用户在调节向导中设置的值。图3是音频AGC算法的结构框图。

AGC算法的实现过程

  首先从串口获取音频数据,它是16位的整型数,一般来说,这些数都是比较小的,通过 AGC算法将输入的音频数据投影在一个固定区间内,从而使得不论输入的数据点数值大小都会等比例地向这个空间映射。一方面将获得的音频数据最大值与原来的 峰值进行比较,如果有新的峰值出现就计算新的增益系数;另一方面在一定的时间周期内获取一个新的峰值,这个峰值就具有检测性能,又与原峰值比较,然后就计 算新的增益系数。这个增益系数是相对稳定的。当音量加大时,信号峰值会自动增加,从而增益系数自动下降;当音量减小时,新的峰值会减小并且取代原来的峰 值,从而使峰值下降,使增益系数上升。最后输出的数据乘以新增益系数后映射到音频信号输入的投影区间内。

  图4是音频信号AGC算法的程序流程图。

  AGC_Coff是初始增益系数,初始值为1;maxAGC_in是增益峰值,初始值为0;time是采样点计数,门限值为4096;AGC_in是新的音频数据,MAXArrIn是新的音频增益峰值;映射区间【-20000,20000】。

  整个系统的软件部分为5人模块。系统主函数main( )、CMD文件、中断向量表、DSP5402头文件和专为C语言开发的库函数rtdx.lib。其中主函数部分是核心,主要包括:DSP器件初始化、 MCBSP1初始化、MCBSP0初始化、AIC23初始化(内部12个可编程寄存器设置)及算法程序等。

  在CCS2.0集成开发环境下,采用*.c语言和*.asm语言

相结合的方式编写程序。将编写的程序*.c、*.asm和链接程序*.cmd文件编译链接后生成执行目标文件*.out,通过仿真器将执行目标文件*.out下载到系统板上,经过调试、编译并运行,以音乐作为音频信号源输入到系统板上。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-07
乐曲或歌曲中,音的强弱有规律地循环出现,就形成节拍。具体是指在乐谱中每一小节的音符总长度,也就是音乐信号的强弱。将音频信号中的节拍变换成相应的节拍参数,对相应的参数进行计数,再输出来。如果是单片机的话,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。本回答被网友采纳
第2个回答  2013-11-11
采集啊
相似回答