MATLAB语音信号分析与合成——MATLAB语音信号分析学习资料汇总(图书、代码和视频)

教科书:MATLAB语音信号分析与合成(第2版)

链接(含配套源代码):https://pan.baidu.com/s/1pXMPD_9TRpJmubPGaRKANw?pwd=32rf 
提取码:32rf

基础入门视频:

视频链接:

清华大学_信号处理与语音分析

配套练习:

任务:利用线性预测模型,寻找 汉语韵母 的共振峰
1 步:在安静的环境中,(建议用手机)录制声音
发音内容: a e i o u (“阿、婀、依、哦、乌”)
建议发音时尽量平稳、清晰
2 步:将一整段声音分为多帧,对每一帧 𝑥[𝑛] 进行 分析
使用 MATLAB 提供的 lpc 函数(或 levinson 函数),得到每一帧的
线性预测系数 𝑎 1 , ⋯ , 𝑎 𝑃 ,进而可得该帧的激励信号 𝑒[𝑛]
3 步:找到滤波器 1/𝐴(𝑧) 幅度谱的前两个共振峰频率值 𝑓 1 𝑓 2
4 步:画出每个韵母的共振峰频率值 𝑓 2 vs 𝑓 1 (横轴为 𝑓 1 ,纵轴为 𝑓 2

实验结果参考:

参考代码(需要对这个代码进行修改才能完成任务,这个代码也是清华老师刘奕汶给学生做这个实验提供的代码):

%% DSP_lab5_2024_LP_demo_rb_v0_1.m
% For the course EEG3024B: DSP Technology and Its Applications at Shantou University
% ZHANG Rongbin,  20 Apr 2024% Adapted based on ASAS_lab6_LinPred_2015.m by Prof. Yi-Wen Liu
% EE6641 HW: Linear prediction and Levinson-Durbin k-parameter estimation
% Created May 2013 as a homework.
% Last updated Nov 2015 for this year's Lab6 and HW3.
% Yi-Wen Liuclear; 
close all;DIR = './';FILENAME = 'a1.mp3';
% FILENAME = 'i1.mp3';[y, fs1] = audioread([DIR FILENAME]);
y = y(:, 1);  % Obtain the first channel in case the audio file has multiple channels
% figure; plot(y);y = y(60000 : end - 60000);
% figure; plot(y);soundsc(y, fs1);
fs = 16000;  % sampling frequency, in Hzy = resample(y, fs, fs1);%% Parameters to play with
framelen = 0.04; % Frame length, in second. Please try changing this.
p = 16; % linear prediction order. Please try changing this.%%
L = framelen*fs; % Frame length, in samplesif L <= pdisp('Linear prediction requires the num of equations to be greater than the number of variables.');
endsw.emphasis = 1; % default = 1  (Used to pre-emphasis the high frequency components)numFrames = floor(length(y)/L);
excitat = zeros(size(y));   % excitation signal 
e_n = zeros(p+L,1);LPcoeffs = zeros(p+1,numFrames);
Kcoeffs = zeros(p,numFrames); % reflection coeffsNfreqs = 1024; % Num points for plotting the inverse filter response
df = fs/2/Nfreqs;
ff = 0:df:fs/2-df;if sw.emphasis == 1y_emph = filter([1 -0.95],1,y);
elsey_emph = y;
endh = figure;
h_pos = h.Position; 
set(h, 'Position', [0.5*h_pos(1)   0.5*h_pos(2)   h_pos(3)*1.3   h_pos(4)*1.3]);%% Linear prediction and estimation of the source e_n
win = ones(L,1); % Rectangular window.
lpc_1_levinson_0 = 0;   % Indicator, 1 for using lpc() function, 0 for using levinson() function
for kk = 1:numFramesind = (kk-1)*L+1 : kk*L;ywin = y_emph(ind).*win;Y = fft(ywin, 2^nextpow2(2*size(ywin,1)-1));
% 	Y = fft(ywin, Nfreqs*2);if lpc_1_levinson_0 == 1%% Use MATLAB's lpc() functionA = lpc(ywin, p); %% This is actually the direct way to obtain the LP coefficients. else%% Or, use Levinson-Durbin algorithm% We can used levinson() instead because it gives us the "reflection coefficients". R = ifft(abs(Y).^2);[A, errvar, K] = levinson(R, p);endif kk == 1e_n(p+1 : end) = filter(A, [1], ywin);elseywin_extended = y((kk-1)*L+1-p : kk*L);e_n = filter(A, [1], ywin_extended);endexcitat(ind) = e_n(p+1 : end);if kk>1subplot(311);plot(ind/fs*1000, y(ind), 'b', 'LineWidth', 1.5);xlabel('Time (in ms)', 'Interpreter', 'latex', 'fontSize', 14);ylabel('$x(n)$', 'Interpreter', 'latex', 'fontSize',14);title('Time Domain: $x(n)$', 'Interpreter', 'latex', 'fontSize', 16);set(gca, 'xlim', [kk-1 kk]*framelen*1000);grid on;    ax = gca;         ax.GridLineStyle = '--';        grid minor; subplot(312);plot(ind/fs*1000, e_n(p+1:end), 'k', 'LineWidth', 1.5);xlabel('Time (in ms)', 'Interpreter', 'latex', 'fontSize', 14);ylabel('$e(n)$', 'Interpreter', 'latex', 'fontSize', 14);title('Time Domain: $e(n)$', 'Interpreter', 'latex', 'fontSize', 16);set(gca, 'xlim', [kk-1 kk]*framelen*1000);grid on;    ax = gca;         ax.GridLineStyle = '--';        grid minor; subplot(313);[H, W] = freqz(1, A, Nfreqs);Hmag = 20*log10(abs(H));Ymag = 20*log10(abs(Y(1:Nfreqs)));Hmax = max(Hmag);offset = max(Hmag) - max(Ymag);plot(ff, Ymag+offset, 'b', 'LineWidth', 1); hold on;plot(ff, Hmag, 'r', 'LineWidth', 3); hold off;if kk == numFrameslegend('$|X(\omega)|$ of $x(n)$', '$|A(\omega)|$ of LPC $\{ a_k \}$', ...'Location', 'NorthEast', 'Interpreter', 'latex', 'fontSize', 14);endset(gca, 'xlim', [0 fs/2], 'ylim', [Hmax-50, Hmax+5]);xlabel('Frequency (in Hz)', 'Interpreter', 'latex', 'fontSize', 14);title('Frequency Domain: $|X(\omega)|$ and $|A(\omega)|$', 'Interpreter', 'latex', 'fontSize', 16);ylabel('dB', 'Interpreter', 'latex', 'fontSize', 16);grid on;    ax = gca;         ax.GridLineStyle = '--';        grid minor; drawnow;endend% play the estimated source signal
soundsc(excitat, fs); % Typical values for the pitch period are 8 ms for male speakers, and 4 ms for female speakers.   ——《ECE438 DSP with Apps - Laboratory 9 - Speech Processing (Week 1).pdf》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

急急急!微信朋友圈删除了怎么恢复?

微信朋友圈是我们与朋友分享生活点滴的重要平台&#xff0c;但有时候微信出现异常&#xff0c;导致我们编辑好的朋友圈被删除了&#xff0c;这时候该怎么办呢&#xff1f; 幸运的是&#xff0c;微信提供了一种简单的方式来恢复已删除的朋友圈内容。微信朋友圈删除了怎么恢复&a…

利用二叉检索树将文章中的单词建立索引(正则表达式)

知识储备 链接: 【二叉检索树的实现——增删改查、读取命令文件、将结果写入新文件】 1、正则表达式的处理 &#xff08;1&#xff09;r’前缀的作用 r’前缀的用于定义原始字符串&#xff0c;特点是不会处理反斜杠\作为转义字符 &#xff08;2&#xff09;正则表达式中元…

场外个股期权开户新规及操作方法

场外个股期权开户新规 场外个股期权开户新规主要涉及对投资者资产实力、专业知识、风险承受能力和诚信记录的要求。以下是根据最新规定总结的关键要点&#xff1a; 来源/&#xff1a;股指研究院 资产门槛&#xff1a;投资者需具备一定的资产实力&#xff0c;确保在申请开户前…

【Linux】文件打包解压_tar_zip

文章目录 &#x1f4d1;引言&#xff1a;一、文件打包压缩1.1 什么是文件打包压缩&#xff1f;1.2 为什么需要文件打包压缩&#xff1f; 二、打包解压2.1 zip2.2 unzip2.3 tar指令 &#x1f324;️全篇小结&#xff1a; &#x1f4d1;引言&#xff1a; 在Linux操作系统中&#…

OpenCV-Python: 强大的计算机视觉库

文章目录 OpenCV-Python: 强大的计算机视觉库背景OpenCV-Python是什么&#xff1f;安装简单的库函数使用方法场景示例人脸检测和识别图像分割目标跟踪 常见问题和解决方案总结 OpenCV-Python: 强大的计算机视觉库 背景 OpenCV (Open Source Computer Vision Library) 是一个开…

如何修改php版本

我使用的Hostease的Windows虚拟主机产品,由于网站程序需要支持高版本的PHP,程序已经上传到主机&#xff0c;但是没有找到切换PHP以及查看PHP有哪些版本的位置&#xff0c;因此咨询了Hostease的技术支持&#xff0c;寻求帮助了解到可以实现在Plesk面板上找到此切换PHP版本的按钮…

基于Springboot+Vue的Java项目-火车票订票系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

GDPU 算法分析与设计 天码行空5

一、【实验目的】 &#xff08;1&#xff09;熟悉动态规划算法的基本思想. &#xff08;2&#xff09;理解动态规划算法中子问题的划分和递推方程设计的基本方法. &#xff08;3&#xff09;熟悉矩阵链乘法的基本思想并编程实现。 二、【实验内容】 输入:矩阵链Ai…j的输入为…

Power BI:如何将文件夹批量Excel(多sheet页)文件导入?

故事背景&#xff1a; 业务同事想用Power BI分析近两年市场费用。 数据源全部是Excel文件&#xff0c;并且以每月一个Excel文件的方式&#xff0c;统一存放到同一文件夹下面。 重点&#xff0c;每张Excel文件会有多张sheet页&#xff0c;用区分每家分公司的费用信息。 目前…

Linux之进程间通信(二)

system V system V共享内存是内核中专门设计的通信的方式, 粗粒度划分操作系统分为进程管理, 内存管理, 文件系统, 驱动管理.., 粒度更细地分还有 进程间通信模块. 对于操作系统, 通信的场景有很多, 有以传送数据, 快速传送数据, 传送特定数据块, 进程间协同与控制以目的, 它…

数字信号的产生与检测——DSP学习笔记六

本专栏的博客的图片大部分来源于老师的PPT&#xff0c;本博客只是博主对于上课内容的知识结构的分析和梳理。 几种数字信号的产生 正弦波信号 多项式逼近(除了泰勒展开&#xff0c;还有一种方法是切比雪夫逼近法&#xff0c;感兴趣可以自己去了解一下&#xff09; 查找表 核心思…

<计算机网络自顶向下> Internet Protocol

互联网中的网络层 IP数据报格式 ver: 四个比特的版本号&#xff08;IPV4 0100, IPV6 0110&#xff09; headlen&#xff1a;head的长度&#xff08;头部长度字段&#xff08;IHL&#xff09;指定了头部的长度&#xff0c;以32位字&#xff08;4字节&#xff09;为单位计算。这…

Java数组深度剖析:掌握数据结构的基石

引言 在编程世界中&#xff0c;数仅仅是一种数据类型&#xff0c;它是理解内存分配、多维数据处理以及性能优组像是构建复杂数据结构的基本积木。它们简洁、高效&#xff0c;是管理元素集的首选方式。在Java中&#xff0c;数组不化的关键。 这篇文章致力于深入探讨Java数组的各…

git出错、文件无法删除、文件无法访问、文件或目录损坏且无法读取 等相关问题处理

一、错误历程与解决方案 1. 在用idea时&#xff0c;突然出现 部分git的命令无法使用&#xff0c;提示错误 2. 尝试删除项目文件夹&#xff0c;重新从git拉取代码 3.发现无法删除文件夹&#xff0c;删除操作没有任何反应&#xff0c;但是可以对文件夹重命名。 4.重新clone g…

李沐70_bert微调——自学笔记

微调BERT 1.BERT滴哦每一个词元返回抽取了上下文信息的特征向量 2.不同的任务使用不同的特性 句子分类 将cls对应的向量输入到全连接层分类 命名实体识别 1.识别应该词元是不是命名实体&#xff0c;例如人名、机构、位置 2.将非特殊词元放进全连接层分类 问题回答 1.给…

QT c++ 代码布局原则 简单例子

本文描述QT c widget代码布局遵循的原则&#xff1a;实中套虚&#xff0c;虚中套实。 本文最后列出了代码下载链接。 在QT6.2.4 msvc2019编译通过。 所谓实是实体组件&#xff1a;比如界面框、文本标签、组合框、文本框、按钮、表格、图片框等。 所谓虚是Layout组件&#x…

Redis哈希槽和一致性哈希

前言 单点的Redis有一定的局限&#xff1a; 单点发生故障&#xff0c;数据丢失&#xff0c;影响整体服务应用自身资源有限&#xff0c;无法承载更多资源分配并发访问&#xff0c;给服务器主机带来压力&#xff0c;性能瓶颈 我们想提升系统的容量、性能和可靠性&#xff0c;就…

sentinel-1.8.7与nacos-2.3.0实现动态规则配置、双向同步

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; sentinel-1.8.7与nacos-2.3.0实现动态规则配置、双向同步 ⏱️ 创作时…

unity的特性AttriBute详解

unity的特性AttriBute曾经令我大为头疼。因为不动使用的法则&#xff0c;但是教程都是直接就写&#xff0c;卡住就不能继续学下去。令我每一次看到&#xff0c;直接不敢看了。 今天使用文心一言搜索一番&#xff0c;发现&#xff0c;恐惧都是自己想象的&#xff0c;实际上这个…

Kotlin泛型之 循环引用泛型(A的泛型是B的子类,B的泛型是A的子类)

IDE(编辑器)报错 循环引用泛型是我起的名字&#xff0c;不知道官方的名字是什么。这个问题是我在定义Android 的MVP时提出来的。具体是什么样的呢&#xff1f;我们看一下我的基础的MVP定义&#xff1a; interface IPresenter<V> { fun getView(): V }interface IVie…