matlab处理音频文件——语音识别实例

任务 教科书式的信号处理偏理论,不妨尝试现实中的音频文件,与实践接轨。 在工具包Signal Processing Toolbox的文档示例中有Find a Signal in a Measurement,通过相关xcorr()的计算找到一段数据中是否存在指定信号:与匹配滤波器的原理相一致。 导入音频文件 根据matlab提供丰富的文档说明: audioinfo(FilePath) 显示路径为FilePath文件的相应信息,例如第一个输出为如下所示,已知的信息如:压缩方式为’AAC’、2个声道、采样频率为48000Hz(1s采样48000次)、时长为44.0319、样本总数量2113532(采样频率*时长) wholeInfo = 包含以下字段的 struct: Filename: ‘C:\Users\cascara\Documents\录音\paragraph.m4a’ CompressionMethod: ‘AAC’ NumChannels: 2 SampleRate: 48000 TotalSamples: 2113532 Duration: 44.0319 Title: ‘paragraph’ Comment: [] Artist: [] BitRate: 199.3600 [y,Fs] = audioread(FilePath); 将文件路径FilePath对应的音频文件的样本y及频率Fs读取 sound(y,Fs) 电脑的扬声器播放音频的形式将读取的数据展示出来。 分离声道 首先用采样数量length(y)除以采样频率获得时间尺度,以1/Fs为分度值。 channel1=y(:,1); 已知音频数据包含两个声道,直接绘制图像可看到两种颜色的叠加。由matlab的语法,将矩阵进行切片,以提取两个声道的数据。 假设一个矩阵A A(1,:) %输出A矩阵的第一行 A(:,1) %输出A矩阵的第一列 A(1:2, 2:3)… Continue reading matlab处理音频文件——语音识别实例

匹配滤波器

信号矢量空间 空间是指赋予某种数学结构的集合 引入线性运算的矢量集合 线性空间 引入矢量长度“范数” 线性赋范空间 引入矢量间相互关系“内积” 内积空间 不同的空间具有相应数学运算规则、定理。信号的能量与矢量空间的长度可以类比,对于常用的范数||·||1、||·||2、||·||∞,在信号空间中具有的物理意义分别是强度、能量与幅值。 为了对能量无限如周期信号物理概念的描述,引入类似范数的平均值(直流分量)、平均功率。 此后,很多能量有限信号的定义对于功率有限信号失去意义,采用相似的推广方式得到可类比的定义。如相关、能量谱->功率谱 柯西——施瓦茨不等式的证明 信号的正交函数分解 求f1(t)=C12f2(t)中C12的推导: 而最终求最小方均误差的方法(一般情况推导戳链接): 帕塞瓦尔定理 对于完备正交函数满足帕塞瓦尔方程 物理意义:一个信号的功率恒等于在完备正交函数集上各分量的功率之和 数学意义:矢量空间信号的范数(内积)不变性 <f(t),f(t)>=<c,c> 相关 重点捋清能量信号的章节内容,功率信号可类比得出,主干清晰,减少篇幅: 匹配滤波器 h(t)=s(T-t) matlab实现 例题 例6-7在测距系统中,发送信号s(t),以匹配滤波器接收回波信号,利用滤波器输出信号峰值出现的时间折算目标距离。如果有两种可供选择的s(t)信号,分别如图6- 22(a)的s1(t)和(b)的s2(t)。求:(1)分别画出s1(t)和s2(t)自相关函数波形R11(t)和R22(t)。(2)为改善测距精度,你认为应选用s1(t)或s2(t)两种脉冲的哪一种信号? 基本思路 将非周期信号表示出来 matlab中的heaviside(t)函数表示阶跃函数,可以通过其的时移、叠加将题目的输入信号表示 将相关函数表示 积分通过函数int(f,t,a,b)实现:对函数f的自变量t从a到b积分 匹配滤波器就是相关函数的时移 整体的函数通过定义的符号变量实现 完整代码 定义部分 绘图部分 输出图片

调制与解调

任务 寒假了解吉布斯相率时,在维基百科递归查看了不少词条,其中就有调制与解调——不仅让我明白了“猫”名字的来源:modem的音译;也让我对这种智慧的工程方案赞叹,解决如何将多源的信息在一个局限的值域(频域)传递。【多路复用】 实现细节 调制 在学习《信号与系统》课程后,理解了信号时域和频域的转换,对实现的具体而书中的举例——载波信号为cos(wot)。利用傅里叶变换,其与原始信号在时域中的相乘体现为在频域中实现了频谱的搬移。 时域和值域是每个信号同时具备的两个分析角度——而之间的转换过程是利用傅里叶变换等数学工具得到的 解调 解调的方法我可能很难通过独立思考得到解决方法。 上述方法需要解调器都能够产生需要处理调制信号的载波信号,显然是在应用中需要改进的。那么可以考虑第二种方法——将载波信号随调制信号一起传递,载波信号的高幅值,利用包络检波器将调制信号的波形提取包络,恢复调制信号后,再重复上面方法的步骤即可。 例题 参考资料 定义 它能把计算机的数字信号翻译成可沿普通电话线传送的脉冲信号,而这些脉冲信号又可被线路另一端的另一个调制解调器接收,并译成计算机可懂的语言。 计算机内的信息是由“0”和“1”组成数字信号,而在电话线上传递的却只能是模拟电信号。于是,当两台计算机要通过电话线进行数据传输时,就需要一个设备负责数模的转换。 来自百度百科 调制,就是把数字信号转换成电话线上传输的模拟信号; 解调,即把模拟信号转换成数字信号,合称调制解调器。它在发送端通过调制将数字信号转换为模拟信号,在接收端通过解调再将模拟信号转换为数字信号。 与课本中的定义有所不同: 调制:将信号的频谱搬移,互不重叠占据不同的频率范围 解调:从调制信号恢复原始信号 这个定义与下面的应用联系更大: 一般人的语音频率范围是300—3400Hz,为了进行话音信号在普通的电话系统中传输,在线路上给它分配一定的带宽,国际标准取4KHz为一个标准话路所占用的频带宽度。在这个传输过程中:语音信号以300—3400Hz频率输入,发送方的电话机把这个语音信号转变成模拟信号,这个模拟信号经过一个频分多路复用器进行变化,使得线路上可以同时传输多路模拟信号,当到达接收端以后再经过一个解频的过程把它恢复到原来的频率范围的模拟信号,再由接收方电话机把模拟信号转换成声音信号。 来自百度百科 实现思路 解决办法:选取某一频率的正(余)弦模拟信号作载波信号,运载所要传送的数字信号。 实现的具体方法:用要传送的数字信号改变载波的幅值、频率或相位,然后使之在信道上传送,到达信道的另一端再将数字信号从载波上提取出来 来自 <(模拟信号/数字信号)分别以(模拟信号/数字信号)中传输方式> 具体框图 <实验报告:模拟信号和数字信号调制解调> 其中附有matlab程序,可在之后进行仿真验证。

matlab——正弦积分

任务 上篇matlab——抽样信号通过推导得出抽样函数的广义积分值 matlab绘制函数图像 利用矩阵计算简化代码 ./ 是矩阵中的元素对应相除 而/是矩阵除法 使用Matlab求解定积分/不定积分 int()是积分函数 syms x声明x为符号变量 同样的,加上下述代码可以更直观 理解 上升时间与截止频率成反比 意味着,截至频率越低,上升时间越长,二者成反比。 简单的思路去理解:低通滤波相当于去除了截止频率之上的波形,而原始的阶跃信号的被越全频率成分的叠加会更接近,即去除的频率越少,波形越接近突跳的阶跃信号(上升时间趋于0)。 这由“测不准原理”决定。 吉布斯现象 之前研究过吉布斯现象的问题: 吉布斯现象与插值优化(上)Matlab实现多项式插值 而这次,能对其具体成因有所理解。 随取级数项数增加,跳变点的峰起向跳变点靠近,但不能减小,峰起值趋近于跳变值的9% 对截止频率的提升可以对响应波形的横向进行压缩——相应减少了上升时间,但纵向没有变化,则峰起值并不衰减。

信号与系统——绪论知识点

周期信号 求cos(10t)-cos(30t)的周期T 判断包含多个不同频率分量的复合信号是否为一个周期信号: 各分量信号的周期是否存在(广义的)公倍数(二者之比为有理数) 直流分量 信号在一个周期中的平均值 非周期信号的直流分量不一定为0,面积有限或为0的信号不含有直流分量。 例如正弦波积分面积为零所以直流分量为零。方波的面积为有限值,也不含直流分量,然而周期方波却含有直流分量。 直流分量说白了就是平均高度,平均高度等于无穷区间面积除以时间,时间取无穷的极限。 而傅里叶变换之后的F(0)表示面积,例如直流信号复里叶变换是冲击信号,在零处是无穷,表示直流信号面积无穷。显然F(0)除t,t取长无穷极限表示平均高度也即直流分量. 抽样信号 对抽样函数的整理文章:

matlab——抽样函数

任务 对抽样函数Sa(t)了解不多,对其积分公式进行推导,并用matlab进行计算与绘图 matlab绘制函数图像 上面的代码已经可以绘制抽样函数的图像,但为得到更直观的信息,进行下面的图像注释,参考: MATLAB画图技巧:改变坐标轴刻度的显示数值 进行更改:matlab可用latex公式,因此用pi表示,并自动生成坐标轴范围 Matlab保存图像的5种方法 saveas(gca, filename, fileformat),其中的三个参数: gca:图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3;也可以直接用gcf获取当前窗口句柄。 filename:单引号字符串,指定文件名 fileformat:单引号字符串,指定存储格式 例子: saveas(gcf,’save.jpg’); %保存当前窗口的图像 saveas(2,’save.jpg’); %保存Figure 2窗口的图像 在Matlab里面如何实现字符串的拼接 定义字符串:string=”” 拼接函数:strcat({‘hello ‘},{‘world’}); 附:文档 求积分 如何计算上述积分?两种方法: 利用引入收敛因子,求含参变量的积分 傅里叶变换求解 对两种方法分别整理如下 含参变量积分   整理自作业帮回答     Laplace变换 其他解法 可以通过傅里叶变换求解,分别求取sint与1/t的傅里叶变换,再进行卷积 利用复变函数的留数求解,但奇点在积分路径上,因此不寻常 参考: 为什么狄利克雷积分是pi/2??