1J1CON1J2CON1J3CON1J4CON1J5CON12341111DOUTDINFCSCLKC2R9100KR11100KC3100pF100pF+5R12KCT3+124+VMID1uFMICROPHONEVMIDLM358R5VMID51.1KLM358R1210K53100K71R106R62U1B10KU1AC40.1uFFSD1DINPR25.11K+5C10.1uFR45.11K8+CT12uFC2K+CT22uF-12R3C5C130.001uF0.1uFINMC+5VC70.1uFU3CT4C110.1uF+5100R16R710K3.3VC120.1uFOUTC150.01uFFSSCLKMCLKFCC90.1uFBU2OUTR13C620KC140.047uF330uFSPEAKERC80.1uF1234GAINBYPASSVSVOUT0.1uFGAININPUT-INPUT+GND8765BLM386R141KR1510+C1010.1uF234INP5INM678910DOUT11DIN121314REFPREFMAUXPAUXMINPINMAVDD(PLL)AVSS(PLL)DVDDDVSSDOUTDINFLAGALTDATATLC320AD50CFILTMONOUTAVSSAVDDOUTMOUTPM/SFSDFSSCLKMCLKFCPWRDWNRESET2827262524232221201918171615R810K3.3VATitleASizeA4Date:File:2-Dec-2009 Sheet of C:\\Documents and Settings\\wang\\桌面\\dsDp.rDaDwBn By:NumberRevision1234实验四、基于MATLAB语音信号的采集和分析
一、实验目的
1、掌握语音信号的时域、频域基本特性 2、掌握MATLAB语音信号处理的基本方法 二、实验设备
计算机(附话筒和耳机) MATLAB6.5版本以上软件 三、实验要求
利用MATLAB对语音信号进行采集和分析。要求学生采集语音信号后,在MATLAB软件平台上画出信号的时域波形图,然后进行频谱分析;按照给定的信噪比对所采集的语音信号加入各种干扰噪声,再对加入噪声的信号画出时域波形图,然后再进行频谱分析。 四、实验步骤
1、理论依据
根据实验要求分析系统功能,掌握实验中所需理论(采样频率、采样位数的概念,采样定理; 时域信号的FFT分析;语音信号的短时分析),阐明设计原理。
MATLAB本身提供了一定的音频处理能力,主要包括表中的6个函数。
函数名 功能描述 wavread 读wav文件 wavwrite 写wav文件 sound 放音 soundsc 归一化放音 wavplay 放音 wavrecord 录音 2、信号采集 wavrecord()可以通过Windows的音频设备实现录音功能,它的语法是:wavrecord(n, fs, ch, dtye)。这里n为采样的点数,它决定了录音的长度。fs为采样频率,默认值为11025,即以11025Hz进行采样。ch为通道数,默认为1,如果指定为2,则采样为双声道立体声数据,该参数可以省略。Dtype为采样数据的存储格式,用字符串指定,可以是:‘double’、‘single’、‘intl6’、‘int8’。 以下程序实现以8000Hz的采样频率录制5秒的音频数据,然后通过soundview()函数回放。
Fs=8000;
y=wavrecord(5*Fs,Fs,'int16'); wavplay(y,Fs); soundview(y,Fs);
3、显示语音信号时域波形并进行频谱分析
对所采集的语音信号,运用matlab软件显示其时域波形,并对其进行FFT频谱分析,将分析的结果与上课的内容结合理解,加深印象。
4、给定的信噪比对所采集的语音信号加入各种干扰噪声
按照一定的信噪比,对所采集的语音信号加入各种干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。
5、显示加噪语音信号波形并进行频谱分析
对加噪语音信号进行FFT频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。
附录:
(1)时域波形绘制
function []=speechplot()
[x1,fs]=wavread('3.wav'); %读取\语音信号的数据,赋给变量x1 sound(x1,fs); %播放语音信号
plot(x1) %做原始语音信号的时域图形 title('原始语音信号'); xlabel('时间'); ylabel('幅值'); (2)简单的频谱分析
function []=speechspec() [x fs]=wavread('2.wav'); plot(x);
x=x(18001:19024); sound(x); N=1024; y=fft(x,N); magy=abs(y);
f=(0:length(y))*fs/length(y); figure(2);
plot(f(1:N/2),magy(1:N/2));
xlabel('频率(Hz)');ylabel('幅值'); title('N=1024');
(3)按给定的信噪比加噪声 function []=addnoise()
[y,Fs,bits] = wavread('3.WAV'); %读取语音 sound(y,Fs);
SNR=0; %设定信噪比
[noise,Fs,bits] = wavread('F:\\我的文档\\我的文档\\大实验\\09~10\\声音文件\\噪声\\f16.wav'); %读取噪声 Ns = length(y);
noise=noise(2000:Ns+1999); energyX=sum(y.^2);
energyNoise=sum(noise.^2);
noiseAmp=sqrt(energyX/energyNoise*10^(-SNR/10)); x=y+noiseAmp*noise; sound(x,Fs);
实验五、基于MATLAB的语音量化实验
一、实验目的
1、掌握语音信号均匀量化的理论及相关实验验证 2、理解量化误差的特性及其对声音质量的影响 3、掌握μ律压扩原理及相关实验验证 二、实验设备
计算机(附话筒和耳机) MATLAB6.5版本以上软件 三、实验原理
语音波形的抽样和量化(或A/D转换)在数字语音处理中很重要,因为它是任何数字语音处理系统的第一步,并且语音处理的基本问题之一是为数字传输或存储对语音信号所进行的数字编码问题。信号的抽样和量化通常用图1形式的系统实现。在用硬件实现时,抽样保持电路对连续时间信号输入进行抽样并在抽样周期T之内保持其数字不变。这样在A/D转换器的输入端给定一个常数信号,A/D的目的是要确定信号的哪个量化电平最接近输入样本值。每隔T秒,A/D转换器发出与那个量化电平对应的一个数字码。正常地,此数字码按照一个诸如补码的方便的二进制数字系统进行分配,这样二进制数字可以作为这些样本值的数字表示。
Xc(t)抽样与保持Xo(t)A/D转换器?[n]?Q[X(nT)]Xc图1 语音信号抽样和量化的硬件描述表示
四、实验步骤
1、语音特性
语音文件s1.mat~s5.mat是以每秒8000个样本的抽样速率进行抽样的,并且最初量化到12bit。接着,把这些样本乘上16从而提高振幅电平使其刚好在32767之下(即一个16bit的整数的最大值)。因此,这些文件被当做是16bit抽样的12bit抽样,在这里这样做,一般不会产生问题。
(1)入文件s5.mat并产生一个自样本1200开始、长为8000个样本的向量。把这些样本数字除以32768以使所有样本的数值小于1。
>>load s5.mat
>>x=s5(1200:9199)/32768; >>plot(x) (2)统计分析
根据文件s5.mat计算8000个样本的最小值、最大值、平均值和均方值。使用matlab的hist()函数绘出8000个样本的直方图。对直方图的数目和位置进行实验以获得有用的图。直方图应显示:在语音波形中,小样本比大样本更有可能出现。这是否与在波形图中所看到的相一致?可以查找相关文献中有关语音振幅分布的连续概率密度函数模型的讨论。
>> hist(x); (3)谱分析
使用提供的welch()函数,用来自文件s5.mat的8000个样本,计算语音的长时间平均功率谱的估计。以dB为单位绘出谱图,恰当地标记频率坐标轴。
>> welch(x, 1024, 1024, 'r', 1)
2、均匀量化
在量化器中,输入样本被舍入到最接近的量化电平,并且对分布于区间
?Xm??/2?x?Xm??/2以外的样本,输出饱和。在讨论量化效应时,对量化误差做如下定义是有用的
?[n]?x[n] e[n]?x对均匀量化来说,量化误差样本满足??/2?e[n]??/2。此外,语音是一个复杂的信号,它在不同的量化电平之间快速的波动变化,而且如果Δ足够小,信
号的振幅可能在一个抽样时间内跨越许多量化步长。在这些条件之下,会发现该量化误差序列可以用下面的模型很好地描述:
①误差序列e[n]与非量化的序列x[n]不相关。
②误差序列有白噪声的特性,即它有一个平直的功率谱,并且误差样本彼此不相关。
③误差样本的概率分布在量化误差振幅的范围上是均匀的。 (1)使用提供的fxquant()函数量化来自文件s5.mat的8000个输入语音样本。利用舍入和饱和,量化bit数分别取10bit、8bit、4bit,绘出量化后的波形,并用wavwrite()函数写到WAV文件,并倾听量化后的声音。
>> x1=fxquant(x,4,'round','sat');
(2)计算10bit、8bit、4bit量化的量化误差序列。使用plot()绘出这些误差序列,并用wavwrite()函数写到WAV文件,并倾听这些量化噪声。在它们之间有什么重要的不同?看上去它们是否适合白噪声模型?绘出量化噪声样本的直方图。它们是否适合振幅均匀分布模型?
>> En=x1-x;
>> plot(En); >> hist(En);
(3)使用welch()函数计算10bit、8bit、4bit量化的量化噪声序列功率谱。这些噪声频谱是否支持白噪声假设?10bit量化的噪声与8bit量化的噪声谱之间以dB为单位的差大约是多少?
>> welch(En, 1024, 1024, 'r', 1); 3、μ律压扩
均匀量化的问题之一是:无论样本是大是小,它们量化误差的最大数值都相同。对于一个粗糙的滤波器,低电平的摩擦音与其他声音可能完全消失,因为它们的幅值小于最小步长。μ律压扩是获得与样本的大小实际成比例的量化误差的一种方法。
μ律量化器x[n]μ律压缩y[n]均匀量化器?[n]yμ律扩展?[n]x
该μ律压扩器由下面的方程式定义