语音采集基于matlab语音采集及处理含Matlab源码 1737期

Posted 紫极神光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音采集基于matlab语音采集及处理含Matlab源码 1737期相关的知识,希望对你有一定的参考价值。

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【语音采集】基于matlab语音采集及处理【含Matlab源码 1737期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、简介

1 课程设计的目的
通过数字信号处理的课程设计,使学生对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。巩固和运用数字信号处理课程中的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,培养学生发现问题,分析问题和解决问题的能力。

2 课程设计的题目
语音信号的采集、分析与处理。

3 设计内容 (主要技术关键的分析、解决思路和方案比较等)
对一段语音信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。
设计内容:采样一段语音信号;画出语音信号的时域波形和频谱图;给定滤波器的性能指标,设计数字滤波器,并画出滤波器的频率响应;然后用设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱。
关键技术:频谱图的理解;设计数字滤波器;数字滤波的方法;
解决思路:对语音号进行快速傅里叶变换,得到信号的频谱特性;在MATLAB环境中可以利用函数fir设计FIR滤波器,可以利用函数butter设计IIR滤波器;利用MATLAB中的函数freqz画出各滤波器的频率响应。

4 设计原理及步骤
4.1 语音信号的采集
语音信号是一种模拟信号,首先须经过采样将其转换为数字信号,实质是把连续信号变为脉冲或数字序列。 我们可以用录音软件先录一段wav格式的音频。然后用matlab的audioread函数采集,记住采样频率和采样点。然后用sound函数来使用。

4.2 语音信号的频谱特性
在MATLAB中,可以利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性。
快速傅氏变换(FFT),是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

4.3 语音信号的时域分析
语音信号的时域分析就是分析和提取语音信号的时域参数。进行语 音分析时,最先接触到并且也是最直观的是它的时域波形。语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。这种分析方法的特点是:
①表示语音信号比较直观、物理意义明确。
②实现起来比较简单、运算且少。
③可以得到语音的一些重要的参数。
④只使用示波器等通用设备,使用较为简单等。
语音信号的时域参数有短时能量、短时过零率、短时白相关函数和短时平均幅度差函数等,这是语音信号的一组最基本的短时参数,在各种语音信号数字处理技术中都要应用。在计算这些参数时使用的一般是方窗或汉明窗。对语音信号进行分析,发现发浊音时,尽管声道有若干个共振峰,但由于声门波引起谱的高频跌落,所以其话音能量约集中在3kHz以下。而发清音时,多数能量出现在较高频率上。高频就意味着高的平均过零率,低频意味着低的平均过零率,所以可以认为浊音时具有较低的过零率,而清音时具有较高的过零率。当然,这种高低仅是相对而言,并没方精确的数值关系。

4.4 语音信号的频域分析
语音信号的频域分析就是分析语音信号的频域持征。从广义上讲,语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络分析等,而常用的频域分析方法有带通滤波器组法、傅里叶变换法、线件预测法等几种。因为语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能用来直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”。

4.5 采样定理
在进行模拟与数字信号的转换过程中,当采样大于最高频率的2倍时,则采样之后的数字信号完整的保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍。

4.6 采样频率
采样频率是指计算机每秒钟采样多少个声音样本,是描述声音文件的音质、音频、衡量声卡、声音文件的质量标准。采样频率越高,即采样的时间间隔越短,则在单位时间内计算机得到的声音样本数据越多,对声音波形的表示也越准确。

4.7 采样位数
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。采样位数和采样率对于音频接口来说是最为重要的两个指标。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。采样位数越多则捕捉到的信号越精确。

三、部分源代码

clear

clc
[pyr,fs]=audioread('a0007.wav');%声音读取
sound(pyr,fs);   %声音回放
n=length(pyr);
pyr1=fft(pyr,n);                            %快速傅里叶变换
figure(1)
subplot(2,1,1);
plot(pyr);  
xlabel('时间');
ylabel('幅度');
title('初始信号波形');   %绘出时域波
subplot(2,1,2);                         %绘出频域频谱
plot(abs(fftshift(pyr1)));
title('初始信号频谱');
xlabel('频率');
ylabel('幅度');
noise=0.01*randn(n,1);%加噪声

plot(s);
title('加噪声后信号波形')
xlabel('时间');
ylabel('幅度');
grid;
subplot(2,1,2)
plot(abs(fftshift(S)));
xlabel('频率');
ylabel('幅度');
title('加噪声后信号信号频谱');
grid;
pause



%低通滤波器特性

figure(3);
[h,w]=freqz(bz,az);
title('IIR低通滤波器');
plot(w*fs/(2*pi),abs(h));
%滤波

z=filter(bz,az,s);

               

%滤波后画出其频谱,波形
Z=fft(z);                           %滤波后的信号频谱
figure(4)
subplot(2,2,1);
plot(z);
title('低通滤波后的信号波形');
xlabel('时间');
ylabel('幅度');
grid;
subplot(2,2,2)
plot(s)
title('加噪声后信号波形');
xlabel('时间');
ylabel('幅度');
grid;
subplot(2,2,3);
plot(abs(fftshift(S)));
title('加噪声后信号频谱');
xlabel('频率');
ylabel('幅度');
grid;
subplot(2,2,4);
plot(abs(fftshift(Z)));
title('低通滤波后信号的频谱');
xlabel('频率');
ylabel('幅度');
grid;

四、运行结果




五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

以上是关于语音采集基于matlab语音采集及处理含Matlab源码 1737期的主要内容,如果未能解决你的问题,请参考以下文章

基于matlab的声音信号采集与处理

语音处理基于matlab GUI语音信号处理与滤波含Matlab源码 1663期

语音采集回放系统-硬件总结

语音加密基于matlab语音加密含Matlab源码 1303期

语音加密基于matlab GUI语音信号加密解密(带面板)含Matlab源码 181期

语音变速基于matlab语音变速变调含Matlab源码 2110期