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

这篇具有很好参考价值的文章主要介绍了MATLAB语音信号分析与合成——MATLAB语音信号分析学习资料汇总(图书、代码和视频)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MATLAB语音信号分析与合成——MATLAB语音信号分析学习资料汇总(图书、代码和视频),DSP学习笔记,语音识别,人工智能,matlab,信号处理

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

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

基础入门视频:

视频链接:

清华大学_信号处理与语音分析文章来源地址https://www.toymoban.com/news/detail-861793.html

配套练习:

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

实验结果参考:

MATLAB语音信号分析与合成——MATLAB语音信号分析学习资料汇总(图书、代码和视频),DSP学习笔记,语音识别,人工智能,matlab,信号处理
参考代码(需要对这个代码进行修改才能完成任务,这个代码也是清华老师刘奕汶给学生做这个实验提供的代码):

%% 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 Liu


clear; 
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 Hz

y = 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 samples

if L <= p
    disp('Linear prediction requires the num of equations to be greater than the number of variables.');
end

sw.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 coeffs

Nfreqs = 1024; % Num points for plotting the inverse filter response
df = fs/2/Nfreqs;
ff = 0:df:fs/2-df;

if sw.emphasis == 1
    y_emph = filter([1 -0.95],1,y);
else
    y_emph = y;
end

h = 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:numFrames
    ind = (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() function
        A = 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);
    end

    if kk == 1
        e_n(p+1 : end) = filter(A, [1], ywin);
    else
        ywin_extended = y((kk-1)*L+1-p : kk*L);
        e_n = filter(A, [1], ywin_extended);
    end
    excitat(ind) = e_n(p+1 : end);
    
    if kk>1
        subplot(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 == numFrames
            legend('$|X(\omega)|$ of $x(n)$', '$|A(\omega)|$ of LPC $\{ a_k \}$', ...
                'Location', 'NorthEast', 'Interpreter', 'latex', 'fontSize', 14);
        end
        set(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;
    end
 
end

% 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》

到了这里,关于MATLAB语音信号分析与合成——MATLAB语音信号分析学习资料汇总(图书、代码和视频)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGPT 使用 拓展资料:无需任何机器学习,如何利用大语言模型做情感分析?

    ChatGPT 拓展资料:无需任何机器学习,如何利用大语言模型做情感分析? 用于从文本数据中识别情感 Glove Vectors:

    2023年04月25日
    浏览(14)
  • 以太坊入门学习资料

    区块链按照访问和管理权限分为公有链、联盟链和私有链。 公有链:完全开放,所有节点均可加入,代表链-比特币Bitcoin、以太坊Ethereum。 联盟链:有多个组织和机构共同管理,获得组织和机构许可的节点可以加入,代表链-超级账本Hyperledger Fabric。 私有链:获得集中管理者

    2024年02月02日
    浏览(19)
  • zkrollup学习资料汇总

    FluiDex FluiDex Labs 致力于构建下一代专业的去中心化交易所。我们将在以太坊上使用 PLONK 零知识证明技术,开发高性能的订单簿数字资产现货交易所。 zksync: 最完整的 ZK-Rollup 开源项目代码,涵盖了一个 ZK-Rollup 系统需要的每个组件。使用 PLONK 机制,电路代码使用 bellman,链下

    2024年02月12日
    浏览(17)
  • 【IOT】学习资料

    随着科技的不断发展,物联网(IoT)已经成为了当今数字化时代的一部分。物联网将各种物理设备、传感器和互联网连接起来,为我们提供了巨大的数据流和智能化的应用。在这个庞大的生态系统中,物联网平台扮演着至关重要的角色,它们不仅可以连接和管理物联网设备,

    2024年02月20日
    浏览(18)
  • 自动驾驶最强学习资料

    资料说明和获取方式 本资料包是作者吐血整理的干货!目前为止应该是非常全的自动驾驶资料包!是作者五年自动驾驶算法工程师的 积累! 以上干货资料并不全是作者自己原创, 是作者作为五年自动驾驶算法工程的积累,一部分是参考其他的资料,一部分是作者自己的一些

    2024年03月13日
    浏览(44)
  • 0.flink学习资料

    (1)google dataflow model 下载链接:p1792-Akidau.pdf (vldb.org) Akidau T, Bradshaw R, Chambers C, et al. The dataflow model: a practical approach to balancing correctness, latency, and cost in massive-scale, unbounded, out-of-order data processing[J]. Proceedings of the VLDB Endowment, 2015, 8(12): 1792-1803 流式计算的基石文档,google出品

    2024年02月12日
    浏览(14)
  • 机器学习 深度学习资料 资源machine learning

    Kaggle入门,看这一篇就够了 - 知乎 (zhihu.com) https://zhuanlan.zhihu.com/p/25686876 day1-1.什么是机器学习_哔哩哔哩_bilibili day1-1.什么是机器学习是10天学会机器学习从入门到深度学习的第1集视频,该合集共计62集,视频收藏或关注UP主,及时了解更多相关视频内容。 https://www.bilibili.com

    2024年02月21日
    浏览(17)
  • matlab实现语音信号的频域分析及应用

    1.语音信号本质上是非平稳信号。但我们可以假设语音信号在一个短时间内是平稳的,这样我们用稳态分析方法处理非平稳信号。应用在傅立叶分析就是短时傅立叶变换。 语音的频域分析:包括语音信号的频谱、功率谱、倒频谱、频谱包络等. 常用频域分析方法:带通滤波器

    2024年02月11日
    浏览(15)
  • 利用matlab时频域语音信号的分析与处理

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 利用Matlab进行时频域语音信号的分析与处理:原理详解 时频域分析是对信号在时间和频率两个维度上进行分析的方法。在语音信号处理

    2024年02月06日
    浏览(18)
  • 小程序的学习资料收集

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=1476434677599 3:设计指南:https://mp.weixin.qq.com/debug/wxadoc/design/index.html 4:设计资源下载:https://mp.weixin.qq.com/debug/wxadoc/design/#资源下载 5:微信小程序公测接入指南:http://

    2024年02月08日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包