实验1语音信号的时域和频域分析
语音信号的时域特征分析
中北大学课程设计说明书学生姓名:蒋宝哲学号: 24学生姓名:瓮泽勇学号: 42学生姓名:侯战祎学号: 47学院:信息商务学院专业:电子信息工程题目:信息处理实践:语音信号的时域特征分析指导教师:徐美芳职称: 讲师2013 年 6 月 28 日中北大学课程设计任务书2012-2013 学年第二学期学院:信息商务学院专业:电子信息工程学生姓名:蒋宝哲学号: 24 学生姓名:瓮泽勇学号: 42 学生姓名:侯战祎学号: 47 课程设计题目:信息处理实践:语音信号的时域特征分析起迄日期: 2013年6 月7日~2013年6月 28 日课程设计地点:学院楼201实验室、510实验室、608实验室指导教师:徐美芳系主任:王浩全下达任务书日期: 2013 年 6 月 7 日课程设计任务书课程设计任务书语音信号的采集与分析摘要语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系。
其中语音采集和分析仪器的小型化、智能化、数字化以及多功能化的发展越来越快,分析速度较以往也有了大幅度的高。
本文简要介绍了语音信号采集与分析的发展史以及语音信号的特征、采集与分析方法,并通过PC机录制自己的一段声音,运用Matlab进行仿真分析,最后加入噪声进行滤波处理,比较滤波前后的变化。
关键词:语音信号,采集与分析, Matlab0 引言通过语音传递倍息是人类最重要、最有效、最常用和最方便的交换信息的形式。
语言是人类持有的功能.声音是人类常用的工具,是相互传递信息的最主要的手段。
因此,语音信号是人们构成思想疏通和感情交流的最主要的途径。
并且,由于语言和语音与人的智力活动密切相关,与社会文化和进步紧密相连,所以它具有最大的信息容量和最高的智能水平。
现在,人类已开始进入了信息化时代,用现代手段研究语音信号,使人们能更加有效地产生、传输、存储、获取和应用语音信息,这对于促进社会的发展具有十分重要的意义。
语音信号的时域及频域特征
(12)
当短时谱为使用 DFT 计算时,可以证明窗函数和插值函数需要满足一下条件:
r
h(n r ) w(r n pN ) ( p)
(13)
例如,我们可以特别地选择 W ( n) 为窗长为 N 的三角窗,而 h[ n] 为矩形窗,
1 n [0, N 1] h[ n] 0 其它
第一章 语音信号的时域及频域特征
1. 语音信号的主要特点
1.1. 语音信号带宽
语音信号的带宽约为 5KHz , 主要能量集中在低频段。 上图为一段语音信号语谱图。
1
1.2. 语音信号是典型的随机信号
1)人的每次发音过程都是一个随机过程。很难得到两次完全相同的发音样本。 2)在信号处理中,通常假设语音信号是短时平稳的。例如,可以认为在语音的浊 音段部分,语音的二阶矩统计量是平稳的(在 5~10mS 内),即二阶矩平稳,或称为宽平 稳。
2
2. 语音信号的时域波形
图 1.
语音信号的波形(shi4)
3
图 2. 语音信号波形(shi4)的局部细节
4
2.1. 语音时域信号特征
2.1.1. 语音时域信号的特点
1)清音段:能量低,过零率高,波形特点有点像随机的噪声。这部分信号常与语 音的辅音段对应。 2)浊音段:能量高,过零率低,波形具有周期性特点。所谓的短时平稳性质就是 处于这个语音浊音(元音)段中。 3)过渡段:一般是指从辅音段向元音段信号变化之间的部分。信号变化快,是语 音信号处理中最复杂、困难的部分。
r 取值为周期时刻采样分析短时谱,间隔为
h(n)
w( n)
T N 2。
N
h( n )
w(n)
数字语音信号处理教案
数字语音信号处理实验指导书前言语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
同时,语言也是人与机器之间进行通信的重要工具,它是一种理想的人机通信方式,因而可为信息处理系统建立良好的人机交互环境,进一步推动计算机和其他智能机器的应用,提高社会的信息化程度。
语音信号处理是一门新兴的学科,同时又是综合性的多学科领域和涉及面很广的交叉学科。
虽然从事这一领域研究的人员主要来自信号与信息处理及计算机应用等学科,但是它与语音学、语言学、声学、认知科学、生理学、心理学等许多学科也有非常密切的联系。
20世纪60年代中期形成的一系列数字信号处理的理论和算法,如数字滤波器、快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础。
随着信息科学技术的飞速发展,语音信号处理取得了重大的进展:进入70年代之后,提出了用于语音信号的信息压缩和特征提取的线性预测技术(LPC),并已成为语音信号处理最强有力的工具,广泛应用于语音信号的分析、合成及各个应用领域,以及用于输入语音与参考样本之间时间匹配的动态规划方法;80年代初一种新的基于聚类分析的高效数据压缩技术—矢量量化(VQ)应用于语音信号处理中;而用隐马尔可夫模型(HMM)描述语音信号过程的产生是80年代语音信号处理技术的重大发展,目前HMM已构成了现代语音识别研究的重要基石。
近年来人工神经网络(ANN)的研究取得了迅速发展,语音信号处理的各项课题是促进其发展的重要动力之一,同时,它的许多成果也体现在有关语音信号处理的各项技术之中。
为了深入理解语音信号数字处理的基础理论、算法原理、研究方法和难点,根据数字语音信号处理教学大纲,结合课程建设的需求,我们编写了本实验参考书。
本本参考书针对教学大纲规定的四个研究设计型实验,每个实验给出了参考程序,目的是起一个抛砖引玉的作用,学生在学习过程中,可以针对某一个实验进行延伸的创新学习,比如说,语音端点的检测、语音共振峰提取、基于HMM或DTW的有限词汇或大词汇的特定人、非特定人的语音识别、识别率的提高(如何提高有噪环境下的识别率)、以及编码问题等,同时在学习中还可深入思考如何将有关的方法在嵌入式系统或DSP 下的实现问题等。
语音信号时域和频域通俗理解
语音信号时域和频域通俗理解语音信号是一种广泛使用的信号类型,它包含了人类声音的各种特征。
在理解语音信号时域和频域的表现时,首先需要理解这两个概念的基本含义。
时域:在时间域中,信号是按照时间顺序排列的一组值。
对于语音信号,每一帧或每个样本点都代表了声音在不同时刻的强度或幅度。
在语音信号处理中,时域分析通常涉及对这些样本点进行各种操作,如加权、过滤、卷积等。
时域分析可以揭示信号的瞬态特性,如声音的起始和结束,但其对频率成分的敏感性较低。
频域:在频域中,信号被转换成了频率成分的形式。
这意味着我们将信号分解为一系列不同频率的分量,每个分量都有其特定的幅度和相位。
在语音信号中,这些频率成分反映了声音的各个部分(如基频、谐波等)如何由不同的振动模式产生。
频域分析提供了对信号的全面理解,因为它能够揭示信号的能量如何分布在不同的频率上。
现在,让我们更深入地理解语音信号在时域和频域的表现:时域中的语音:当我们说话时,我们的声带会振动并产生声音。
这些振动会产生一系列的样本点,这些点在时间上按顺序排列。
如果我们观察这些样本点,我们可能会注意到声音的起始和结束,以及一些明显的变化。
但是,如果我们想了解更多关于声音的内容,比如它的基频或谐波结构,我们需要在频域中进行分析。
频域中的语音:当我们观察语音信号的频谱时,我们会看到一系列的频率成分。
这些成分可以代表基频、谐波以及其他声音特征。
例如,如果一个声音的主要成分是基频,那么我们可能会看到一个明显的峰值在低频区域。
如果一个声音包含多个谐波,我们可能会看到一系列更高或更低的频率成分。
了解这些频率成分可以帮助我们更好地理解声音的特征,比如音调、音量等。
总之,理解语音信号时域和频域的表现对于语音处理和通信等领域非常重要。
在时域中,我们关注声音的瞬态特性;而在频域中,我们关注声音的频率成分。
通过将信号从一种表示转换到另一种表示,我们可以更全面地了解和处理语音信号。
语音信号处理(电气与电子工程学院)
四、实验条件
计算机、高分辨麦克、matlab 及相关软件。 五、实验步骤
可以使用已有工作空间文件也可以自己录制一段语音(录制方法见附加内容)
1、听一下 we_be10k(可用 sound) 2、使用函数 specgram_ex3p19.显示语谱图和语音波形。对比调用参数窗长 20ms (200 点)、帧间隔 1ms(10 点)和参数窗长 5ms(50 点)、帧间隔 1ms(10 点); 再对比窗长>20ms 或小于 5ms,以及帧间隔>1ms 时的语谱图说明宽带语谱图、窄 带语谱图与时频分辨率的关系及如何得到时频折中。
1-3
在自相关法中
1-1,1-3 变为
P
∑αk rn [i − k ] = rn [i − 0],i = 1, 2,3,...p
k =1
1-4
P
En = Rn [0] − ∑αk Rn [k ]
k =1
1-5
由 1-4 可列出方程组 1-6
⎛ ⎜ ⎜
Rn Rn
[0] [1]
Rn [1] Rn [0]
图2
图3
7
采用 MATLAB 中的录音函数 wavrecord()进行语音信号的录制。同样,选 择三种频率不同的采样率对同一语音信号进行采样,试听回放效果,进行比较。
二、实验涉及的 MATLAB 子函数 Wavrecord 功能:录制语音 调用格式: filename=wavrecord(N, fs, ‘dtype’);录制一段 N/fs 秒长度的语音信号,采样率为 fs Hz,缺省值为 11025Hz,dtype 是录制声音的数据类型。具体可通过 help wavrecord 命令查阅。 y=wavrecord(N, fs, ch);与上面语句不同的是最后一个参数,ch 是指录音的声 道,ch 为 1 是单声道,ch 为 2 是双声道。 Wavread 功能:把数据文件的声音数据赋给变量 x。 【x,fs,bits】=wavread(’filename’);把数据文件的声音数据赋给变量 x,同 时把 x 的采样频率 fs 和数据的位数 bits 放进 MATLAB 的工作空间。 Sound 功能:将变量 x 的数据转换成 MATLAB 的数据文件保存。 调用格式: Sound(x,fs,bits); Save 功能:将变量 x 的数据转换成 MATLAB 的数据文件保存。 调用格式: Save‘filename’x;将数据转换成文件名与‘filename’相同,扩展名为.mat 的数据并保存,以便用 MATLAB 的各种工具进行处理。
数字信号处理实验-音频信号处理
图1 任务一程序流程图1、音频信号采集道,只取第一个声道进行处理,接着使用sound函数以fs频率进行音频回放。
2、音频信号频域分析以采样间隔T划分时域并绘制出signal信号的时域波形;调用fft函数,对signal 进行快速傅里叶变换,用abs函数取傅里叶变换后结果的幅值进行幅频分析,绘制出频谱图。
在绘制频谱图时由于考虑到快速傅里叶变换的对称性,只取序列的前半部分进行观察分析。
3、音频信号分解为了实现音频信号的分解及合成,先对原信号的频谱图进行观察分析,发现原信号的主要能量集中在三个主要频率上,于是考虑用这三频率的正弦信号合成原信号。
为了求得这三个频率,先调用findpeaks函数找到频谱图上的各个局部极大值peak及其对应的位置locs,然后用sort对峰值点进行排序,找到最大的三个值,接着用find 函数找到这三个最大值在locs中的位置,也就知道了对应的频率。
这里有一个问题就是最小的峰值频率并不是在sort排序后的第三位而是在第四位,需要有一个调整;确定了主要谱线后,使用text函数进行峰值标注;4、音频信号合成接着将这三个谱线还原回时域正弦信号,幅度的比例等于对应频率上的幅度比例然后然后叠加,得到合成后的信号,绘制出时域波形,与原信号波形进行比较,接着对两个正弦信号进行fft,绘制出他们的频谱,然后对合成的信号进行fft,做出频谱图和原信号的频谱图进行比较.5、音频信号回放用sound函数进行原信号和合成信号的回放,比较差异。
实验内容二:任意音频信号的时域和频域分析及数字滤波器设计通过对任务具体内容的分析,可以建立出任务二程序框图如下,之后将对编程思想及思路进行介绍:图2任务二程序流程图1、音频信号采样自己录音频并另存为”ding.wav”后,先用audioread函数读取音频信号得到采样序列signal及对应采样频率fs,由于获取的音频信号是双声道,只取第一个声道进行处理。
2、时域采样使用audioread函数得到的采样序列signal及采样频率fs为过采样状态,此时我们对signal再进行等间隔采样,达到减少采样点数和降低采样频率的效果,进而实现合理采样状态signal2、fs2和欠采样状态signal1、fs1;使用sound函数分别对这两种采样状态进行回放。
语音信号处理实验报告
通信与信息工程学院信息处理综合实验报告班级:电子信息工程1502班指导教师:设计时间:2018/10/22-2018/11/23评语:通信与信息工程学院二〇一八年实验题目:语音信号分析与处理一、实验内容1. 设计内容利用MATLAB对采集的原始语音信号及加入人为干扰后的信号进行频谱分析,使用窗函数法设计滤波器滤除噪声、并恢复信号。
2.设计任务与要求1. 基本部分(1)录制语音信号并对其进行采样;画出采样后语音信号的时域波形和频谱图。
(2)对所录制的语音信号加入干扰噪声,并对加入噪声的信号进行频谱分析;画出加噪后信号的时域波形和频谱图。
(3)分别利用矩形窗、三角形窗、Hanning窗、Hamming窗及Blackman 窗几种函数设计数字滤波器滤除噪声,并画出各种函数所设计的滤波器的频率响应。
(4)画出使用几种滤波器滤波后信号时域波形和频谱,对滤波前后的信号、几种滤波器滤波后的信号进行对比,分析信号处理前后及使用不同滤波器的变化;回放语音信号。
2. 提高部分(5)录制一段音乐信号并对其进行采样;画出采样后语音信号的时域波形和频谱图。
(6)利用MATLAB产生一个不同于以上频段的信号;画出信号频谱图。
(7)将上述两段信号叠加,并加入干扰噪声,尝试多次逐渐加大噪声功率,对加入噪声的信号进行频谱分析;画出加噪后信号的时域波形和频谱图。
(8)选用一种合适的窗函数设计数字滤波器,画出滤波后音乐信号时域波形和频谱,对滤波前后的信号进行对比,回放音乐信号。
二、实验原理1.设计原理分析本设计主要是对语音信号的时频进行分析,并对语音信号加噪后设计滤波器对其进行滤波处理,对语音信号加噪声前后的频谱进行比较分析,对合成语音信号滤波前后进行频谱的分析比较。
首先用PC机WINDOWS下的录音机录制一段语音信号,并保存入MATLAB软件的根目录下,再运行MATLAB仿真软件把录制好的语音信号用audioread函数加载入MATLAB仿真软件的工作环境中,输入命令对语音信号进行时域,频谱变换。
语音信号处理_实验一_报告2
实验一语音信号的频域特性1. 观察语音信号的时域波形特点,总结其规律。
答:1)清音段:能量低,过零率高,波形特点有点像随机的噪声。
这部分信号常与语音的辅音段对应。
2)浊音段:能量高,过零率地,波形具有周期特点。
所谓的短时平稳性质就是处于这个语音浊音段中。
3)过渡段:一般是指从辅音段向元音段信号变化之间的部分。
信号变化快,是语音信号处理中最复杂、困难的部分。
2.总结清音b/p/m/f/d/t/n/l/g/k/h/j/q/x//z/c/s/zh/ch/sh/r/共21个的短时幅值、短时过零率和自相关函数的规律,估算这21个清音的平均短时幅值和平均短时过零率;答:加矩形窗的21个清音的平均短时幅值和平均短时过零率为下表:清音音节平均短时幅值平均短时过零率b 2.126 1.000p 0.706 9.100m 2.427 5.000f 0.685 1.500d 0.817 9.667t 1.168 1.000n 1.150 4.176l 2.084 6.200g 0.150 24.333k 0.959 7.333h 0.629 21.857j 0.129 13.000q 0.184 36.909x 0.168 21.400z 0.173 6.200c 0.785 7.294s 0.158 17.000zh 0.203 31.500ch 0.237 27.535sh 0.182 28.692r 1.814 5.5333. 总结浊音a/o/e/i/u/v/ao/ai/ei/ou/an/en/in/ang/eng/ong/ing/共17个的短时幅值、短时过零率和自相关函数的规律,估算这17个浊音的平均短时幅值和平均短时过零率,从自相关函数上估算这17个浊音的基音周期;答:浊音能量高,短时幅值也比较高,短时过零率比较低,由于浊音有一定的准周期性,所以自相关函数有比较明显的峰值和周期性。
浊音音节平均短时幅值平均短时过零率基音周期a 3.662 0.643 57o 2.948 0.184 71e 2.531 0.148 59i 1.693 0.061 60u 1.300 0.032 61v 1.081 0.024 66ao 2.000 0.123 71ai 2.307 0.121 57ei 1.828 0.074 67ou 0.294 0.000 67an 1.500 0.061 58en 1.827 0.073 54in 2.257 0.118 56ang 0.591 0.009 65eng 1.473 0.053 56ong 1.712 0.059 64ing 0.494 0.014 714. /r/、/m/、/n/ 从这几个音素的自相关函数图形判断为“清音”还是“浊音”,若为浊音估算其基音周期;答:(1)/r/: 自相关函数具有周期性,基音周期为67(样本点数)(2)/m/: 自相关函数具有周期性,基音周期为67(样本点数)(3)/n/ : 自相关函数具有周期性,基音周期为59(样本点数)可以看出/r/、/m/、/n/这几个因素的自相关函数图形有准周期性,并且有比较明显的峰值,所以为浊音。
语音信号的频谱分析实验报告
语音信号的频谱分析实验报告1 引言1.1 实验背景及意义随着信息技术的飞速发展,语音信号处理技术在通信、语音识别、音频编辑等领域发挥着越来越重要的作用。
频谱分析作为语音信号处理的核心技术之一,能够揭示语音信号的频率结构,对于理解语音的本质、提升语音处理技术的性能具有重要意义。
本实验旨在通过频谱分析,深入探究语音信号的内在特性,为相关领域的研究提供理论支持和技术参考。
1.2 实验目的本实验的主要目的是掌握语音信号的频谱分析方法,通过实际操作,理解频谱分析的基本原理及其在语音信号处理中的应用。
具体目标包括:1.学习并掌握语音信号的时域与频域表示方法;2.学习并掌握傅里叶变换(FFT)及短时傅里叶变换(STFT)的原理及其在语音信号频谱分析中的应用;3.分析语音信号的频谱特征,为后续的语音识别、降噪等处理提供依据。
1.3 实验方法与工具本实验采用以下方法与工具:1.实验方法:采用对比实验的方法,对原始语音信号及其频谱进行分析,探讨不同参数设置对频谱分析结果的影响。
2.实验工具:使用MATLAB软件进行实验,利用其强大的信号处理功能实现语音信号的采集、处理和频谱分析。
MATLAB具有以下优点:- 丰富的信号处理函数库,方便快速实现各种算法;- 图形化编程环境,便于观察实验结果; - 高度可扩展性,支持自定义函数和工具箱。
2. 语音信号基本概念2.1 语音信号的特性语音信号是人类交流的主要方式之一,它具有以下特性:•时变性:语音信号随着时间变化,其波形不断改变,即使在同一发音人的连续发音中,同一音素的波形也有所不同。
•非周期性:与简单的正弦波等周期性信号不同,语音信号在短时间内是非周期的,具有随机性质。
•频率特性:人的发声器官产生的语音信号主要频率范围在20Hz到4kHz之间,不同语言和方言的频率分布可能有所差异。
•幅度特性:语音信号的幅度变化较大,通常需要通过预处理进行归一化处理,以便于分析。
•短时平稳性:尽管语音信号整体上是非平稳的,但在短时间内(大约20-30ms),可以近似认为是平稳的,这是进行短时傅里叶变换(STFT)的理论基础。
数字信号处理时域信号与频域分析
数字信号处理时域信号与频域分析数字信号处理(Digital Signal Processing,简称DSP)是指对连续时间信号进行采样和量化后,利用数字技术进行处理和分析的过程。
在数字信号处理中,时域信号与频域分析是两个重要的概念和方法。
时域信号是指信号在时间上的变化情况,常用的表示方法是信号的波形图。
时域信号的分析可以得到信号的幅度、频率、相位等信息。
频域分析则是将时域信号转换为频域信号,常用的方法有傅里叶变换、快速傅里叶变换等。
傅里叶变换是将一个时域信号转换为频域信号的方法之一。
通过傅里叶变换,我们可以将信号的频域特性直观地表示出来,从而更好地理解信号的频谱分布。
傅里叶变换可以将时域信号分解为一系列的正弦和余弦函数,并得到每个频率分量的振幅和相位信息。
快速傅里叶变换是一种高效的傅里叶变换算法,它可以在较短的时间内计算出信号的频域特性,并广泛应用于数字信号处理领域。
快速傅里叶变换通过利用信号的周期性和对称性,通过递归的方式将计算量降低到了较小的程度,从而提高了计算效率。
频域分析可以帮助我们了解信号的频谱特性、频率成分以及不同频率成分之间的相互关系。
通过频域分析,我们可以对信号进行滤波、降噪、频率检测等处理操作。
同时,频域分析也可以用于信号的压缩和编码。
在实际应用中,时域信号与频域分析常常相辅相成。
通过时域分析,我们可以观察信号的波形、脉冲特性等,并确定信号的基本特征。
而频域分析则可以进一步研究信号的频率分量、频段分布等,对信号进行更深入的理解。
总结起来,数字信号处理的时域信号与频域分析是不可分割的两个方面。
时域分析能够提供信号的时间特性和波形信息,而频域分析则可以揭示信号的频谱特性和频率成分。
通过综合应用时域信号与频域分析的方法,可以对数字信号进行更全面、准确的处理和分析,为各类应用提供支持与依据。
这些方法和技术在音频处理、图像处理、语音识别等领域得到了广泛的应用和发展,为我们的生活和工作带来了诸多便利与创新。
实验一语音信号的时域特性和频域特性
实验一、语音信号的时域特性和频域特性学院:信息与通信工程学院专业:通信工程班级:104学号:2010026410姓名:黄余芳指导教师:崔艳秋1.实验名称语音信号的时域特性和频域特性2.实验类型验证性实验3.实验目的观察并验证语音信号的时域特性和频域特性,理解并掌握典型的语音信号时域分析方法和频域分析方法,为深入学习数字语音信号处理的相关理论奠定基础。
4.实验设备安装有MATLAB的计算机5.实验内容1.输入并运行MATLAB代码。
2.观察语音信号的时域特性(1)发一个清音和一个浊音,由麦克风采集语音数据,参考实验内容1中的程序将这些数据分别存成两个“.wav”文件(例如[a]的语音存为“a.wav”,要求采样率为8000),存在本人的文件夹中。
(2)读取WA V文件,显示语音波形,观察清音和浊音波形的差异。
(3)读取WA V文件,计算并显示语音的短时能量(要求分帧加窗的帧长为256,帧移为128),观察并分析清音和浊音短时能量的差异。
(4)读取WA V文件,计算并显示语音的短时过零率(要求分帧加窗是的帧长为256,帧移为128),观察并分析清音和浊音短时过零率的差异。
3. 观察语音信号的频域特性(1)读取WA V文件,计算并显示一帧语音的原始信号、加窗信号、短时频谱(要求分帧加窗的窗函数为汉明窗、帧长为256,帧移为128),观察并分析清音和浊音短时频谱的差异。
(2)读取WA V文件,计算并显示不同窗函数情况下一帧语音的加窗信号、短时频谱(要求分帧加窗的窗函数分别为矩形窗和汉明窗、帧长为256,帧移为128),观察并分析不同的窗函数对短时谱分析的影响。
6.相关函数wavread、plot、fft7.MATLAB程序代码1. 输入并运行以下MATLAB代码。
(1) 短时能量clear;close all;Fs=11025;y=wavrecord(5*Fs,Fs,'double'); wavwrite(y,'f:\\a');soundview(y,Fs);x = wavread('f:\\a.wav');x = double(x);x = filter([1 -0.9375], 1, x); % 预加重FrameLen = 256;FrameInc = 128;s = enframe(x, FrameLen, FrameInc); energy = sum(abs(s), 2);figure;subplot(2,1,1);plot(x);title('语音信号时域波形');xlabel('样点数');ylabel('幅度');subplot(2,1,2);plot(energy);title('语音信号的短时能量');xlabel('帧数');ylabel('短时能量');legend('帧长FrameLen = 240');(2) 短时过零率clear;close all;x = wavread('f:\\a.wav');x = double(x);FrameLen = 256;FrameInc =128;tmp1 = enframe(x(1:end-1), FrameLen, FrameInc);tmp2 = enframe(x(2:end) , FrameLen, FrameInc);signs = (tmp1.*tmp2)<0;diffs = (tmp1 -tmp2)>0.02;zcr = sum(signs.*diffs, 2);figure;subplot(2,1,1);plot(x);title('语音信号时域波形');xlabel('样点数');ylabel('幅度');subplot(2,1,2);plot(zcr);xlabel('帧数');ylabel('短时过零率');title('语音信号的短时过零率');(3) 短时傅里叶变换clear;close all;x = wavread('f:\\a.wav');x = double(x);FrameLen =256;FrameInc =128;s = enframe(x, FrameLen, FrameInc);ss=s(50,:); %选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)f=ss'.*hamming(length(ss));r=fft(f,512);r1=abs(r);r1=r1/max(r1);yuanlai=20*log10(r1);signal(1:256)=yuanlai(1:256);pinlv=(0:1:255)*11025/512;figure;subplot(3,1,1);plot(ss);axis([0,256,-1,1])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(f);axis([0,256,-1,1])title('窗选语音信号');xlabel('样点数');ylabel('幅度');subplot(3,1,3);plot(pinlv,signal);xlabel('频率/Hz');ylabel('对数幅度/dB');title ('加Hamming窗时语音频谱');(4) 显示清音短时过零率clear;close all;x = wavread('f:\\k.wav');x = double(x);FrameLen = 256;FrameInc =128;tmp1 = enframe(x(1:end-1), FrameLen, FrameInc); tmp2 = enframe(x(2:end) , FrameLen, FrameInc); signs = (tmp1.*tmp2)<0;diffs = (tmp1 -tmp2)>0.02;zcr = sum(signs.*diffs, 2);figure;subplot(2,1,1);plot(x);title('语音信号时域波形');xlabel('样点数');ylabel('幅度');subplot(2,1,2);plot(zcr);xlabel('帧数');ylabel('短时过零率');title('语音信号的短时过零率');2:语音信号的频域分析1.加汉明窗的浊音clear;close all;x = wavread('f:\\a.wav');x = double(x);FrameLen =256;FrameInc =128;s = enframe(x, FrameLen, FrameInc);ss=s(125,:); %选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)f=ss'.*hamming(length(ss));r=fft(f,512);r1=abs(r);r1=r1/max(r1);yuanlai=20*log10(r1);signal(1:256)=yuanlai(1:256);pinlv=(0:1:255)*11025/512;figure;subplot(3,1,1);plot(ss);axis([0,256,-1,1])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(f);axis([0,256,-1,1])title('窗选语音信号');xlabel('样点数');ylabel('幅度');subplot(3,1,3);plot(pinlv,signal);xlabel('频率/Hz');ylabel('对数幅度/dB');title ('加Hamming窗时语音频谱2.加汉明窗的清音clear;close all;x = wavread('f:\\k.wav');x = double(x);FrameLen =256;FrameInc =128;s = enframe(x, FrameLen, FrameInc);ss=s(90,:); %选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)f=ss'.*hamming(length(ss));r=fft(f,512);r1=abs(r);r1=r1/max(r1);yuanlai=20*log10(r1);signal(1:256)=yuanlai(1:256);pinlv=(0:1:255)*11025/512;figure;subplot(3,1,1);plot(ss);axis([0,256,-1,1])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(f);axis([0,256,-1,1])title('窗选语音信号');xlabel('样点数');ylabel('幅度');subplot(3,1,3);plot(pinlv,signal);xlabel('频率/Hz');ylabel('对数幅度/dB');title ('加Hamming窗时语音频谱3.加矩形窗的浊音clear;close all;x = wavread('f:\\a.wav');x = double(x);FrameLen =256;FrameInc =128;s = enframe(x, FrameLen, FrameInc);ss=s(125,:); %选取一帧语音信号(可以通过观察短时能量的分布来判断哪一帧是清音段还是浊音段)f=ss'.*rectwin(length(ss));r=fft(f,512);r1=abs(r);r1=r1/max(r1);yuanlai=20*log10(r1);signal(1:256)=yuanlai(1:256);pinlv=(0:1:255)*11025/512;figure;subplot(3,1,1);plot(ss);axis([0,256,-1,1])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(f);axis([0,256,-1,1])title('窗选语音信号');xlabel('样点数');ylabel('幅度');subplot(3,1,3);plot(pinlv,signal);xlabel('频率/Hz');ylabel('对数幅度/dB');title ('加矩形窗时语音频谱)8.实验结果及其分析浊音(1) 短时能量0.51 1.52 2.53 3.54x 104-1012语音信号时域波形样点数幅度050100语音信号的短时能量帧数短时能量(2) 短时过零率0.511.52 2.533.54x 104-1-0.500.51语音信号时域波形样点数幅度102030帧数短时过零率语音信号的短时过零率(3) 短时傅里叶变换01截取的语音段样点数幅度5010015020025001窗选语音信号样点数幅度-1000频率/Hz对数幅度/d B加Hamming 窗时语音频谱清音(1) 短时能量x 104012语音信号时域波形样点数幅度0204060语音信号的短时能量帧数短时能量(2) 短时过零率x 104-1-0.500.51语音信号时域波形样点数幅度5010015020025030035005101520帧数短时过零率语音信号的短时过零率(3) 短时傅里叶变换01截取的语音段样点数幅度01窗选语音信号样点数幅度5001000150020002500300035004000-1000频率/Hz对数幅度/d B加Hamming 窗时语音频谱(4) 显示清音短时过零率x 10401语音信号时域波形样点数幅度05101520帧数短时过零率语音信号的短时过零率加窗(1)加汉明窗的浊音50100150200250-101截取的语音段样点数幅度50100150200250-101窗选语音信号样点数幅度100020003000400050006000-100-500频率/Hz对数幅度/d B加Hamming 窗时语音频谱(2)加汉明窗的清音-101截取的语音段样点数幅度50100150200250-101窗选语音信号样点数幅度-100-500频率/Hz对数幅度/d B加Hamming 窗时语音频谱(3)加矩形窗的浊音50100150200250-101截取的语音段样点数幅度-101窗选语音信号样点数幅度-100-500频率/Hz对数幅度/d B加矩形窗时语音频谱分析:(1)对于浊音与清音,浊音的幅值比较明显,有一个的波动,能清楚的看清楚它的周期;而清音类似于白噪声,没有明显的幅值,很平缓。
语音信号_实验报告
一、实验目的1. 理解语音信号的基本特性及其在数字信号处理中的应用。
2. 掌握语音信号的采样、量化、编码等基本处理方法。
3. 学习语音信号的时域、频域分析技术。
4. 熟悉语音信号的增强、降噪等处理方法。
二、实验原理语音信号是一种非平稳信号,其特性随时间变化。
在数字信号处理中,我们通常采用采样、量化、编码等方法将语音信号转换为数字信号,以便于后续处理和分析。
三、实验内容1. 语音信号的采集与预处理- 使用麦克风采集一段语音信号。
- 对采集到的语音信号进行预加重处理,提高高频成分的幅度。
- 对预加重后的语音信号进行采样,采样频率为8kHz。
2. 语音信号的时域分析- 画出语音信号的时域波形图。
- 计算语音信号的短时能量和短时平均过零率,分析语音信号的时域特性。
3. 语音信号的频域分析- 对语音信号进行快速傅里叶变换(FFT)分析,得到其频谱图。
- 分析语音信号的频谱特性,提取关键频段。
4. 语音信号的增强与降噪- 在语音信号中加入噪声,模拟实际应用场景。
- 使用谱减法对加噪语音信号进行降噪处理。
- 对降噪后的语音信号进行主观评价,比较降噪效果。
5. 语音信号的回放与对比- 对原始语音信号和降噪后的语音信号进行回放。
- 对比分析两种语音信号的时域波形、频谱图和听觉效果。
四、实验步骤1. 采集语音信号- 使用麦克风采集一段时长为5秒的语音信号。
- 将采集到的语音信号保存为.wav格式。
2. 预处理- 使用Matlab中的preemphasis函数对采集到的语音信号进行预加重处理。
- 设置预加重系数为0.97。
3. 时域分析- 使用Matlab中的plot函数画出语音信号的时域波形图。
- 使用Matlab中的energy和zero crossing rate函数计算语音信号的短时能量和短时平均过零率。
4. 频域分析- 使用Matlab中的fft函数对语音信号进行FFT变换。
- 使用Matlab中的plot函数画出语音信号的频谱图。
语音信号处理教学大纲
语音信号处理教学大纲一、引言语音信号处理作为一门交叉学科,涵盖了信号处理、语言学、声学等多个领域的知识和技术。
本教学大纲旨在介绍语音信号处理的基本理论和方法,培养学生对语音信号分析、合成和识别的能力,为他们在语音合成、语音识别、语音增强等应用领域发展提供基础。
二、教学目标1. 理解语音信号的基本概念和特征,能够说明语音信号处理的重要性和应用领域。
2. 熟悉语音信号的数字表示方法,包括时域分析和频域分析。
3. 掌握语音信号处理的基本方法,包括预处理、特征提取、模型建立和参数估计。
4. 能够应用所学方法进行语音信号的分析、合成和识别,并能够解释结果。
5. 培养学生的创新思维和实践能力,使其能够在语音信号处理领域开展研究工作或应用项目。
三、教学内容和学时分配1. 语音信号的基本概念和特征(3学时)1.1 语音信号的定义和表示1.2 语音信号的时域特征1.3 语音信号的频域特征2. 数字信号处理基础(6学时)2.1 采样和量化2.2 数字滤波器设计2.3 傅里叶变换和频域分析3. 语音信号的预处理(6学时)3.1 语音增强技术3.2 语音端点检测3.3 噪声去除4. 语音信号的特征提取(9学时)4.1 短时能量和短时过零率4.2 声谱图和倒谱分析4.3 线性预测编码(LPC)4.4 线性预测倒谱系数(LPCC)4.5 基频和共振峰估计5. 语音信号的分析与合成(12学时)5.1 数字信号的线性预测分析和合成5.2 短时傅里叶变换分析和合成5.3 矢量量化(VQ)合成5.4 拟合声纹分析和合成6. 语音信号的识别与识别率评估(15学时)6.1 隐马尔可夫模型(HMM)基础6.2 维特比算法6.3 声学模型训练和特征匹配6.4 语音识别系统性能评估7. 高级主题和应用(9学时)7.1 语音情感识别7.2 语音增强和降噪算法7.3 语音合成技术7.4 语音识别的前沿研究四、教学方法本课程将采用多种教学方法,包括理论讲解、案例分析、实验操作和课堂讨论。
语音信号的频域分析
图5.2 同济大学电子与信息工程学院 - 5 用移动窗选取语音段示意图 赵晓群 教授
w(n m)
m
第5章
语音信号的频域分析
5.3
短时 Fourier 变换(STFT)的定义和性质
x(m)的短时 Fourier 变换(STFT)Xn(ejω)的定义:
X n (e ) m x(m) w(n m)e-jm
◆准确地恢复原信号的唯一约束条件是 w(0)≠0 。
同济大学电子与信息工程学院
- 7 -
赵晓群 教授
第5章
语音信号的频域分析
5.3
短时 Fourier 变换(STFT)的定义和性质
由STFT的谱 Xn(ejω) 求解 x(m) 的 Fourier 变换 X(ejω) 方法。 假设 x(m) 和 w(m) 的 Fourier 变换都存在,即:
j
式中, w(n)是窗函数。 ◆为位于 n 处的窗口观察到的窗选语音短段的 Fourier 变换; ◆ n 取不同值时,取出不同的语音短段;
◆ Xn(ejω) 是频率ω 和时间 n 的函数;有时-频性。
要求: STFT 存在,则对所有 n 值,一定绝对可和。 ◆因窗宽有限,或无限冲激响应窗函数,其有效宽度有限, 故满足绝对可和。
语音是非平稳信号,源于发声器官的物理运动过程。
◆在短时间段(如10 ~ 30 ms)内可认为是平稳的; ◆用时间依赖处理方法分析处理。
同济大学电子与信息工程学院 - 2 赵晓群 教授
第 5章
语音信号的频域分析
5.1
概述
短时 Fourier 分析(时间依赖 Fourier 变换):
用稳态分析处理非平稳信号的一种方法 语音的频域分析:包括语音信号的频谱、功率谱、倒频谱、 频谱包络等, 常用频域分析方法:带通滤波器组法、Fourier 变换法、
语音信号处理实验报告.doc
语音信号处理实验班级:学号:姓名:实验一基于MATLAB的语音信号时域特征分析(2 学时)1)短时能量( 1)加矩形窗a=wavread('mike.wav');a=a(:,1);subplot(6,1,1),plot(a);N=32;for i=2:6h=linspace(1,1,2.^(i-2)*N);%形成一个矩形窗,长度为 2.^(i-2)*NEn=conv(h,a.*a);% 求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2) ,legend('N=32' );elseif(i==3), legend('N=64' );elseif(i==4) ,legend('N=128' );elseif(i==5) ,legend('N=256' );elseif(i==6) ,legend('N=512' );endend1-10.5 1 1.5 2 2.54 x 102N=32 0 0.5 1 1.5 2 2.55 x 10N=64 0 0.5 1 1.5 2 2.510 x 1050.5 1 1.5 2 2.5 N=128 020 x 10100.5 1 1.5 2 2.5 N=256 040 x 1020N=5120 0.5 1 1.5 2 2.5x 10( 2)加汉明窗a=wavread('mike.wav');a=a(:,1);subplot(6,1,1),plot(a);N=32; 3 43 43 43 43 43 4for i=2:6h=hanning(2.^(i-2)*N);% 形成一个汉明窗,长度为 2.^(i-2)*NEn=conv(h,a.*a);% 求短时能量函数Ensubplot(6,1,i),plot(En);if(i==2), legend('N=32' );elseif(i==3), legend('N=64' );elseif(i==4) ,legend('N=128' );elseif(i==5) ,legend('N=256' );elseif(i==6) ,legend('N=512' );endend1-10.5 1 1.5 2 2.52 x 101N=32 0 0.5 1 1.5 2 2.54 x 102N=64 0 0.5 1 1.5 2 2.54 x 102N=128 0 0.5 1 1.5 2 2.510 x 105N=256 0 0.5 1 1.5 2 2.520 x 1010N=5120 0.5 1 1.5 2 2.5x 102)短时平均过零率a=wavread('mike.wav');a=a(:,1);n=length(a);N=320;subplot(3,1,1),plot(a);h=linspace(1,1,N);En=conv(h,a.*a); %求卷积得其短时能量函数Ensubplot(3,1,2),plot(En);for i=1:n-1if a(i)>=0 3 43 43 43 43 43 4elseb(i) = -1;endif a(i+1)>=0b(i+1)=1;elseb(i+1)= -1;endw(i)=abs(b(i+1)-b(i)); %求出每相邻两点符号的差值的绝对值endk=1;j=0;while (k+N-1)<nZm(k)=0;for i=0:N-1;Zm(k)=Zm(k)+w(k+i);endj=j+1;k=k+N/2; % 每次移动半个窗endfor w=1:jQ(w)=Zm(160*(w-1)+1)/(2*N); %短时平均过零率endsubplot(3,1,3),plot(Q),grid;1-100.51 1.52 2.5 34x 10201000.51 1.52 2.5 34x 100.50204060801001201401601803)自相关函数N=240y=wavread('mike.wav');y=y(:,1);x=y(13271:13510);x=x.*rectwin(240);R=zeros(1,240);for k=1:240for n=1:240-kR(k)=R(k)+x(n)*x(n+k);endendj=1:240;plot(j,R);grid;2.521.510.5-0.5-1-1.5050100150200250实验二基于 MATLAB 分析语音信号频域特征1)短时谱cleara=wavread('mike.wav');a=a(:,1);subplot(2,1,1),plot(a);title('original signal');gridN=256;h=hamming(N);for m=1:Nb(m)=a(m)*h(m)endy=20*log(abs(fft(b)))subplot(2,1,2)plot(y);title('短时谱 ');gridoriginal signal10.5-0.5-100.51 1.52 2.5 34x 10短时谱10.500.20.40.60.81 1.2 1.4 1.6 1.8 22)语谱图[x,fs,nbits]=wavread('mike.wav')x=x(:,1);specgram(x,512,fs,100);xlabel('时间 (s)');ylabel('频率 (Hz)' );title('语谱图 ');语谱图50004000)zH3000(率频200010000.51 1.5 2时间 (s) 3)倒谱和复倒谱(1)加矩形窗时的倒谱和复倒谱cleara=wavread('mike.wav',[4000,4350]);a=a(:,1);N=300;h=linspace(1,1,N);for m=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title( '加矩形窗时的倒谱')subplot(2,1,2)plot(c);title( '加矩形窗时的复倒谱')加矩形窗时的倒谱1-1-2050100150200250300加矩形窗时的复倒谱105-5-10050100150200250300(2)加汉明窗时的倒谱和复倒谱 cleara=wavread('mike.wav',[4000,4350]);a=a(;,1);N=300;h=hamming(N);for m=1:Nb(m)=a(m)*h(m);endc=cceps(b);c=fftshift(c);d=rceps(b);d=fftshift(d);subplot(2,1,1)plot(d);title( '加汉明窗时的倒谱')subplot(2,1,2)plot(c);title( '加汉明窗时的复倒谱')加汉明窗时的倒谱1-1-2-3050100150200250300加汉明窗时的复倒谱105-5-10050100150200250300实验三基于 MATLAB 的 LPC 分析MusicSource = wavread('mike.wav');MusicSource=MusicSource(:,1);Music_source = MusicSource';N = 256; % window length, N = 100 -- 1000;Hamm = hamming(N); % create Hamming windowframe = input( '请键入想要处理的帧位置= ' );% origin is current frameorigin = Music_source(((frame - 1) * (N / 2) + 1):((frame - 1) * (N / 2) + N));Frame = origin .* Hamm';%%Short Time Fourier Transform%[s1,f1,t1] = specgram(MusicSource,N,N/2,N);[Xs1,Ys1] = size(s1);for i = 1:Xs1FTframe1(i) = s1(i,frame);endN1 = input( '请键入预测器阶数= ' ); % N1 is predictor's order[coef,gain] = lpc(Frame,N1); % LPC analysis using Levinson-Durbin recursionest_Frame = filter([0 -coef(2:end)],1,Frame); % estimate frame(LP)FFT_est = fft(est_Frame);err = Frame - est_Frame; % error% FFT_err = fft(err);subplot(2,1,1),plot(1:N,Frame,1:N,est_Frame,'-r');grid;title('原始语音帧 vs.预测后语音帧 ')subplot(2,1,2),plot(err);grid;title('误差 ');pause%subplot(2,1,2),plot(f',20*log(abs(FTframe2)));grid;title('短时谱 ')%%Gain solution using G^2 = Rn(0) - sum(ai*Rn(i)),i = 1,2,...,P%fLength(1 : 2 * N) = [origin,zeros(1,N)];Xm = fft(fLength,2 * N);X = Xm .* conj(Xm);Y = fft(X , 2 * N);Rk = Y(1 : N);PART = sum(coef(2 : N1 + 1) .* Rk(1 : N1));G = sqrt(sum(Frame.^2) - PART);A = (FTframe1 - FFT_est(1 : length(f1'))) ./ FTframe1 ; % inverse filter A(Z)subplot(2,1,1),plot(f1',20*log(abs(FTframe1)),f1',(20*log(abs(1 ./ A))),'-r');grid;title('短时谱 ');subplot(2,1,2),plot(f1',(20*log(abs(G ./ A))));grid;title( 'LPC谱 ');pause%plot(abs(ifft(FTframe1 ./ (G ./ A))));grid;title('excited')%plot(f1',20*log(abs(FFT_est(1 : length(f1')) .* A / G )));grid;%pause%%find_pitch%temp = FTframe1 - FFT_est(1 : length(f1'));%not move higher frequncepitch1 = log(abs(temp));pLength = length(pitch1);result1 = ifft(pitch1,N);% move higher frequncepitch1((pLength - 32) : pLength) = 0;result2 = ifft(pitch1,N);%direct do real cepstrum with errpitch = fftshift(rceps(err));origin_pitch = fftshift(rceps(Frame));subplot(211),plot(origin_pitch);grid;title( '原始语音帧倒谱 (直接调用函数 )');subplot(212),plot(pitch);grid;title( '预测误差倒谱 (直接调用函数 )');pausesubplot(211),plot(1:length(result1),fftshift(real(result1)));grid;title('预测误差倒谱 (根据定义编写,没有去除高频分量)');subplot(212),plot(1:length(result2),fftshift(real(result2)));grid;title('预测误差倒谱 (根据定义编写,去除高频分量 )');原始语音帧 vs. 预测后语音帧0.40.2-0.2-0.4050100150200250300误差0.20.1-0.1-0.2050100150200250300短时谱50-50-100010203040506070LPC 谱100806040010203040506070原始语音帧倒谱(直接调用函数)0.5-0.5-1050100150200250300预测误差倒谱(直接调用函数)0.5-0.5-1050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300预测误差倒谱(根据定义编写,没有去除高频分量)0.2-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1-0.1-0.2-0.3050100150200250300实验四基于 VQ 的特定人孤立词语音识别研究1、mfcc.mfunction ccc = mfcc(x)bank=melbankm(24,256,8000,0,0.5,'m' );bank=full(bank);bank=bank/max(bank(:));for k=1:12n=0:23;dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));endw = 1 + 6 * sin(pi * [1:12] ./ 12);w = w/max(w);xx=double(x);xx=filter([1 -0.9375],1,xx);xx=enframe(xx,256,80);for i=1:size(xx,1)y = xx(i,:);s = y' .* hamming(256);t = abs(fft(s));t = t.^2;c1=dctcoef * log(bank * t(1:129));c2 = c1.*w';m(i,:)=c2';enddtm = zeros(size(m));for i=3:size(m,1)-2dtm(i,:) = -2*m(i-2,:) - m(i-1,:) + m(i+1,:) + 2*m(i+2,:);enddtm = dtm / 3;ccc = [m dtm];ccc = ccc(3:size(m,1)-2,:);2、vad.mfunction [x1,x2] = vad(x)x = double(x);x = x / max(abs(x));FrameLen = 240;FrameInc = 80;amp1 = 10;amp2 = 2;zcr1 = 10;zcr2 = 5;maxsilence = 8; % 6*10ms = 30msminlen = 15; % 15*10ms = 150msstatus = 0;count = 0;silence = 0;tmp1 = enframe(x(1:end-1), FrameLen, FrameInc);tmp2 = enframe(x(2:end) , FrameLen, FrameInc);signs = (tmp1.*tmp2)<0;diffs = (tmp1 -tmp2)>0.02;zcr = sum(signs.*diffs, 2);amp = sum(abs(enframe(filter([1 -0.9375], 1, x), FrameLen, FrameInc)), 2); amp1 = min(amp1, max(amp)/4);amp2 = min(amp2, max(amp)/8);x1 = 0;x2 = 0;for n=1:length(zcr)goto = 0;switch statuscase {0,1}if amp(n) > amp1x1 = max(n-count-1,1);status = 2;silence = 0;count= count + 1;elseif amp(n) > amp2 | ...zcr(n) > zcr2status = 1;count = count + 1;elsestatus = 0;count= 0;endcase 2,if amp(n) > amp2 | ...zcr(n) > zcr2count = count + 1;elsesilence = silence+1;if silence < maxsilence count = count + 1;elseif count < minlenstatus = 0;silence = 0;count= 0;elsestatus = 3;endendcase 3,break;endendcount = count-silence/2;x2 = x1 + count -1;3、codebook.m%clear;function xchushi= codebook(m) [a,b]=size(m);[m1,m2]=szhixin(m);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);[m7,m8]=szhixin(m4);[m5,m6]=szhixin(m3);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);[m15,m16]=szhixin(m8);[m13,m14]=szhixin(m7);[m11,m12]=szhixin(m6);[m9,m10]=szhixin(m5);[m7,m8]=szhixin(m4);[m5,m6]=szhixin(m3);[m3,m4]=szhixin(m2);[m1,m2]=szhixin(m1);chushi(1,:)=zhixinf(m1);chushi(2,:)=zhixinf(m2);chushi(3,:)=zhixinf(m3);chushi(4,:)=zhixinf(m4);chushi(5,:)=zhixinf(m5);chushi(6,:)=zhixinf(m6);chushi(7,:)=zhixinf(m7);chushi(8,:)=zhixinf(m8);chushi(9,:)=zhixinf(m9);chushi(10,:)=zhixinf(m10);chushi(11,:)=zhixinf(m11);chushi(12,:)=zhixinf(m12);chushi(13,:)=zhixinf(m13);chushi(14,:)=zhixinf(m14);chushi(15,:)=zhixinf(m15);chushi(16,:)=zhixinf(m16);sumd=zeros(1,1000);k=1;dela=1;xchushi=chushi;while(k<=1000)sum=ones(1,16);for p=1:afor i=1:16d(i)=odistan(m(p,:),chushi(i,:));enddmin=min(d);sumd(k)=sumd(k)+dmin;for i=1:16if d(i)==dminxchushi(i,:)=xchushi(i,:)+m(p,:);sum(i)=sum(i)+1;endendendfor i=1:16xchushi(i,:)=xchushi(i,:)/sum(i); endif k>1dela=abs(sumd(k)-sumd(k-1))/sumd(k); endk=k+1;chushi=xchushi;endreturn4、 testvq.mclear;disp('这是一个简易语音识别系统,请保证已经将您的语音保存在相应文件夹中') disp('正在训练您的语音模版指令,请稍后...')for i=1:10fname = sprintf(海儿的声音\\%da.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);m = mfcc(x);m = m(x1:x2-5,:);ref(i).code=codebook(m);enddisp('语音指令训练成功,恭喜!)?'disp('正在测试您的测试语音指令,请稍后...')for i=1:10fname = sprintf(海儿的声音\\%db.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);mn = mfcc(x);mn = mn(x1:x2-5,:);%mn = mn(x1:x2,:)test(i).mfcc = mn;endsumsumdmax=0;sumsumdmin=0;disp('对训练过的语音进行测试')for w=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);for i=1:10for p=1:afor j=1:16d(j)=odistan(test(w).mfcc(p,:),ref(i).code(j,:));enddmin=min(d);sumd(i)=sumd(i)+dmin; %×üê§??endendsumdmin=min(sumd)/a;sumdmin1=min(sumd);sumdmax(w)=max(sumd)/a;sumsumdmin=sumdmin+sumsumdmax;sumsumdmax=sumdmax(w)+sumsumdmax;disp('正在匹配您的语音指令,请稍后...')for i=1:10if (sumd(i)==sumdmin1)switch (i)case 1fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'前 ', '前 ');case2fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'后 ', '后 ');case3fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'左 ', '左 ');case4fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'右 ', '右 ');case5fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'东 ', '东 ');case6fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'南 ', '南 ');case7fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'西 ', '西 ');case8fprintf( '您输入的语音指令为:%s; 识别结果为 %s\n' ,'北 ', '北 ');case9fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'上 ', '上 ');case10fprintf( '您输入的语音指令为a:%s;识别结果为 %s\n' ,'下 ', '下 ');otherwisefprintf( 'error');endendendenddelamin=sumsumdmin/10;delamax=sumsumdmax/10;disp('对没有训练过的语音进行测试')disp('正在测试你的语音,请稍后...')for i=1:10fname = sprintf(o£ ?ùμ ?éùò?\\%db.wav' ,i-1);x = wavread(fname);[x1 x2] = vad(x);mn = mfcc(x);mn = mn(x1:x2-5,:);%mn = mn(x1:x2,:)test(i).mfcc = mn;endfor w=1:10sumd=zeros(1,10);[a,b]=size(test(w).mfcc);for i=1:10for p=1:afor j=1:16d(j)=odistan(test(w).mfcc(p,:),ref(i).code(j,:));enddmin=min(d);sumd(i)=sumd(i)+dmin; %×üê§??endendsumdmin=min(sumd);z=0;for i=1:10if (((sumd(i))/a)>delamax)||z=z+1;endenddisp('正在匹配您的语音指令,请稍后...')if z<=3for i=1:10if (sumd(i)==sumdmin)switch (i)case 1fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'前 ', '前 ');case2fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'后 ', '后 ');case3fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'左 ', '左 ');case4fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'右 ', '右 ');case5fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'东 ', '东 ');case6fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'南 ', '南 ');case7fprintf( '您输入的语音指令为:%s; 识别结果为%s\n' ,'西 ', '西 ');case8fprintf( '您输入的语音指令为 :%s; 识别结果为 %s\n' ,'北 ', '北 ');case9fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'上 ', '上 ');case10fprintf( '您输入的语音指令为a:%s;识别结果为%s\n' ,'下 ', '下 ');otherwisefprintf( 'error');endendendelsefprintf( '您输入的语音无效?\n'£)?endend(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)。
实验1语音信号的时域和频域分析
N太大,能量随时间变化很小,不能反映语音信号的 幅度变化,波形的变化细节就看不出来;
N太小,滤波器的通带变宽,短时能量随时间有剧烈 变化,不能得到平滑的能量函数。
窗口的选择(长度的确定)又需相对不同的基 音周期来选择。通常情况下,一个语音帧内应 含有1—7个基音周期。然而不同的人其基音周 期变化范围很大,因此窗口宽度(N)的选择 有一个折衷选择为100—200(即10—20ms持续 时间)。
Z 2 f0 fs
借助平均过零数及取样频率可精确算出频率。
对于语音信号序列是宽带信号,所以不能简单地用上 面的公式计算频率。但是,可借助短时平均过零数来
得到其频谱的粗略估计。
语音信号的短时平均过零数定义为
Zn|sgn[x(m)]sgn[x(m1)]|w(nm)
|sgn[x(m)]sgn[x(m1)]|*w(n)
当选择不同长度的窗时的短时能量
[x,fs]=wavread('c:\wang.wav'); FrameLen1 = 51; FrameLen2 = 101; FrameLen3 = 201; FrameLen4 = 401; FrameInc = 80; subplot(5,1,1);plot(x);title('原波形图') amp = sum(abs(enframe(filter([1 -0.9375], 1,
四、实验报告要求
1、简述实验目的和实验原理; 2、matlab程序清单及结果图形; 3、实验结果分析
添加:VOICEBOX工具箱
解压voicebox.zip, 将整个目录voicebox复制到MATLAB的安
声音的时域频域分析
音高
音高也称基音,物理单位为赫兹,主观感觉
的音高单位为“美”(Mel)。当声强级为40dB, 频率为1kHZ时,设定音高为1000美。 音高与响度之间具有互为补充的关系,例如 可用频率补充声强使得人们感觉像度相同,也可用 声强补充频率使得人们感觉音高相同。
2.
不同声音的区别与分析
声音类型
The kinds of voice
0
0
500
1000 1500 2000 2500 3000 3500 4000 4500 5000
不同类型声音对比分析
笛子的语谱图 钢琴的语谱图
20
20
频 率 /Hz
10
频 率 /Hz
频 率 /Hz
10
频 率 /Hz
幅度
15
15
10
5
5
0
0
2
4
6 时 间 /s 萨克斯的语谱图
8
10 x 10
-3
0
0
0
500
1000
1500
2000 2500 3000 frequency/Hz
3500
4000
4500
5000
频率
0 500 1000 1500 2000 2500 3000 frequency/Hz 3500 4000 4500 5000
不同类型声音对比分析
类型 性别差异 乐器差异 语种差异
时域图 图1-1 图2-1 图3-1 波形主要由占空比 和响度决定,不同 类型的声音时域图 差别较大。乐器的 响度普遍高于人声, 男生的响度略高于 女生。
若空气流经声带时,声带为完全舒展开的,声道 将会形成一个狭隘的通道形成湍急的空气流,发 出摩擦清音;或是完全闭合,在气流达到开启点 后快速释放,经声道形成爆破清音。
语音信号时域和频域通俗理解_概述及解释说明
语音信号时域和频域通俗理解概述及解释说明1. 引言1.1 概述语音是人类最基本、也是最常用的沟通方式之一。
人们通过声音来传递信息和表达情感。
对于语音信号的分析和处理,时域和频域是两个重要的角度。
时域分析主要关注声音信号在时间上的变化规律,而频域分析则关注声音信号在频率上的成分组成。
1.2 文章结构本文将以通俗易懂的方式,对语音信号的时域和频域进行解释和说明。
首先,我们将介绍时域和频域分析的基本概念及其重要性,然后详细讨论时域与频域分析中涉及到的关键点和方法。
最后,我们将总结观点并给出读者一些启示和建议。
1.3 目的本文旨在帮助读者理解语音信号时域与频域这两个概念,并且能够清晰明了地认识到它们在语音信号处理中所起到的作用。
通过对时域与频域分析方法的说明,读者可以更好地理解并应用这些知识于实际问题中。
同时,本文也希望能够引发读者对语音信号处理的更深层次的思考和探索。
2. 语音信号时域与频域通俗理解:2.1 语音信号时域分析:语音信号的时域分析是对声音在时间上的变化进行研究和处理。
时域分析主要关注声音的振幅和时间之间的关系。
在时域中,我们可以观察到声音振动的波形图。
当我们录制一段语音时,在录制过程中,麦克风会将声音转换为电信号,并按照一定的采样率记录下来。
这些记录的电信号就是我们所说的波形图。
波形图横坐标表示时间,纵坐标表示振幅。
通过观察波形图,我们可以获得很多有用的信息。
例如,振幅可以告诉我们声音的强度或者说响度,而波形图上不同部分振幅大小和模式的变化可以揭示出不同语音特征(如元音、辅音等)以及语速、语调等信息。
2.2 语音信号频域分析:语音信号的频域分析是对声音中各种频率成分进行研究和处理。
频域分析更注重声音中各个频率成分之间的关系以及它们在声谱上呈现出来的特征。
通过傅里叶变换的方法,我们可以将时域中记录的波形图转换为频谱图。
频谱图显示了声音中不同频率成分在整个录制时间内的存在情况。
横坐标表示频率,纵坐标表示声音强度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
短时过零分析
过零就是信号通过零值。 考察连续语音信号其时域波形通过时间轴的情
况。 通过相邻取值改变符号判断是否过零,从而计
算过零数。 单位时间内的过零数称为平均过零数。
对窄带信号,平均过零数计算比较简单。 例:有一频率为f0的正弦信号,以取样频率fs进
行取样,则每个正弦周期内有fs/f0个取样,另外, 每个正弦周期有二次过零,所以平均过零数为
四、实验报告要求
1、简述实验目的和实验原理; 2、matlab程序清单及结果图形; 3、实验结果分析
添加:VOICEBOX工具箱
解压voicebox.zip, 将整个目录voicebox复制到MATLAB的安
装目录的TOOLBOX目录下,如:
c:\program files\MATLAB\r2007b\toolbox\ 将voicebox加到MATLAB的搜索路径中。 >> addpath(genpath(‘c:\program files\
窗口的长度:无论什么形状的窗口,窗口序列的长 度N将起决定性的作用。
N太大,能量随时间变化很小,不能反映语音信号的 幅度变化,波形的变化细节就看不出来;
N太小,滤波器的通带变宽,短时能量随时间有剧烈 变化,不能得到平滑的能量函数。
窗口的选择(长度的确定)又需相对不同的基 音周期来选择。通常情况下,一个语音帧内应 含有1—7个基音周期。然而不同的人其基音周 期变化范围很大,因此窗口宽度(N)的选择 有一个折衷选择为100—200(即10—20ms持续 时间)。
式子中 sgn[x(n)] 是符号函数,
sgn[x(n)] 1,1,xx((nn)) 00
W(n)为窗口序列,其作用于短时平均能量一样。
短时平均过零数的实现
首先对语音信号序列进行成对采样地查对采样 以确定是否发生过零,若发生符号变化,则表 示有一次过零,而后进行一阶差分计算,再求 取绝对值,最后进行低通滤波。
实验一 语音信号的时域和频域分析
一、实验目的
理解和掌握语音信号的数字化和预处理方法。 理解短时能量分析、短时过零分析、短时相关
分析。 语音信号的短时傅立叶分析方法。
二、实验原理
语音信号分析可分为时域、频域、倒谱域等方法。 贯穿于语音分析全过程的是“短时分析技术”。
语音信号特性是随时间而变化的,是一个非平稳 的随机过程。但从另一方面,在一个相对短时间范 围内其特性基本保持不变。对于这种特点是语音信 号处理的一个重要出发点。因此我们可以采用平稳 过程的分析处理方法来处理语音。
绘制该语音信号短时平均能量
%读入声音文件 [x,fs]=wavread('c:\wang.wav');
%常数设置 FrameLen = 240; FrameInc = 80; %计算短时能量 amp = sum(abs(enframe(filter([1 -0.9375], 1, x),
FrameLen, FrameInc)), 2); subplot(1,2,1);plot(x);title('原波形图') subplot(1,2,2);plot(amp);title('短时平均能量图')
x),FrameLen1, FrameInc)), 2); subplot(5,1,2);plot(amp);title('短时平均能量图')
amp = sum(abs(enframe(filter([1 -0.9375], 1, x),FrameLen2, FrameInc)), 2);
subplot(5,1,3);plot(amp);title('短时平均能量图') amp = sum(abs(enframe(filter([1 -0.9375], 1,
x),FrameLen3, FrameInc)), 2); subplot(5,1,4);plot(amp);title('短时平均能量图') amp = sum(abs(enframe(filter([1 -0.9375], 1,
x),FrameLen4, FrameInc)), 2); subplot(5,1,5);plot(amp);title('短时平均能量图')
Z 2 f0 fs
借助平均过零数及取样频率可精确算出频率。
对于语音信号序列是宽带信号,所以不能简单地用上 面的公式计算频率。但是,可借助短时平均过零数来
得到其频谱的粗略估计。
语音信号的短时平均过零数定义为
Zn|sgn[x(m)]sgn[x(m1)]|w(nm)
|sgn[x(m)]sgn[x(m1)]|*w(n)
例:任选一段语音信号,对其进行采样,画出采 样以后的时域波形。
[x1,fs]=wavread('c:\wang.wav'); %读取语音信号
sound(x1,fs);
%播放语音信号
plot(x1)
%做原始语音信号的时域图形
title('原始语音信号');
xlabel('time');
ylabel('windows');
时域分析
时域分析是语音分析中最早使用,应用范围最 广的一种方法。
特点: 1、表示语音信号比较直观。(语音信号本
身就是时域信号) 2、实现简单、运算量小。 3、可以得到语音的一些重要参数。
常用短时分析技术
短时能量 短时平均幅度 短时过零率 短时自相关函数 短时平均幅度差函数 短时频谱 短时功率谱
短时能量分析
能量分析是基于语音信号能量随时间有相当大 的变化,特别是清音段的能量一般比浊音段的 小得多。
短时分析将语音流分为一段一段来处理,每一 段称为一“帧”。
用有限长窗函数进行加权来实现。
En [x(m)w(nm)]2
不同的窗口选择(形状、长度),将决定短时能量 的特性。
窗口的形状:窗口有多种形状,他们都是中心对称 的。
当选择不同长度的窗时的短时能量
[x,fs]=wavread('c:\wang.wav'); FrameLen1 = 51; FrameLen2 = 101; FrameLen3 = 201; FrameLen4 = 401; FrameInc = 80; subplot(5,1,1);plot(x);title('原波形图') amp = sum(abs(enframe(filter([1 -0.9375], 1,