logo资料库

语音信号的采样和频谱分析.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
语音信号的采样和频谱分析 信息与通信工程学院 电子 145 班 王鹏举 一.引言 1.实验内容 利用 MATLAB 指令录制一段语音信号,对其进行时域波形的观察和频域的谱 分析。根据该信号的频谱构成,选择三种不同的采样频率重新录制该语音信号, 并试听回放效果,进行比较,以验证采样定理。 2. 实验任务 (1)利用 wavrecord 语句,以 8000Hz 的采样频率,录制一段 1 秒的单声道 语音信号; (2)对该语音信号进行傅里叶变换,并画出其时域和频域波形,要求时域波 形的横轴为时间(秒),频域波形的横轴为频率(赫兹); (3)根据语音信号的频谱图,确定该语音信号的上限频率,分别以小于 2 倍上限频率、2 倍上限频率和大于 2 倍上限频率为采样频率重新录制语音信号, 并播放以不同采样频率所录制的语音信号,试听回放效果,进行比较,给出结论。 二.基本原理 由于语音信号是一种连续变化的模拟信号,而计算机只能处理和记录二进制 的数字信号,因此,由自然音而得的音频信号必须经过采样、量化和编码,变成 二进制数据后才能送到计算机进行再编辑和存储。语音信号输出时,则与上述过 程相反。 用计算机的声音编辑工具进行语音信号的录制时,已经利用了计算机上的 A/D 转换器,将模拟的声音信号变成了离散的量化了的数字信号。话音时,量化 了的数字信号又通过 D/A 转换器,把保存起来的数字数据恢复成原来的模拟的语 音信号。 (1)应用 MATLAB 进行声音的录制 在计算机声卡的输入端口插入话筒(或者其他声音信号源),利用软件将话 筒中的模拟话音转换为数字话音,并且以给定的文件名记录下来。 在 MATLAB 命令窗口中键入“y=wavrecord(m,Fs,ch)”,并按回车键(或者在 m 文件编写的程序中应用 wavrecord 语句,并运行),此时刻以后的 m/Fs 秒时段 内的声音信号将以 y 为文件名,以数字声音信号.wav 格式存储在 MATLAB 的工作 空间里。m 为记录的长度单位,即采样数;Fs 为记录时的采样频率(赫兹),缺 省时为 11025;ch 表示来自 Windows WAVE 声卡的声道数,当不止一个声道时, 采样的数据就是 m×ch 阶矩阵,缺省时 ch=1。
(2)应用 MATLAB 进行声音的播放 在 MATLAB 命令窗口中键入“sound(y,Fs)”,并按回车键(或者在 m 文件编 写的程序中应用 sound 语句),此时刻以后 MATLAB 将存在工作空间的矢量 y 以 Fs 为采样频率还原为声音。Y 的取值范围为-1.0~1.0,超出此范围的部分将被 忽略。当 y 是一个 m×2 阶矩阵时,播放出立体声效果。Fs 为采样频率,缺省值 为 8192Hz。 另外,与 wavrecord 语句相对应的 wavplay 也可以实现声音的播放,其功能 和使用方式与 sound 语句基本一致,只是在以 wavplay 表达时,采样频率 Fs 缺 省值为 11025Hz。 (3)语音信号的频谱分析 傅里叶变换建立了信号频谱的概念。所谓傅里叶分析即分析信号的频谱(频 率构成)、频带宽度等。对语音信号的分析也不例外,也必须采用傅里叶变换这 一工具。 对于连续时间信号 )(t f ,其傅里叶变换 ) (F 为: F ( )     f )( et  t j dt 连续时间傅里叶变换特别适合于对时间连续信号的理论分析,但是,由于其变 (F 都是连续函数,不适合于计算机处理。虽然 MATLAB 语 换两边的函数 )(t f 和 ) 言提供了符号函数 fourier 来实现傅里叶变换,但该函数需要信号的解析表达 式。而工程应用中经常需要对抽样数据进行傅里叶分析,这种情况下往往无法得 到信号的解析表达式,因而必须采用傅里叶变换的数值计算方法。下面介绍傅里 叶变换的数值方法。 如果 )(t f 的主要取值区间为[ 1t , 2t ],定义 T  t 2  t 1 为区间长度。在该区间内 抽样 N 个点,抽样间隔为 t  T N ,则有: F ) (    1 N  n  0 f ( t 1  ) etn  ( j  t 1 tn  ) t  t  1 N  n  0 f ( t 1  ) etn  ( j  t 1 tn  ) 上式可以计算出任意频点的傅里叶变换值,假设 ) (F 的主要取值区间位于 [ 1, 2 ],要计算其间均匀抽样的 k 个值,则有: F (  1  k )  t  1 N  n  0 f ( t 1  jetn  ) (   k ()  1 t 1 tn  )   2  1  k 其中, 为频域抽样间隔。
(4)采样定理 采样又名抽样,就是利用抽样脉冲序列从连续信号 )(t f 中抽取一系列离散样值 构成抽样信号 )(t f s 。抽样的意义就在于,要能够从抽样信号 )(t f s 中无失真地恢 复原连续信号 )(t f 。时域抽样定理给出了无失真地恢复的条件,时域抽样定理的 内容如下: 一个频谱受限的信号 )(t f ,如果频谱只占据  m   m ~ 的范围,则信号 )(t f 可 1 以用等间隔的抽样值唯一地表示。而抽样间隔必须不大于 mf2 (其中   2 f m ),或者说,最低抽样频率为 mf2 。 m 通常把最低允许的抽样频率 f s 2 称为奈奎斯特频率,把最大允许的抽样间 f m T s    m 1 2 f 隔 m 称为奈奎斯特间隔。 三.实现方法 利用“y=wavrecord(m,Fs,ch)”语句采集一段声音信号,通 过”fft(y,Fs)”语句对录制的声音信号进行傅里叶变换,得到所录制的语音 信号的频谱图。 得出上限频率。再用“y=wavrecord(m,Fs,ch)”语句,以小于2倍上 限频率、2倍上限频率和大于2倍上限频率为采样频率重新录制语音信号, 并播放以不同采样频率所录制的语音信号。具体编制程序如下: close all; clc; clear all; t=linspace(0,0.3,2400); y=wavrecord(2400,8000,1); figure(1) plot(y) figure(2) plot(t,y)%采集信号波形 xlabel('时间/t'); f=fft(f,16000);
figure(3) plot(abs(f)); xlabel('频率/w'); wavplay(y,8000) z=wavrecord(5000,15000,1);% 小于 2 倍上限频率 wavplay(z,20000) a=wavrecord(5300,16000,1);% 2 倍上限频率 wavplay(a,240000) b=wavrecord(3000,20000,1);% 大于 2 倍上限频率 wavplay(b,30000) 四.结果验证 如图 1 所示为以采样点为横坐标绘制的波形图。图 2 是该段声音信号的 时域波形图。图 3 是通过对声音信号进行傅里叶变换得到的频谱图。通过观察分 析,可以看到该段声音信号的上限频率为 8000Hz.当采样频率小于二倍的上限频 率时,信号失真严重,丢失了很多信号变化的细节。当采集到的信号的采样频率 大于等于声音信号的上限频率时,较为准确的还原了声音信号。验证了抽样定理。 图 1
图 2 信号波形图 图 3 频谱图 参考文献 [1]郑君里, 应启珩, 杨为理. 信号与系统引论. 北京: 高等教育出版社, 2009. [2]李敏, 陈兴文. 信号分析与处理的软硬件实现.大连: 大连海事出版社,2013
分享到:
收藏