当前位置:文档之家› 简易数字显示声音信号采集测量仪

简易数字显示声音信号采集测量仪

简易数字显示声音信号采集测量仪
简易数字显示声音信号采集测量仪

简易数字显示声音信号采集测量仪

摘要

本声音信号采集测量仪采用MSP430为中心控制系统,由键盘输入模块,液晶显示模块,信号滤波,放大模块,AD转换模块,声光报警模块,数据处理模块,其中在数据处理模块中,我们采用了真有效值处理电路和过零比较电路,在频率的测量过程中,误差小于1HZ,而且通过键盘的控制可实现1秒到3600秒的定时,以及液晶的分屏显示。整个设计不仅完成了所有的功能要求,而且超过了题目本身的性能指标。

一、方案设计和论证

1、数据处理

方案一:

如图所示:为了能够得到声音信号的频率值和声级数,我们将信号分为两路,一路通过真有效值电路后,送入AD转换后送入单片机,由单片机处理以后就可以得到信号的声级数,另一路信号通过过零比较电路后直接送入单片机,处理以后就可以得到频率值。

方案二:

如图所示:将声音信号放大以后通过AD转换电路直接送入FPGA,利用FPGA 对数据进行FFT变换,将变换以后的数据进行处理就可以直接得到信号的频率值和声级数,然后再将数据送回单片机。

通过上面两种方案的比较,我们发现两种方案各有优点,方案一的电路设计

相对来说要复杂一些,但在数据处理方面要简单一些,而且数据的精度也很高。方案二的电路设计相当简单,而且数据的处理速度很快,但由于要用到FFT算法,所以软件设计的难度增大了很多,经过综合的考虑,我们选择了方案一。

2、功率测量电路

方案一:直接用AD转换器采样音频输出的电压瞬时值,用单片机计算有效值和平均功率,原理框图如下图,但算法复杂,软件工作量大。

方案二:由于功放输出的频率范围在20HZ~20KHZ,故必须采用真有效值变换电路。此方案采用真有效值转换专用芯片,先得到音频信号电压的真有效值。再用AD转换器采样该有效值,直接用单片机计算平均功率,原理图如下,软件工作量小,精度高,速度快。

二、系统总框图

2.1:总体设计

音频信号通过MIC以后送入信号调理电路,将信号进行滤波,放大后分为两路,一路送入真有效值电路变换后送入AD转换电路,将数据送入单片机。

另一路送入过零比较电路后送入单片机。单片机对两路数据进行处理后就可以得到声级数和频率值,利用键盘做为人机接口,控制采样的时间,声光报警的频率范围,以及液晶显示分屏。具体框图如下:

2.2:音频信号放大电路设计

信号输入电压为100mV~5V ,为达到A/D 转换器最佳的转换电压需要对待测量信号进行放大和阻抗变换。前级信号调理电路采用一级跟随器和同相放大电路,将信号输入电压分为5档,如图3.1所示,取Ω=1002R 则由放大倍数公

式可求得R 值分别为:ΩΩΩΩΩk k 21470200100、、、、

。 本模块采用两片OP07构成一级跟随器和一级同相放大电路,主要用于实现系统阻抗变换和弱信号放大。由于AD 转换芯片的模拟输入端口为容性负载,对输入信号会造成严重的波形失真,采用两级运放可以消除误差,同时达到阻抗匹配的目的。

图1:音频信号放大电路

2.3 真有效值变换

负载网络和取样电阻上采集的是的交流电压信号,如果直接送单片机A/D 进行处理,会增大系统误差。为把系统误差控制在题目要求的范围内,我们在每一个信号的输入和输出级都进行有效的处理。为此,为测量交流电平电压有效值的测量,采用RMS-DC 变换器集成芯片AD536。频带很宽,它可以测量到频率为300kHz 、电压值在100mV 以上带有3dB 误差的信号电平。利用外部提供的参考电压,用户能方便设置0dB 电平,使其可以对应于从0.1V 到2V 之间的

任何有效值。

2.4过零比较电路

为了得到声音信号设频率值,我们将信号通过过零比较电路,电路主要有LM339构成,其输出电压和TTL,DTL,ECL,MOS,CMOS兼容,最大偏置电压是7mv,微分输入电压范围和电源电压相等。具体的电路如下图

图2、真有效值电路和过零比较电路

三:软件设计

单片机主要控制数据的采集,计算,键盘输入响应,液晶显示,以及声光报警模块的响应,具体过程如下图:

四系统调试与系统测试

4.1 系统调试

根据方案设计要求,调试过程公分三大部分,硬件调试,软件调试,软件和硬件联调。电路按模块逐个调试,各模块调试通过后在联调。程序先在最小系统板调试,通过后在软硬联调。

硬件调试主要是考虑怎么把各个模块的测量误差降到最低,把误差控制在最小范围内。A/D转换的精度、真有效值转换的测量误差、取样电阻的精度、放大电路的倍率等都是系统的主要误差来源。由于在系统的硬件设计中考虑到各个部

分电路的误差分配,尽量将误差降低到最小。

软件和硬件的联合调试过程中,我们运用的相应的软件补偿和硬件补偿措施,保证把误差控制在一个小范围内波动。

4.2 测试数据

频率的误差几乎可以忽略,满足了题目的要求。

五、结束语

在本次的设计中,我们达到了题目的要求,但在调试系统时,我们也发现了一些小问题,主要是由于单片机端口之间的干扰引起的,在改进的过程中,我们也学到了很多东西,相信通过以后的不断学习,我们的设计会更加完美。

五:附件

主要程序清单

#include

#include "jianpan.h"

#include "lcd.h"

#define CPU_F ((double)1000000)

#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))

#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

unsigned char dat_sheng[]={/*-- 文字: 声--*/

0x02,0x12,0xD2,0x52,0x52,0x52,0x52,0xDF,0x52,0x52,0x52,0x52,0xD2,0x12 ,0x02,0x00,

0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0x03,0x02,0x02,0x02,0x02,0x07,0x00, 0x00,0x00,

};

unsigned char dat_ji[]={/*-- 文字: 级--*/

0x20,0x30,0xAC,0x63,0x20,0x18,0x02,0x82,0x7E,0x82,0x42,0x72,0x4E,0xC 0,0x40,0x00,

0x10,0x13,0x11,0x49,0x29,0x91,0x8C,0x43,0x40,0x23,0x14,0x18,0x66,0xC1, 0x40,0x00,

};

unsigned char dat_pin[]={/*-- 文字: 频--*/

0x20,0x3C,0x20,0x20,0xBF,0x24,0x24,0x00,0xF2,0x1A,0xD6,0x12,0x12,0xF 2,0x02,0x00,

0x44,0x43,0x20,0x10,0x0B,0x04,0x43,0x40,0x27,0x18,0x07,0x08,0x10,0x27, 0x60,0x00,

};

unsigned char dat_lv[]={/*-- 文字: 率--*/

0x00,0x0C,0x14,0xA4,0x04,0x64,0x35,0xAE,0x64,0x24,0x14,0xA4,0x14,0x04 ,0x04,0x00,

0x08,0x0A,0x09,0x08,0x08,0x0A,0x0B,0xFE,0x0A,0x0B,0x0C,0x08,0x09,0x0 A,0x08,0x00,

};

unsigned char dat_zui[]={/*-- 文字: 最--*/

0x40,0x40,0xC0,0x5F,0x55,0x55,0xD5,0x55,0x55,0x55,0x55,0x5F,0x40,0x40 ,0x40,0x00,

0x20,0x20,0x3F,0x15,0x15,0x15,0xFF,0x48,0x23,0x15,0x09,0x15,0x23,0x61, 0x20,0x00,

};

unsigned char dat_da[]={/*-- 文字: 大--*/

0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20, 0x20,0x00,

0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,

0x40,0x00,

};

unsigned char dat_she[]={/*-- 文字: 设--*/

0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x4 0,0x40,0x00,

0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0 ,0x40,0x00,

};

unsigned char dat_zhi[]={/*-- 文字: 置--*/

0x00,0x20,0x2F,0xA9,0xA9,0xAF,0xE9,0xB9,0xA9,0xAF,0xA9,0xA9,0x2F,0x 20,0x00,0x00,

0x80,0x80,0x80,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0x80,0 x80,0x80,0x00,

};

unsigned char dat_bao[]={/*-- 文字: 报--*/

0x08,0x08,0x88,0xFF,0x48,0x28,0x00,0xFF,0xC1,0x41,0x41,0x49,0x51,0xCF ,0x00,0x00,

0x01,0x41,0x80,0x7F,0x00,0x00,0x00,0xFF,0x40,0x23,0x14,0x1C,0x33,0x60, 0x20,0x00,

};

unsigned char dat_jing[]={/*-- 文字: 警--*/

0x20,0x1A,0xFA,0xAF,0xAA,0xEF,0x0A,0xFA,0x10,0x8F,0x54,0x24,0x5C,0x 84,0x04,0x00,

0x02,0x02,0x02,0xEA,0xAA,0xAA,0xAB,0xAA,0xAB,0xAA,0xAA,0xEA,0x02,0 x02,0x03,0x00,

};

unsigned char dat_fan[]={/*-- 文字: 范--*/

0x44,0x94,0xA4,0x64,0x04,0x0F,0x04,0xE4,0x24,0x2C,0x2F,0x24,0xE4,0x04 ,0x04,0x00,

0x08,0x09,0xF8,0x04,0x03,0x00,0x00,0x3F,0x40,0x40,0x42,0x46,0x43,0x70, 0x00,0x00,

};

unsigned char dat_wei[]={/*-- 文字: 围--*/

0x00,0xFF,0x01,0x89,0xA9,0xA9,0xFF,0xA9,0xA9,0xA9,0xA9,0x09,0x01,0xF F,0x00,0x00,

0x00,0xFF,0x40,0x40,0x40,0x40,0x5F,0x40,0x48,0x50,0x4F,0x40,0x40,0xFF, 0x00,0x00,

};

unsigned char dat_shang[]={/*-- 文字: 上--*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x40,0x40,0x40,0x40,0x40,0x00, 0x00,0x00,

0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x60, 0x40,0x00,

};

unsigned char dat_xia[]={/*-- 文字: 下--*/

0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x22,0x62,0xC2,0x82,0x02,0x03, 0x02,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x00,0x00,0x00, 0x00,0x00,

};

unsigned char dat_xian[]={/*-- 文字: 限--*/

0xFE,0x02,0x32,0x4E,0x82,0x00,0xFE,0x4A,0xCA,0x4A,0x4A,0x4A,0x7E,0x 00,0x00,0x00,

0xFF,0x00,0x02,0x04,0x03,0x00,0xFF,0x40,0x20,0x03,0x0C,0x12,0x21,0x60 ,0x20,0x00,

};

unsigned char dat_mao[]={/*-- 文字: : --*/

0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00, 0x00,0x00

};

unsigned char dat_d[]={/*-- 文字: d --*/

0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10, 0x3F,0x20

};

unsigned char dat_B[]={/*-- 文字: B --*/

0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11, 0x0E,0x00

};

unsigned char dat_H[]={/*-- 文字: H --*/

/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/

0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21, 0x3F,0x20

};

unsigned char dat_Z[]={/*-- 文字: Z --*/

0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20, 0x18,0x00

};

unsigned char dat_dian[]={/*-- 文字: . --*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00, 0x00,0x00

};

unsigned char dat_0[]={/*-- 文字: 0 --*/

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10, 0x0F,0x00

};

unsigned char dat_1[]={/*-- 文字: 1 --*/

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20, 0x00,0x00

};

unsigned char dat_2[]={/*-- 文字: 2 --*/

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21, 0x30,0x00

};

unsigned char dat_3[]={/*-- 文字: 3 --*/

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11, 0x0E,0x00

};

unsigned char dat_4[]={/*-- 文字: 4 --*/

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F, 0x24,0x00

};

unsigned char dat_5[]={/*-- 文字: 5 --*/

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11, 0x0E,0x00

};

unsigned char dat_6[]={/*-- 文字: 6 --*/

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11, 0x0E,0x00

};

unsigned char dat_7[]={/*-- 文字: 7 --*/

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00, 0x00,0x00

};

unsigned char dat_8[]={/*-- 文字: 8 --*/

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22, 0x1C,0x00

};

unsigned char dat_9[]={/*-- 文字: 9 --*/

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11, 0x0F,0x00

};

unsigned char dat_kong[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00

};

struct SHENGJI_SHIJIAN {

unsigned char fen_shi;

unsigned char fen_ge;

unsigned char miao_shi;

unsigned char miao_ge;

unsigned int shengji;

};

struct SHENGJI_SHIJIAN shengji_shijian [10];

unsigned char *dat_shu[10]={dat_0,dat_1,dat_2,dat_3,dat_4,dat_5,dat_6,dat_7,dat_8,dat_9} ;

unsigned int max_shengji[10]={0};

void xianshi_db();

void xianshi_zuida();

void xianshi_pinlv();

void xianshi_10ge();

void xianshi_shezhi_hz();

void CSH_shuzhu();

void Capture_f();

unsigned char key=0; //键盘值

unsigned char j=1; //捕获的是第几个数

unsigned int buhuo_zhi=0,buhuo_buff=0;

unsigned int ADOUT=0;

unsigned int AD_max=0;

unsigned char flag_ping=0; //换屏0:主屏,1:子屏,2:子屏,3:子屏unsigned char flag_queren_f=0; //确认频率报警范围标志

unsigned int flag_max_min=0; //调整MIN还是MAX标志

unsigned char miao_ge=0,miao_shi=0,fen_ge=0,fen_shi=0;

unsigned char SD_miao_ge=0,SD_miao_shi=0,SD_fen_ge=0,SD_fen_shi=0; unsigned int MIN_HZ=0,MAX_HZ=0; //设置最大和最小的频率报警范围

int main()

{

unsigned int i=0;

// Stop watchdog timer to prevent time out reset

WDTCTL = WDTPW + WDTHOLD;

P2DIR &= ~BIT0; // P2.0 输入

P2SEL |= BIT0; // P2.0 TA2

init_jianpan();

lcd_init(1);

lcd_init(0);

/*******************************************************************************/ struct SHENGJI_SHIJIAN chushihua; //初始化shengji_shijian [10]; chushihua.fen_shi=0;

chushihua.fen_ge=0;

chushihua.miao_shi=0;

chushihua.miao_ge=0;

chushihua.shengji=0;

for(i=0;i<10;i++)

shengji_shijian[i]=chushihua;

/*******************************************************************************/

zhiti(0,0,dat_sheng,1); //显示声级: dB

zhiti(0,1,dat_ji,1);

zhi_8_16(0,4,dat_mao,1);

zhi_8_16(0,6,dat_d,0);

zhi_8_16(0,7,dat_B,0);

/*******************************************************************************/

zhiti(2,0,dat_pin,1); //显示频率: HZ

zhiti(2,1,dat_lv,1);

zhi_8_16(2,4,dat_mao,1);

zhi_8_16(2,6,dat_H,0);

zhi_8_16(2,7,dat_Z,0);

/*******************************************************************************/

zhiti(4,0,dat_zui,1); //显示最大声级: dB

zhiti(4,1,dat_da,1);

zhiti(4,2,dat_sheng,1);

zhiti(4,3,dat_ji,1);

zhi_8_16(4,0,dat_mao,0);

zhi_8_16(4,6,dat_d,0);

zhi_8_16(4,7,dat_B,0);

/*******************************************************************************/

zhi_8_16(6,5,dat_shu[0],1); //显示00:00

zhi_8_16(6,6,dat_shu[0],1);

zhi_8_16(6,7,dat_mao,1);

zhi_8_16(6,0,dat_shu[0],0);

zhi_8_16(6,1,dat_shu[0],0);

/*******************************************************************************/ ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_6;

ADC12CTL1 = SHP; // 内部定时采样

ADC12MCTL0 = INCH_15 + SREF_1; // 选择采样通道A15 ADC12IE = 0x01; // 使能ADC12IFG.0

for (i = 0; i < 0x3600; i++); // 延时

ADC12CTL0 |= ENC; // 使能转换

/******************************************************************************* TACCR2=0; // 清TACCR2寄存器

TACCTL2 = CM_2 + CAP +CCIS_0; // 上升下降沿都捕获,同步捕获+ SCS

P2DIR &= ~BIT0; // P2.0 输入

P2SEL |= BIT0; // P2.0 TA2

TACTL |=TASSEL1+MC_2+ TACLR; // Timer_a 增计数模式

// TACCTL2|=CCIE; //使能CCR2中断

******************************************************************************/

__enable_interrupt(); // 开中断

while(1)

{

ADC12CTL0 |= ADC12SC; // 开始采样

delay_ms(100);

TACTL |= TACLR; // 清除TAR

Capture_f();

delay_ms(300);

xianshi_db();

xianshi_zuida();

xianshi_pinlv();

if(flag_ping==0)

{ //整理屏幕,因为当显示时间时它后面的不稳定,这里旨在清除后面的内容

zhi_8_16(6,2,dat_kong,0);

zhi_8_16(6,3,dat_kong,0);

zhi_8_16(6,4,dat_kong,0);

zhi_8_16(6,5,dat_kong,0);

zhi_8_16(6,6,dat_kong,0);

zhi_8_16(6,7,dat_kong,0);

}

xianshi_10ge();

xianshi_shezhi_hz();

}

// return 0;

}

/*

#pragma vector=TIMERA1_VECTOR

__interrupt void Timer_A1 (void)

{

j++;

switch(TAIV)

{

case 2: break;

case 4:

if(j==1)

buhuo_buff=TACCR2;

else

{

TACCTL2&=~CCIE; //禁止CCR2中断

buhuo_zhi=TACCR2-buhuo_buff;

TACCR2=0;

TACTL|=TACLR;

j=0;

}

break;

case 10: break;

}

}

*/

#pragma vector=ADC12_VECTOR

__interrupt void ADC12ISR(void)

{

ADOUT = ADC12MEM0>>2; // 保存结果

__bic_SR_register_on_exit(LPM0_bits); //退出低功耗LPM0

}

void xianshi_db()

{

if(AD_max

AD_max=ADOUT;

if(flag_ping==0)

{

/*******************************************************************************/ zhiti(0,0,dat_sheng,1); //显示声级: dB

zhiti(0,1,dat_ji,1);

zhi_8_16(0,4,dat_mao,1);

zhi_8_16(0,6,dat_d,0);

zhi_8_16(0,7,dat_B,0);

/*******************************************************************************/ zhi_8_16(0,1,dat_shu[ADOUT/1000],0); //100db

zhi_8_16(0,2,dat_shu[ADOUT/100%10],0); //10db

zhi_8_16(0,3,dat_shu[ADOUT/10%10],0); //1db

zhi_8_16(0,4,dat_dian,0); //小数点

zhi_8_16(0,5,dat_shu[ADOUT%10],0); //0.1db

}

}

void xianshi_zuida()

{

if(flag_ping==0)

{

/*******************************************************************************/ zhiti(4,0,dat_zui,1); //显示最大声级: dB

zhiti(4,1,dat_da,1);

zhiti(4,2,dat_sheng,1);

zhiti(4,3,dat_ji,1);

zhi_8_16(4,0,dat_mao,0);

zhi_8_16(4,6,dat_d,0);

zhi_8_16(4,7,dat_B,0);

/*******************************************************************************/ zhi_8_16(4,1,dat_shu[AD_max/1000],0); //100db

zhi_8_16(4,2,dat_shu[AD_max/100%10],0); //10db

zhi_8_16(4,3,dat_shu[AD_max/10%10],0); //1db

zhi_8_16(4,4,dat_dian,0); //小数点

zhi_8_16(4,5,dat_shu[AD_max%10],0); //0.1db

}

}

void Capture_f()

{

unsigned int first_value_f,second_value_f;

unsigned int cap_value_f;

while(!(TACCTL2&CCIFG)); //查CCR1标志位

first_value_f=TACCR2; //第一个捕获值存入first_value

TACCTL2 &=~CCIFG; //清CCR1的标志位

while(!(TACCTL2&CCIFG)); //查CCR1标志位TACCTL2 &=~MC1; //关定时器A

cap_value_f=second_value_f - first_value_f ; //+3005

buhuo_zhi=(1048576/cap_value_f);

_NOP();

}

void xianshi_pinlv()

{

unsigned int pinlv_zhi=0;

pinlv_zhi=buhuo_zhi;

if(flag_ping==0)

{

/*******************************************************************************/

zhiti(2,0,dat_pin,1); //显示频率: HZ

zhiti(2,1,dat_lv,1);

zhi_8_16(2,4,dat_mao,1);

zhi_8_16(2,6,dat_H,0);

zhi_8_16(2,7,dat_Z,0);

/*******************************************************************************/ zhi_8_16(2,1,dat_shu[pinlv_zhi/10000],0); //10KHZ

zhi_8_16(2,2,dat_shu[pinlv_zhi/1000%10],0); //1KHZ

zhi_8_16(2,3,dat_shu[pinlv_zhi/100%10],0); //100HZ zhi_8_16(2,4,dat_shu[pinlv_zhi/10%10],0); //10HZ

zhi_8_16(2,5,dat_shu[pinlv_zhi%10],0); //1HZ }

if(flag_queren_f)

{

if((pinlv_zhi>=MIN_HZ)&&(pinlv_zhi<=MAX_HZ))

{

P4DIR|=BIT0;

P4OUT|=BIT0;

}

else

{

P4DIR|=BIT0;

P4OUT&=~BIT0;

}

}

else

{

P4DIR|=BIT0;

P4OUT&=~BIT0;

}

}

#pragma vector = TIMERB0_VECTOR

__interrupt void ta0_isr(void)

{

unsigned int i=0;

unsigned char flag_luyong=1;

if(miao_ge<9)

{

miao_ge++;

}

else

{

miao_ge=0;

miao_shi++;

if(miao_shi==6)

{

miao_shi=0;

fen_ge++;

if(fen_ge==9)

{

fen_ge=0;

fen_shi++;

if(fen_shi==6)

{

fen_shi=0;

}

}

}

}

if((SD_fen_shi==fen_shi)&&(SD_fen_ge==fen_ge)&&(SD_miao_shi==miao_s hi)&&(SD_miao_ge==miao_ge))

TBCCTL0 &=~CCIE;

zhi_8_16(6,5,dat_shu[fen_shi],1);

zhi_8_16(6,6,dat_shu[fen_ge],1);

(ADOUT!=shengji_shijian[2].shengji)&&(ADOUT!=shengji_shijian[3].shengji)& &

(ADOUT!=shengji_shijian[4].shengji)&&(ADOUT!=shengji_shijian[5].shengji)& &

(ADOUT!=shengji_shijian[6].shengji)&&(ADOUT!=shengji_shijian[7].shengji)& &

(ADOUT!=shengji_shijian[8].shengji)&&(ADOUT!=shengji_shijian[9].shengji) )

{

shengji_shijian[i].shengji=ADOUT;

shengji_shijian[i].fen_shi=fen_shi;

shengji_shijian[i].fen_ge=fen_ge;

shengji_shijian[i].miao_shi=miao_shi;

shengji_shijian[i].miao_ge=miao_ge;

flag_luyong=0;

}

}

}

}

void xianshi_10ge()

{

unsigned char i=0,j=0;

if(flag_ping==1)

{ // 显示前4个最大值出现时间和最大值

for(i=0,j=0;i<7;i+=2,j++)

{

zhi_8_16(i,1,dat_shu[shengji_shijian[j].fen_shi],1);

zhi_8_16(i,2,dat_shu[shengji_shijian[j].fen_ge],1);

zhi_8_16(i,3,dat_mao,1);

zhi_8_16(i,4,dat_shu[shengji_shijian[j].miao_shi],1);

zhi_8_16(i,5,dat_shu[shengji_shijian[j].miao_ge],1);

}

}

if(flag_ping==2)

{

for(i=0,j=4;i<7;i+=2,j++)

{

zhi_8_16(i,1,dat_shu[shengji_shijian[j].fen_shi],1);

zhi_8_16(i,2,dat_shu[shengji_shijian[j].fen_ge],1);

zhi_8_16(i,3,dat_mao,1);

zhi_8_16(i,4,dat_shu[shengji_shijian[j].miao_shi],1);

zhi_8_16(i,5,dat_shu[shengji_shijian[j].miao_ge],1);

zhi_8_16(i,1,dat_shu[shengji_shijian[j].shengji/1000],0);

zhi_8_16(i,2,dat_shu[shengji_shijian[j].shengji/100%10],0);

zhi_8_16(i,3,dat_shu[shengji_shijian[j].shengji/10%10],0);

zhi_8_16(i,4,dat_dian,0);

zhi_8_16(i,5,dat_shu[shengji_shijian[j].shengji%10],0);

zhi_8_16(i,6,dat_d,0);

zhi_8_16(i,7,dat_B,0);

}

}

if(flag_ping==3)

{

for(i=0,j=8;i<3;i+=2,j++)

{

zhi_8_16(i,1,dat_shu[shengji_shijian[j].fen_shi],1);

zhi_8_16(i,2,dat_shu[shengji_shijian[j].fen_ge],1);

zhi_8_16(i,3,dat_mao,1);

zhi_8_16(i,4,dat_shu[shengji_shijian[j].miao_shi],1);

zhi_8_16(i,5,dat_shu[shengji_shijian[j].miao_ge],1);

zhi_8_16(i,1,dat_shu[shengji_shijian[j].shengji/1000],0);

zhi_8_16(i,2,dat_shu[shengji_shijian[j].shengji/100%10],0);

zhi_8_16(i,3,dat_shu[shengji_shijian[j].shengji/10%10],0); //1db zhi_8_16(i,4,dat_dian,0);

zhi_8_16(i,5,dat_shu[shengji_shijian[j].shengji%10],0);

zhi_8_16(i,6,dat_d,0);

zhi_8_16(i,7,dat_B,0);

}

}

}

void xianshi_shezhi_hz()

{

if(flag_ping==4)

{

zhiti(0,0,dat_she,1); //显示设置频率报警范围

zhiti(0,1,dat_zhi,1); // 频率上限HZ

zhiti(0,2,dat_pin,1); // 频率下限HZ

zhiti(0,3,dat_lv,1); // 设置MAXorMIN

zhiti(0,0,dat_bao,0);

zhiti(0,1,dat_jing,0);

zhiti(0,2,dat_fan,0);

zhiti(0,3,dat_wei,0);

zhiti(2,0,dat_pin,1);

zhiti(2,1,dat_lv,1);

zhiti(2,2,dat_shang,1);

zhiti(2,3,dat_xian,1);

zhi_8_16(2,1,dat_shu[MAX_HZ/10000],0); //10KHZ

zhi_8_16(2,2,dat_shu[MAX_HZ/1000%10],0); //1KHZ

zhi_8_16(2,3,dat_shu[MAX_HZ/100%10],0); //100HZ zhi_8_16(2,4,dat_shu[MAX_HZ/10%10],0); //10HZ

zhi_8_16(2,5,dat_shu[MAX_HZ%10],0); //1HZ

zhi_8_16(2,6,dat_H,0);

zhi_8_16(2,7,dat_Z,0);

zhiti(4,0,dat_pin,1);

zhiti(4,1,dat_lv,1);

zhiti(4,2,dat_xia,1);

zhiti(4,3,dat_xian,1);

zhi_8_16(4,1,dat_shu[MIN_HZ/10000],0); //10KHZ

zhi_8_16(4,2,dat_shu[MIN_HZ/1000%10],0); //1KHZ

zhi_8_16(4,3,dat_shu[MIN_HZ/100%10],0); //100HZ

zhi_8_16(4,4,dat_shu[MIN_HZ/10%10],0); //10HZ

zhi_8_16(4,5,dat_shu[MIN_HZ%10],0); //1HZ

zhi_8_16(4,6,dat_H,0);

zhi_8_16(4,7,dat_Z,0);

if(flag_max_min==0)

{

zhiti(6,2,dat_she,1);

zhiti(6,3,dat_zhi,1);

zhiti(6,0,dat_shang,0);

zhiti(6,1,dat_xian,0);

}

else

{

zhiti(6,2,dat_she,1);

zhiti(6,3,dat_zhi,1);

zhiti(6,0,dat_xia,0);

zhiti(6,1,dat_xian,0);

}

}

}

void CSH_shuzhu()

{

unsigned char i=0;

struct SHENGJI_SHIJIAN chushihua; //初始化shengji_shijian [10]; chushihua.fen_shi=0;

chushihua.fen_ge=0;

chushihua.miao_shi=0;

chushihua.miao_ge=0;

chushihua.shengji=0;

for(i=0;i<10;i++)

shengji_shijian[i]=chushihua;

}

基于MATLAB 的声音信号采集系统(论文)

基于MATLAB 的声音信号采集系统 野龙平 (陕西师范大学电子信息科学与技术,陕西) 摘要: 声音是各种信号传递与交流最直接的体现,因此对声音信号的研究有十分重要的意义。本文主要针对Matlab指令系统对声音信号的采集,作者利用Matlab 提供的数据采集工具箱, 介绍了倆种采集方法,简单分析并比较其优缺点。基于matlab的数据采集系统, 具有实现简单、性价比和灵活度高的优点。 关键词: Matlab; 数据采集 0 引言 随着科技的发展,对于语音信号的采集已经有很多种方法,如基于单片机技术、VC,C++等编程、纯硬件电路,本文介绍的方法主要通过一款软件MATLAB。它是MathWorks 公司推出的一种面向工程和科学运算的交互式计算软件, 其中包含了一套非常实用的工具-- 数据采集工具箱。使用此工具箱更容易将实验测量、数据分析和可视化的应用集合在一起。数据采集工具箱提供了一整套的命令和函数, 通过调用这些命令和函数, 可以直接控制数据采集设备的数据采集。 作者简单介绍了一种用声卡进行语音信号采集和MATLAB 的数据采集工具箱进行分析处理的语音信号采集系统。经实验证明, 该系统可实现在线连续采集语音信号并进行分析和处理, 具有实现简单、性价比和灵活度高的特点。 1 语音数据采集系统设计 MATLAB 中提供了强大的数据采集工具箱( DAQ- Data Acquisition Toolbox) , 可满足控制声卡进行数据采集的要求。用户通过调用MATLAB 命令, 可对采集的数据进行分析和处理, 为用户带来了极大的方便。 语音数据采集过程如图1 所示。

图1 声卡采集声音信号有两种方式: 传输线输入方式(LineIn) 和麦克风输入( MicIn) 方式。LineIn 方式是通过传输线把其他声音设备, 如录音机等设备的音频输出信号连接到声卡, 通过声卡记录数据存入计算机。 本系统采用MicIn 方式, 即用麦克风接收语音通过声卡将音频信号存入计算机。利用MicIn 方式通过声卡采集数据有两种方法: 方法一是采用对声卡产生一个模拟输入对象进行采集, 方法二是直接利用MATLAB 数据采集箱中提供的的函数命令进行采集。 1. 1 方法1 本系统是以声卡为对象利用MATLAB 数据采集工具箱提供的环境完成数据采集过程, 麦克风成为数据采集系统中的传感器。数据采集过程与其他硬件设备无关, 只与声卡有关, 因此应对声卡产生一个模拟输入对象(AI) 。 数据采集过程的具体实现: 1) 初始化: 创建设备对象。 ai= analoginput(‘ winsound ’ ) 2) 配置: 根据数据采集硬件设备的特性, 增加通道和控制数据采集的行为。为AI 添加1 个通道, 设置采样频率和采样时间。 addchannel( ai, 1) freq= 8000; % 采样频率fs8000Hz set( AI, sampleRate, freq) %为模拟输入设备设置采样频率 duration= 2; %采样时间为2 秒 set (AI, SamplesPerTriffer, duration* freq) ; % 为模拟输入设备设置触发时间 3) 执行: 启动设备对象, 采集数据。 start( ai) ; %启动设备对象 data= getdata( ai) ; % 获得采样数据 4) 终止: 删除设备对象。 stop( ai) ; % 停止设备对象 语音信号输入 声卡 Matlab 数据采集箱 计算机

信号处理实验七音频频谱分析仪设计与实现

哈尔滨工程大学 实验报告 实验名称:离散时间滤波器设计 班级:电子信息工程4班 学号: 姓名: 实验时间:2016年10月31日18:30 成绩:________________________________ 指导教师:栾晓明 实验室名称:数字信号处理实验室哈尔滨工程大学实验室与资产管理处制

实验七音频频谱分析仪设计与实现 一、 实验原理 MATLAB 是一个数据分析和处理功能十分强大的工程实用软件,其数据采集工具箱为实现数据的输入和输出提供了十分方便的函数命令。本实验要求基于声卡和MTLAB 实现音频信号频谱分析仪的设计原理与实现,功能包括: (1)音频信号输入,从声卡输入、从WAV 文件输入、从标准信号发生器输入; (2)信号波形分析,包括幅值、频率、周期、相位的估计、以及统计量峰值、均值、均方值和方差的计算。 (3)信号频谱分析,频率、周期的统计,同行显示幅值谱、相位谱、实频谱、虚频谱和功率谱的曲线。 1、频率(周期)检测 对周期信号来说,可以用时域波形分析来确定信号的周期,也就是计算相邻的两个信号波峰的时间差、或过零点的时间差。这里采用过零点(ti)的时间差T(周期)。频率即为f = 1/T ,由于能够求得多个T 值(ti 有多个),故采用它们的平均值作为周期的估计值。 2、幅值检测 在一个周期内,求出信号最大值ymax 与最小值ymin 的差的一半,即A = (ymax - ymin)/2,同样,也会求出多个A 值,但第1个A 值对应的ymax 和ymin 不是在一个周期内搜索得到的,故以除第1个以外的A 值的平均作为幅值的估计值。 3、相位检测 采用过零法,即通过判断与同频零相位信号过零点时刻,计算其时间差,然后换成相应的相位差。φ=2π(1-ti/T),{x}表示x 的小数部分,同样,以φ的平均值作为相位的估计值。 频率、幅值和相位估计的流程如图1所示。 4、数字信号统计量估计 (1) 峰值P 的估计 在样本数据x 中找出最大值与最小值,其差值为双峰值,双峰值的一半即为峰值。 P=0.5[max(yi)-min(yi)] (2)均值估计 i N i y N y E ∑== 1 )( 式中,N 为样本容量,下同。 (3) 均方值估计 () 20 2 1 ∑== N i i y N y E (4) 方差估计 ∑=-=N i i Y E y N y D 0 2))((1)(

项目二第二课时 了解声音和图像的数字化

第一单元数据与信息 项目二探究计算机中的数据表示———认识数据编码 第二课时了解声音和图像的数字化 ■教材分析 本项目旨在落实课标中“知道数据编码的基本方式”这一内容要求,让学生在体验数值、文本、声音、图像的基本编码方法的过程中,了解在数字化工具中存储数据的一般原理与方法。这部分内容理论性强,且对于高中生有一定难度。 教材继续延用“鸟类研究”这一项目情境,从“将鸟类研究过程中采集的数据数字化后存入计算机”这一需求出发,以生活中的编码为切入点,按照各类数据编码的原理及特点设计了三个活动———从树牌号认识编码、了解数值数据和文本数据的编码、了解声音和图像的数字化,引导学生探究各类数据在计算机中的表示方法,学习数值、文本、声音、图像等类型数据的基本编码方法,增强信息意识、发展计算思维、提升数字化学习能力。 ■教学目标 (1)经历声音数据数字化的过程,掌握声音数据数字化的基本方法,了解声音数字化的基本原理,知道采样频率、量化位数和声道数对数字化音频文件大小及效果的影响。 (2)经历图像数字化的过程,掌握图像数字化的基本方法,了解图像数字化的基本原理,知道分辨率和量化位数对位图的影响。 (3)亲历方案设计、对比分析、探究实验等学习活动,体会运用信息技术开展学习、解决问题的思想与方法。 (4)在数字化学习过程中掌握数字化学习的策略和方法,能够根据需要选用恰当的方法及合适的数字化工具和资源开展有效学习。 ■教学准备 (1)软硬件环境:机房,音频编辑软件,图像处理软件。 (2)教学素材:各类数据编码实例和编码表,用于体验活动的声音文件和图像文件。 ■教学重点 数字化过程的三个步骤:采样、量化、编码。

labview声音采集系统

虚拟仪器技术 姓名:史昌波 学号:2131391 指导教师:孙来军 院系(部所):电子工程学院专业:控制工程

目录 1、前言 (3) 2、声卡的硬件结构和特性 (3) 2.1声卡的作用和特点 (3) 2.2声卡的构造 (5) 3、LABVIEW中与声卡相关的函数节点 (5) 4、LABVIEW程序设计 (6) 4.1程序原理 (6) 4.2程序结构 (7) 4.3结果分析 (9) 5、结束语 (9) 6、参考文献 (10)

基于声卡的数据采集与分析 1、前言 虚拟仪器技术是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。在虚拟仪器系统中,硬件解决信号的输入和输出,软件可以方便地修改仪器系统的功能,以适应不同使用者的需要。其中硬件的核心是数据采集卡。目前市售的数据采集卡价格与性能基本成正比,一般比较昂贵1。 随着DSP(数字信号处理)技术走向成熟,计算机声卡可以成为一个优秀的数据采集系统,它同时具有A/D和D/A转换功能,不仅价格低廉,而且兼容性好、性能稳定、灵活通用,驱动程序升级方便,在实验室中,如果测量对象的频率在音频范围,而且对指标没有太高的要求,就可以考虑使用声卡取代常规的DAQ设备。而且LABVIEW中提供了专门用于声卡操作的函数节点,所以用声卡搭建数据采集系统是非常方便的2。 2、声卡的硬件结构和特性 2.1声卡的作用和特点 声卡的主要功能就是经过DSP(数字信号处理)音效芯片的处理,进行模拟音频信号的与数字信号的转换,在实际中,除了音频信号以外,很多信号都在音频范围内,比如机械量信号,某些载波信号等,当我们对这些信号进行采集时,使用声卡作为采集卡是一种很好的解决方案。 声卡的功能主要是录制与播放,编辑与合成处理,MIDI接口三个部分3。 (1)录制与播放

matlab频谱分析仪

频谱分析仪 摘要频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量,是一种多用途的电子测量仪器。随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向。虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。本文介绍了一种使用GUI工具箱用matlab实现的简易虚拟频谱分析仪的设计方法。 关键词matlab,频谱分析仪,时域分析,频域分析

目录 1概述 (3) 2技术路线 (4) 3实现方法 (5) 3.1搭建GUI界面 (5) 3.2信号输入 (6) 3.2.1选择信号输入 (6) 3.2.2声卡输入 (7) 3.2.3读取wav文件 (7) 3.2.4信号发生器输入 (7) 3.3时域分析 (8) 3.4频域分析 (9) 3.5仿真 (10) 3.5.1声卡输入 (10) 3.5.2读取wav文件 (10) 3.5.3信号发生器 (11) 4存在的问题 (15) 5致谢...................................................................................................... 错误!未定义书签。参考文献 (15)

1概述 MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件。可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。MATLAB自带了强大的GUl工具[1]。在本文中,将利用MATLAB的GUI工具,设计出数字频谱分析仪。 频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量,可用以测量放大器和滤波器等电路系统的某些参数,是一种多用途的电子测量仪器。它又可称为频域示波器、跟踪示波器、分析示波器、谐波分析器、频率特性分析仪或傅里叶分析仪等。现代频谱分析仪能以模拟方式或数字方式显示分析结果,能分析1赫兹以下的甚低频到亚毫米波段的全部无线电频段的电信号[2]。目前已经有许多较成熟的频谱分析软件,如SpectraLAB、RSAVu、dBFA等[3]。本文将给出的则是通过MATLAB软件实现的基于FFT的数字频谱分析仪。 FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步[4]。 通过此次设计,能进一步掌握MATLAB软件开发过程的基本理论、基本知识和基本技能,熟悉基于MATLAB平台的若干信号处理系统开发及调试方法,且成本低,易于实现,容易修改,并可以进行仿真。该设计的进行可以为我们以后的学习工作奠定一定的基础。

声音信号的获取与处理

实验一声音信号的获取与处理 声音媒体是较早引入计算机系统的多媒体信息之一,从早期的利用PC机内置喇叭发声,发展到利用声卡在网上实现可视电话,声音一直是多媒体计算机中重要的媒体信息。在软件或多媒体作品中使用数字化声音是多媒体应用最基本、最常用的手段。通常所讲的数字化声音是数字化语音、声响和音乐的总称。在多媒体作品中可以通过声音直接表达信息、制造某种效果和气氛、演奏音乐等。逼真的数字声音和悦耳的音乐,拉近了计算机与人的距离,使计算机不仅能播放声音,而且能“听懂”人的声音是实现人机自然交流的重要方面之一。 采集(录音)、编辑、播放声音文件是声卡的基本功能,利用声卡及控制软件可实现对多种音源的采集工作。在本实验中,我们将利用声卡及几种声音处理软件,实现对声音信号的采集、编辑和处理。 实验所需软件: Windows录音机(Windows98内含) Creative WaveStudio(Creative Sound Blaster系列声卡自带) Syntrillium Cool Edit 2000(下载网址:https://www.doczj.com/doc/8a9486514.html,) 进行实验的基本配置: Intel Pentium 120 CPU或同级100%的兼容处理器 大于16MB的内存 8位以上的DirectX兼容声卡 1.1 实验目的和要求 本实验通过麦克风录制一段语音信号作为解说词并保存,通过线性输入录制一段音乐信号作为背景音乐并保存。为录制的解说词配背景音乐并作相应处理,制作出一段完整的带背景音乐的解说词。 1.2 预备知识 1.数字音频和模拟音频 模拟音频和数字音频在声音的录制和播放方面有很大不同。模拟声音的录制是将代表声音波形的电信号转换到适当的媒体上,如磁带或唱片。播放时将纪录在媒体上的信号还原为波形。模拟音频技术应用广泛,使用方便。但模拟的声音信号在多次重复转录后,会使模拟信号衰弱,造成失真。 数字音频就是将模拟的(连续的)声音波形数字化(离散化),以便利用数字计算机进行处理,主要包括采样和量化两个方面。 2.数字音频的质量 数字音频的质量取决于采样频率和量化位数这两个重要参数。采样频率是对声音波形每秒钟进行采样的次数。人耳听觉的频率上限在2OkHz左右,根据采样理论,为了保证声音

Adobe-Audition-系列教程(二):频谱分析仪

Adobe Audition系列教程(二):频谱分析仪 频谱分析仪是研究信号频谱特征的仪器,在电子技术一日千里的今天,是研究、开发、调试维修中的有力武器。现代频谱分析仪都趋向于智能化,虚拟仪器技术广泛应用,有些就是以专用的计算机系统为核心设计的。其结果是结构大大简化、性能飞速提高。当然专业的频谱分析仪就比示波器更加昂贵了,业余爱好者更难用上。不过不必灰心,我们可以充分利用AdobeAudition的频谱分析功能,让你拥有精确频谱分析仪的美梦成真!? 1. 频谱显示模式? Adobe Audition本身有一种“频谱显示”模式。先打开一段波形,或用《妙用Adobe Audition:数字存储示波器》一文介绍的方法录制一段波形,即可进行频谱分析。这里我们新建一段20秒的对数扫频信号(本文大多选用直接建立的波形,以便了解信号原始波形的标准频谱特征),然后选择“View=>Spectral View”(视图=>频谱),如图1,或点击快捷工具栏的“Toggle between Spectral and Waveform views”(切换频谱视图/波形视图)按扭,即可将波形以频谱显示的方式显示出来,如图2。扫频的频谱显示见图3。 图1

图2 图3 可以看到,横轴为时间,纵轴为频率指示。每个时刻对应的波形频谱都被显示出来了,可以看到扫描速度是指数增加的,即将频率轴取对数时扫描速度是线性的。如图中光标处18秒处频谱指示约11KHz。实际上频谱指示的颜色是代表频谱能量的高低的,颜色从深蓝到红再到黄,指示谱线电平由低到高的变化。这实际上跟地图的地形鸟瞰显示是比较相似的,看图4频谱复杂变化的声音频谱就更容易理解这点了。 图4

声音的数字化表示

声音表达信息的特点及数字化表示 惠水民族中学濛江校区信息技术教研组集体备课 主备人:李秋霞授课人: 一、教材分析 本节内容是《多媒体技术应用》选修教材中的第三章第一节“多媒体作品中的声音”,声音同视频、动画一样,都是重要的信息表达方式,由于数字化音频在加工、存储、传递等方面的方便性,它正成为信息化社会人们进行信息交流的重要手段。因此这一节要让学生了解声音数字化表示的基本方法,激发学生的兴趣,同时教师要引导学生利用数字化声音进行信息交流。 二、教学目标 考虑到学生已有的认知结构和心理特征,根据教材结构与内容分析,制定的教学目标如下: 知识与技能 通过本节课的教学,让学生理解声音表达信息的特点,感受声音在人类表达、交流中的重要作用;了解数字音频与模拟音频的区别、体验声音的数字化过程以及了解midi音乐的特点。 过程与方法 通过小组合作探究学习,使掌握本节课的教学内容,同时培养学生自主学习与合作探究学习的素养。 情感态度与价值观 培养学生自主学习能力与团队合作能力,增强学生自主学习的意识、提高学生发现问题、解决问题的能力。同时通过学生自主学习,让他们明白“要知此事须躬行”的人声哲理。 三、教学重难点

教学重点:深入了解声音表达信息的特点,理解声音数字化表示基本方法。 教学难点:掌握模拟音频转换数字音频过程,掌握声音数据容量的计算。 四、学情分析: 在前面已经学习了图形、图像的数字化,由于学生的水平参差不齐,大部分学生已经习惯由老师来灌输知识,学生自主学习和小组合作能力缺乏,自我学习意识教差,所以需要教师引导学生作为主体在课堂发挥。 五、教学方法 兴趣引导、任务驱动、小组合作探究 考虑到学生认知方式,从实际生活入手,用学生感兴趣的内容,借助多媒体手段展示,并用语言激发学生学习的兴趣和主动性,并引导学生进一步的探究,让学生以自主探究和小组合作的方式来获取知识,组长组织本组同学讨论交流,由基础较好的学生带动其他组员共同深入实践学习,教师巡视并给以帮助提示。 六、教学课时 1课时 七、教学过程 一、巧设导入、激发兴趣(3分钟) 播放惠水民族中学濛江校区的校歌《永不停步》的MV前27秒把音频分离出来并删掉,后面加上音频),教师提问:观看有音频和没有音频的MV,有什么感想? 学生回答:有音频的感觉很好… 师生共同总结声音表达信息的特点:声音是人类社会最古老的信息媒体,也是我们日常生活中使用频率最高的信息媒体。二、小组合作探究、深化知识(20分钟)

音频信号分析与处理

实验三音频信号的分析与处理1 一、实验目的 1.掌握音频信号的采集以及运用Matlab软件实现音频回放的方 法; 2.掌握运用Matlab实现对音频信号的时域、频谱分析方法; 3.掌握运用Matlab设计RC滤波系统的方法; 4.掌握运用Matlab实现对加干扰后的音频信号的进行滤波处理 的方法; 5.锻炼学生运用所学知识独立分析问题解决问题的能力,培养学 生创新能力。 二、实验性质 设计性实验 三、实验任务 1.音频信号的采集 音频信号的采集可以通过Windows自带的录音机也可以用专用的录制软件录制一段音频信号(尽量保证无噪音、干扰小),也可以直接复制一段音频信号,但必须保证音频信号保存为.wav的文件。 2.音频信号的时域、频域分析 运用Matlab软件实现对音频信号的打开操作、时域分析和频域分析,并画出相应的图形(要求图形有标题),并打印在实验报告中(注意:把打印好的图形剪裁下来,粘贴到实验报告纸上)。 3.引入干扰信号 在原有的音频信号上,叠加一个频率为100KHz的正弦波干扰信号(幅度自定,可根据音频信号的情况而定)。 4.滤波系统的设计 运用Matlab实现RC滤波系统,要求加入干扰的音频信号经过RC滤波系统后,能够滤除100KHz的干扰信号,同时保留原有的音频信号,要求绘制出RC滤波系统的冲激响应波形,并分析其频谱。

% 音频信号分析与处理 %% 打开和读取音频文件 clear all; % 清除工作区缓存 [y, Fs] = audioread('jyly.wav'); % 读取音频文件 VoiceWav = y(300000 : 400000, 1); % 截取音频中的一段波形 clear y; % 清除缓存 hAudio = audioplayer(VoiceWav, Fs); % 将音频文件载入audioplayer SampleRate = get(hAudio, 'SampleRate'); % 获取音频文件的采样率KHz T = 1/SampleRate; % 计算每个点的时间,即采样周期SampLen = size(VoiceWav,1); % 单声道采样长度 %% 绘制时域分析图 hFig1 = figure('Units', 'normalized', 'Position', [0 0.05 0.49 0.85]); t = T: T: (SampLen* T); subplot(2, 1, 1); % 绘制音频波形 plot(t, VoiceWav); % 绘制波形 title('音频时域波形图'); axis([0, 2.3, -0.5, 0.5]); xlabel('时间(s)'); ylabel('幅值(V)'); % 显示标题 %% 傅里叶变换 subplot(2, 1, 2); % 绘制波形 myfft(VoiceWav, SampleRate, 'plot'); % 傅里叶变换 title('单声道频谱振幅'); % 显示标题 xlabel('Frequency (Hz)'); ylabel('|Y(f)|'); play(hAudio); % 播放添加噪声前的声音 pause(3); %% 引入100KHz的噪声干扰 t = (0: SampLen-1)* T; noise = sin(2 * pi * 10000 * t); % 噪声频率100Khz,幅值-1V到+1V hFig2 = figure('Units', 'normalized', 'Position', [0.5 0.05 0.5 0.85]); subplot(2, 1, 1); % 绘制波形 plot(t(1: 1000), noise(1: 1000)); title('100KHz噪声信号'); % 显示标题 noiseVoice = VoiceWav+ noise'; % 将噪声加到声音里面 hAudio = audioplayer(noiseVoice, Fs); % 将音频文件载入audioplayer subplot(2, 1, 2); % 绘制波形 [fftNoiseVoice, f] = myfft(noiseVoice, SampleRate, 'plot'); title('音乐和噪声频谱'); % 显示标题 play(hAudio); % 播放添加噪声后的声音 pause(3);

光纤声音采集系统

摘要:科技的发展带来许多电磁干扰或射频干扰的恶劣环境,要想解决电磁干扰问题的,必须从本质上改变麦克风的工作模式。文章提出了利用激光的传输频带宽、通信容量大和抗电磁干扰能力强等优点,研制一种基于光相位干涉的高灵敏度声音采集系统。光纤声音采集能够传送非常高的声音质量,适用于多种恶劣环境下的声音采集。 关键词:光纤声音采集、干涉型光纤传感器 引言: 麦克风在声场和电场中起着重要的沟通界面,它可将声音信号传至任何地方或者记忆装置。传统型的使用电磁场或静电场来产生动作,外部的强电磁场影响会阻绝这些装置的功能。本项目研制的光纤声音采集系统是一种新颖的声音信号传感器,在反射式强度型光纤传感器的原理基础上,利用激光来采集声音信号,由于它与传统的麦克风有着本质的区别,所以在使用方面具有很大的优越性。系统由非导磁材料制成,其主要工作本体是光,即使在强电磁场或高射频环境中也能正常工作。把光纤应用于麦克风,充分利用了光纤传感器体积小、结构简单、灵敏度高、抗电磁干扰且光纤本身低损耗、耐腐蚀、安全可靠等优良特性。 1、系统结构 本系统利用干涉型光纤传感器的原理,开发基于光相位干涉的高灵敏度声音采集系统,由光纤传感探头、光路系统、光信号调制解调器等部分组成。 干涉型光纤传感器通常将被测量转化为光信号的相位,因此,相位测量是该类型传感器信号处理的基本要求。若直接对相位进行测量,那么有两个问题将限制系统的性能:一是系统受到环境的干扰时被测相位会产生随机漂移,从而引入测量误差,此外,相位漂移还会导致信号衰减;二是直接测相意味着直流检测,信号处理易受电路直流漂移的影响。针对这两个问题引出了相位生成载波技术。相位生成载波调制是在被测信号带宽以外的某一频带之外引入大幅度的相位调制,被测信号则位于调制信号的边带上,这样就把外界干扰的影响转化为对调制信号的影响,且把被测信号频带与低频干扰频带分开,以利于后续的噪声分离。 项目研制的光纤声音采集系统,在对传统michelson干涉仪加以改进的基础上,通过构造由光纤耦合器和振动膜组成的动态michelson干涉光路,能够将外界声压对振膜的作用转化为对光路相位的调制,得到的干涉光信号直接光电转换后即可解调还原声音信号。在多种干涉型光纤传感器的解调方法中,相位生成载波解调技术(pgc)由于是一种无源解调技术,并具有高灵敏度、大动态范围和好的线性度而得到广泛的应用。 2、系统原理 2.1光纤传感探头原理: 激光器发出的激光经耦合器到达传输光纤,由光纤出射的光束照射到振动膜上,传输光纤出射端面m1与振动膜构成一个干涉腔,从两表面反射回的光进行干涉,干涉光再经耦合器由光电探测器接收,外界声音信号通过改变干涉腔的光纤出射端面m1和振动膜之间的距离对光相位进行调制。系统中半导体激光器发出的光源光频随输入的调制电流线性变化,振动膜采用硅微技术进行研制。 2.2解调原理: 光纤声音采集系统中的调制解调器是由光源,光电转换器,高增益微弱信号放大电路,背景噪声消除器等组成。 光源向光纤传感头发射一稳定的激光,传感头内的振动薄膜被周围声音振动信号带动,从而对发射到振动薄膜上的激光进行相位调制后再反射回去,被调制的激光在光路系统里发生干涉,形成携带微弱声音强度的激光信号,光电转换系统的探测器将此激光信号转换成电信号,再经高增益微弱信号放大,pgc解调,噪声滤除,后将解调后的电信号还原成声音信号输出。

音频数字化简单原理

音频数字化简单原理 [ 2007-3-13 9:41:00 | By: 林俊桂] 从字面上来说,数字化 (Digital) 就是以数字来表示,例如用数字去记录一 张桌子的长宽尺寸,各木料间的角度,这就是一种数字化。跟数位常常一起被提到的字是模拟 ( Analog/Analogue) ,模拟的意思就是用一种相似的东西去表达,例如将桌子用传统相机将三视图拍下来,就是一种模拟的记录方式。 两个概念: 1、分贝(dB):声波振幅的度量单位,非绝对、非线性、对数式度量方式。以人耳所能听到的最静的声音为1dB,那么会造成人耳听觉损伤的最大声音为100dB。人们正常语音交谈大约为20dB。10dB意味着音量放大10倍,而20dB却不是20倍,而是100倍(10的2次方) 。 2、频率(Hz):人们能感知的声音音高。男性语音为180Hz,女性歌声为600H z,钢琴上 C调至A调间为440Hz,电视机发出人所能听到的声音是17kHz,人耳能够感知的最高声音频率为20kHz。 将音频数字化,其实就是将声音数字化。最常见的方式是透过 PCM(脉冲) 。运作原理如下。首先我们考虑声音经过麦克风,转换成一连串电压变化的信号,如下图所示。这张图的横座标为秒,纵座标为电压大小。要将这样的信号转为 P CM 格式的方法,是先以等时距分割。 我们把分割线与信号图形交叉处的座标位置记录下来,可以得到如下资料,(0.0 1,11.6 5) ,(0.02,14.00) 、 (0.03,16.00) 、 (0.04,17.74) … ..(0.18,15.94) 、 (0. 19 ,17.7) 、 (0.20,20) 。好了,我们现在已经把这个波形以数字记录下来了。由于我们已经知道时间间隔是固定的 0.01 秒,因此我们只要把纵座标记录下来就可以了,得到的结果是 11.65 14.00 16.00 17.74 19.00 19.89 20.34 20.07 19.4 4 18.59 17.47 16.31 15.23 14.43 13.89 13.71 14.49 15.94 17.70 20.00 这一数列。这一串数字就 是将以上信号数字化的结果。看吧,我们确实用数字记录了事物。在以上的范例中,我 们的采样频率是 100Hz(1/0.01 秒 ) 。其实电脑中的 .WAV 档的内容就是类似这个样子

Adobe-Audition-系列教程(二):频谱分析仪

AdobeAudition系列教程(二):频谱分析仪 频谱分析仪是研究信号频谱特征的仪器,在电子技术一日千里的今天,是研究、开发、调试维修中的有力武器。现代频谱分析仪都趋向于智能化,虚拟仪器技术广泛应用,有些就是以专用的计算机系统为核心设计的。其结果是结构大大简化、性能飞速提高。当然专业的频谱分析仪就比示波器更加昂贵了,业余爱好者更难用上。不过不必灰心,我们可以充分利用AdobeAudition的频谱分析功能,让你拥有精确频谱分析仪的美梦成真! 1. 频谱显示模式 AdobeAudition本身有一种“频谱显示”模式。先打开一段波形,或用《妙用Adobe Audition:数字存储示波器》一文介绍的方法录制一段波形,即可进行频谱分析。这里我们新建一段20秒的对数扫频信号(本文大多选用直接建立的波形,以便了解信号原始波形的标准频谱特征),然后选择“View=>Spe ctral View”(视图=>频谱),如图1,或点击快捷工具栏的“Toggle between Spectral and Waveform views”(切换频谱视图/波形视图)按扭,即可将波形以频谱显示的方式显示出来,如图2。扫频的频谱显示见图3。 图1

图2 图3 可以看到,横轴为时间,纵轴为频率指示。每个时刻对应的波形频谱都被显示出来了,可以看到扫描速度是指数增加的,即将频率轴取对数时扫描速度是线性的。如图中光标处18秒处频谱指示约11KHz。实际上频谱指示的颜色是代表频谱能量的高低的,颜色从深蓝到红再到黄,指示谱线电平由低到高的变化。这实际上跟地图的地形鸟瞰显示是比较相似的,看图4频谱复杂变化的声音频谱就更容易理解这点了。

基于LabView的双声道声卡数据采集系统

基于LabView的双声道声卡数据采集系统班级:热动1007 姓名:刘堂俊学号:U201011568 在虚拟仪器系统中,信号的输入环节一般采用数据采集卡实现。商用的数据采集卡具有完整的数据采集电路和计算机借口电路,但一般比较昂贵,计算机自带声卡是一个优秀的数据采集系统,它具有A/D和D/A转换功能,不仅价格低廉,而且兼容性好、性能稳定、通用性强,软件特别是驱动程序升级方便。如被测对象的频率在音频范围内,同时对采样频率要求不是太高,则可考虑利用声卡构建一个数据采集系统。 1.从数据采集的角度看声卡 1.1声卡的作用 从数据采集的角度来看,声卡是一种音频范围内的数据采集卡,是计算机与外部的模拟量环境联系的重要途径。声卡的主要功能包括录制与播放、编辑和处理、MIDI接口三个部分。 1.2声卡的硬件结构 图1是一个声卡的硬件结构示意图。一般声卡有4~5个对外接口。 图1 声卡的硬件结构示意图 声卡一般有Line In 和Mic In 两个信号输入,其中Line In为双通道输入,Mic In仅作为单通道输入。后者可以接入较弱信号,幅值大约为0.02~0.2V。声音传感器(采用通用的麦克风)信号可通过这个插孔连接到声卡。若由Mic In 输入,由于有前置放大器,容易引入噪声且会导致信号过负荷,故推荐使用Line In ,其噪声干扰小且动态特性良好,可接入幅值约不超过1.5V的信号。另外,输出接口有2个,分别是Wave Out和SPK Out。Wave Out(或LineOut)给出的信号没有经过放大,需要外接功率放大器,例如可以接到有源音箱;SPK Out给出的信号是通过功率放大的信号,可以直接接到喇叭上。这些接口可以用来作为双通道信号发生器的输出。 1.3声卡的工作原理 声音的本质是一种波,表现为振幅、频率、相位等物理量的连续性变化。声卡作为语音信号与计算机的通用接口,其主要功能就是将所获取的模拟音频信号转换为数字信号,经过DSP音效芯片的处理,将该数字信号转换为模拟信号输出。输入时,麦克风或线路输入(Line In)获取的音频信号通过A/D转换器转换成数字信号,送到计算机进行播放、录音等各种处理;输出时,计算机通过总线将数字化的声音信号以PCM(脉冲编码调制)方式送到D/A转换器,变成模拟的音频信号,进而通过功率放大器或线路输出(Line Out)送到音箱等设备转换为声波。

频谱分析

标题:基于MATLAB的声音信号频谱分析仪设计 2009-05-17 13:49:14 基于MATLAB的声音信号频谱分析仪设计 1.概述 随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向[1]。虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析仪等[2]。从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能的飞速发展,已把传统仪器远远抛到后面,并给虚拟仪器生产厂家不断带来连锅端的技术更新速率。目前已经有许多较成熟的频谱分析软件,如S pectraLAB、RSAVu、dBFA等。 声卡是多媒体计算机最基本的配置硬件之一,价格便宜,使用方便。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令[3]。本文将给出基于声卡与MATLAB的声音信号频谱分析仪的设计原理与实现方法,功能包括: (1) 音频信号信号输入,从声卡输入、从WAV文件输入、从标准信号发生器输入; (2) 信号波形分析,包括幅值、频率、周期、相位的估计,以及统计量峰值、均值、均方值和方差的计算; (3) 信号频谱分析,频率、周期的估计,图形显示幅值谱、相位谱、实频谱、虚频谱和功率谱的曲线。 2.设计原理2.1波形分析原理2.1.1 信号频率、幅值和相位估计 (1)频率(周期)检测 对周期信号来说,可以用时域波形分析来确定信号的周期,也就是计算相邻的两个信号波峰的时间差、或过零点的时间差。这里采用过零点(ti)的时间差T(周期)。频率即为f = 1/T,由于能够求得多个T值(ti有多个),故采用它们的平均值作为周期的估计值。 (2)幅值检测 在一个周期内,求出信号最大值y max与最小值y min的差的一半,即A = (y max- y min)/2,同样,也会求出多个A值,但第1个A值对应的y max和y min不是在一个周期内搜索得到的,故以除第1个以外的A值的平均作为幅值的估计值。 (3)相位检测 采用过零法,即通过判断与同频零相位信号过零点时刻,计算其时间差,然后换成相应的相位差。φ=2π(1-t i/T),{x}表示x的小数部分,同样,以φ的平均值作为相位的估计值。 频率、幅值和相位估计的流程如图1所示。

音频信号数字化hbj

音频信号数字化hbj

————————————————————————————————作者:————————————————————————————————日期:

1.1 模拟信号与数字信号 1)模拟信号:从时间上以及幅值上都连续(不间断)变化 的信号称为模拟信号 (a) (b) 图1-1模拟与数字信号 [注]:①模拟信号强调在时间上的连续性。 ②模拟信号强调在幅值上的连续性。 ③计量和描述方式,一般采用十进制数 2)数字信号:在时间上和幅值上都是离散(不连续)的信 号称为数字信号 数字信号不同,它是那些像电报中用的莫尔斯码那样的长短不同的码信号,或者像计算机中的脉冲信号以及电源通/断的两个状态……都属于数字信号。它在时间上和幅值上都是离散(不连

10 0208202120211010101001232=+++=?+?+?+?==B 续)的, [注]:①数字信号的特点: 在时间上和幅值上都不连续。 ②数字信号的描述方式:由于它只有两个状态,所以可以 用二值函数来表示,一般采用二进制数量来表示 ③二进制数与数字信号是两个概念:前者只是对后者的一 种描述,在数字信号中强调的是状态 ④正逻辑表示:用“1”表示有脉冲或电源接通,而用“0” 表示无脉冲或电源断开。 ⑤二进制的运算法则:逢二进一。 ⑥二进制与十进制的关系: 上式中n 为二进制数的bit 数,左边为十进制数D ,而右边是其所对应的二进制数的各位与各自权重之积的和。 如: ★ 列出四位(bit )二进制数与十进制数的关系表。 十进制数 二进制数 十进制数 二进制数 0 0000 2 0010 1 0001 3 0011 1.2 为什么要数字化 ①动态范围大:若采用16bit 量化方法,音频信号的幅度可 分为65536个量 化级,动态范围达96dB 。 ② 信息易处理:可以通过计算机对音、视频信号进行各种 特技及非线性编辑。 ③ 媒体易保存:使用时间长,采用数字化的光盘,重放时 不存在机械磨损, 使用寿命长。 ④成本低:数字化信息便于大规模集成电路的存储和处理,可降低成本。 i n i i b D 210 ∑-==

音频频谱分析仪设计

信号处理实验 实验八:音频频谱分析仪设计与实现

一、实验名称:音频频谱分析仪设计与实现 二、实验原理: MATLAB是一个数据信息和处理功能十分强大的工程实用软件,其数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令。本实验可以用MATLAB进行音频信号频谱分析仪的设计与实现。 1、信号频率、幅值和相位估计 (1)频率(周期)检测 对周期信号来说,可以用时域波形分析来确定信号的周期,也就是计算相邻的两个信号波峰的时间差、或过零点的时间差。这里采用过零点(ti)的时间差T(周期)。频率即为f = 1/T,由于能够求得多个T值(ti有多个),故采用它们的平均值作为周期的估计值。 (2)幅值检测 在一个周期内,求出信号最大值ymax与最小值ymin的差的一半,即A = (ymax - ymin)/2,同样,也会求出多个A值,但第1个A值对应的ymax和ymin不是在一个周期内搜索得到的,故以除第1个以外的A值的平均作为幅值的估计值。 (3)相位检测 采用过零法,即通过判断与同频零相位信号过零点时刻,计算其时间差,然后换成相应的相位差。φ=2π(1-ti/T),{x}表示x的小数部分,同样,以φ的平均值作为相位的估计值。 频率、幅值和相位估计的流程如图所示。

其中tin表示第n个过零点,yi为第i个采样点的值,Fs为采样频率。 2、数字信号统计量估计 (1) 峰值P的估计 在样本数据x中找出最大值与最小值,其差值为双峰值,双峰值的一半即为峰值。P=0.5[max(yi)-min(yi)] (2)均值估计 式中,N为样本容量,下同。 (3) 均方值估计

声音信号的获取与处理

声音信号的获取与处理 一、实验目的和要求 本实验通过麦克风录制一段语音信号作为解说词并保存,通过线性输入录制一段音乐信号作为背景音乐并保存。为录制的解说词配背景音乐并作相应处理,制作出一段完整的带背景音乐的解说词。 二、实验内容和步骤 1、软件与硬件的准备 目前,多媒体计算机中的音频处理工作主要借助声卡,从对声音信息的采集、编辑加工,直到声音媒体文件的回放这一整个过程都离不开声卡。声卡在计算机系统中的主要作用是声音文件的处理、音调的控制、语音处理和提供MIDI接口功能等。 进行录制音频信号所需的硬件除了声卡,还有麦克风、音箱以及外界的音源信号设备(如CD唱机、录音机等),把麦克风、音箱、外界音源信号设备与声卡正确连接完成硬件准备工作。在Windows的【控制面板】/【多媒体】中选择正确的录音和回放设备,并对其进行调试。 2、用Windows录音机录制解说词 使用Windows录音机录制任意一段语音信号作为解说词,录制完毕后把文件存为Wav 格式,文件名为【示例1_1】。 3、使用Cool Edit录制背景音乐 使用Cool Edit 2000录制任意一段语音信号作为背景音乐,要求录制的声音文件 采样频率为44100Hz,立体声,量化位数为16位,保存文件的为Wav格式,文件名【示例1_2】。

4、使用WaveStuido编辑和处理背景音乐 使用WaveStuido对【示例1_2】先进行回声处理,【幅度】值为100%,【回声延迟】为300毫秒。然后进行【淡入】和【淡出】处理,【幅度】值各为50%。 5、使用Cool Edit进行混音处理 使用Cool Edit的【Mix paste】功能对【示例1_1】和【示例1_2】进行混音处理。把【示例1_2】加入【示例1_1】中去,编辑成为一个完整的带背景音乐的解说词,保存为【示 例1_3】

音频信号采集与传输

《信号与系统》 ——综合性设计性实验报告标题:音频信号采集与传输 组长:学号 成员:学号 学号 学号 实验时间:2011年6月20日星期一第1、2节2011年6月27日星期一第1、2节实验地点:电子信息楼617 实验课室: 机械与电气工程学院 电子信息工程系 信息工程专业 教师:胡晓

目录 1、课题设计流程 (3) 2、课题设计理论基础 (3) 2.1信号的采集 (3) 2.2频谱分析 (3) 2.3 调制与解调 (3) 2.4 高斯白噪声 (4) 2.5 滤波 (4) 3、课题设计(程序) (4) 4、课题设计效果(效果图) (6) 5、课题设计总结 (7) 6、心得体会 (7)

1、课题设计流程 用matlab录制音频文件 ?→ ?)(f t频谱分析?→ ?调制? ? ? ?→ ?加入高斯白噪声解调?→ ?滤 波?→ ?扬声器 2、课题设计理论基础 2.1信号的采集 用matlab录制5秒mic声音,y = wavrecord(5*fs,fs,'int16'),其中采样率为44100,时长为5*fs,然后用wavplay(y,fs);语句播放出来,再写成以xinhao_test01命名的wav文件。Y也可以直接用windows自带的录音工具进行录音,并直接读取[y,fs,bits]=wavread('xinhao_test01.wav'),然后对声音进行回放sound(y,fs),感觉效果。 2.2频谱分析 快速傅里叶变换原理: 在matlab的信号处理工具箱中函数FFT用于快速傅里叶变换,此次实验调用FFT函数的一种格式y=fft(x,N),其中x是序列,y是序列的FFT,N为正整数,函数执行N点的FFT,由于实验中fs=44100,所以取N=2^16,由于经过fft求得的y一般是复序列,所以用其幅值进行分析,可以用函数abs(y)进行计算复向量y的幅值。由于用matlab自带的FFT快速傅里叶变换得到的幅频图的横坐标是从1到1/2fs,是从低频到高频,再由1/2fs到1,是从高频到低频,实验中用语句Y0(2^N/2+1:2^N)=Y(1:2^N/2),Y0(1:2^N/2)=Y(2^N/2+1:2^N)(其中N=16)。这样就可以将幅频图变成横坐标原点是低频,向坐标的正负端频率逐渐递增的形式,这是平常傅里叶变换得到的幅频图横坐标。

相关主题
文本预览
相关文档 最新文档