《MATLAB语音信号分析与合成（第二版）》：第2章 语音信号的时域、频域特性和短时分析技术

《MATLAB语音信号分析与合成（第二版）》：第2章 语音信号的时域、频域特性和短时分析技术

《MATLAB语音信号分析与合成（第二版）》是中科院声学所的大佬宋知用老师数十年经验积累下的呕心之作，对于语音信号处理相关感兴趣的同学，日后希望在语音信号分析、处理与合成相关领域进行一定研究的话，可以以此进行入门。

[En]

The main direction of my graduate tutor is related to speech signal processing. Although my major thesis during my postgraduate period is digital image processing, the so-called speech and image are not separated. Although I paddle on the wavelet transform of the teacher’s main graduate lecture, but in the later tutor’s speech signal processing course design and engineering application, I also included a little bit of speech. He won the first place in the group in the closing test, and the tutor specially handed out a meal fund of 300 US dollars to encourage him.

[En]

This time to pick up speech recognition, just started with Mr. Song’s book, can be regarded as their own review, mainly to introduce the source code in each chapter, this is the second chapter of the book’s four simulation application examples, not to say much, start!

1. 数据与函数路径设置

[En]

Add, save, and start the simulation.

; 2. MATLAB仿真一：语音信号短时能量图

%
% pr2_3_1
clear all; clc; close all;

filedir=[];                % 设置路径
filename='bluesky3.wav';   % 设置文件名
fle=[filedir filename];    % 构成完整的路径和文件名

wlen=200; inc=80;          % 给出帧长和帧移
win=hanning(wlen);         % 给出海宁窗
N=length(x);               % 信号长度
X=enframe(x,win,inc)';     % 分帧
fn=size(X,2);              % 求出帧数
time=(0:N-1)/Fs;           % 计算出信号的时间刻度
for i=1 : fn
u=X(:,i);              % 取出一帧
u2=u.*u;               % 求出能量
En(i)=sum(u2);         % 对一帧累加求和
end
subplot 211; plot(time,x,'k'); % 画出时间波形
title('语音波形');
ylabel('幅值'); xlabel(['时间/s' 10 '(a)']);
frameTime=frame2time(fn,wlen,inc,Fs);   % 求出每帧对应的时间
subplot 212; plot(frameTime,En,'k')     % 画出短时能量图
title('短时能量');
ylabel('幅值'); xlabel(['时间/s' 10 '(b)']);



1. MATLAB仿真二：语音信号短时平均过零率图
%
% pr2_3_2
clear all; clc; close all;

filedir=[];                       % 设置路径
filename='bluesky3.wav';          % 设置文件名
fle=[filedir filename];           % 构成完整的路径和文件名
x=xx-mean(xx);                    % 消除直流分量
wlen=200; inc=80;                 % 设置帧长、帧移
win=hanning(wlen);                % 窗函数
N=length(x);                      % 求数据长度
X=enframe(x,win,inc)';            % 分帧
fn=size(X,2);                     % 获取帧数
zcr1=zeros(1,fn);                 % 初始化
for i=1:fn
z=X(:,i);                     % 取得一帧数据
for j=1: (wlen- 1) ;          % 在一帧内寻找过零点
if z(j)* z(j+1)< 0       % 判断是否为过零点
zcr1(i)=zcr1(i)+1;   % 是过零点，记录1次
end
end
end
time=(0:N-1)/Fs;                  % 计算时间坐标
frameTime=frame2time(fn,wlen,inc,Fs);  % 求出每帧对应的时间
% 作图
subplot 211; plot(time,x,'k'); grid;
title('语音波形');
ylabel('幅值'); xlabel(['时间/s' 10 '(a)']);
subplot 212; plot(frameTime,zcr1,'k'); grid;
title('短时平均过零率');
ylabel('幅值'); xlabel(['时间/s' 10 '(b)']);



1. MATLAB仿真三：语音信号语谱图
%
% pr2_4_1
clear all; clc; close all;

filedir=[];                         % 设置路径
filename='bluesky3.wav';            % 设置文件名
fle=[filedir filename];             % 构成完整的路径和文件名
wlen=200; inc=80; win=hanning(wlen);% 设置帧长，帧移和窗函数
N=length(x); time=(0:N-1)/Fs;       % 计算时间
y=enframe(x,win,inc)';              % 分帧
fn=size(y,2);                       % 帧数
frameTime=(((1:fn)-1)*inc+wlen/2)/Fs; % 计算每帧对应的时间
W2=wlen/2+1; n2=1:W2;
freq=(n2-1)*Fs/wlen;                % 计算FFT后的频率刻度
Y=fft(y);                           % 短时傅里叶变换
clf                                 % 初始化图形
%=====================================================%
% Plot the STFT result              % 画出语谱图
%=====================================================%
set(gcf,'Position',[20 100 600 500]);
axes('Position',[0.1 0.1 0.85 0.5]);
imagesc(frameTime,freq,abs(Y(n2,:))); % 画出Y的图像
axis xy; ylabel('频率/Hz');xlabel('时间/s');
title('语谱图');
m = 64;
LightYellow = [0.6 0.6 0.6];
MidRed = [0 0 0];
Black = [0.5 0.7 1];
Colors = [LightYellow; MidRed; Black];
colormap(SpecColorMap(m,Colors));

%=====================================================%
% Plot the Speech Waveform          % 画出语音信号的波形
%=====================================================%
axes('Position',[0.07 0.72 0.9 0.22]);
plot(time,x,'k');
xlim([0 max(time)]);
xlabel('时间/s'); ylabel('幅值');
title('语音信号波形');



1. MATLAB仿真四：语音信号短时功率谱密度函数图
%
% pr2_4_2
clear all; clc; close all;

filedir=[];                                    % 设置路径
filename='bluesky3.wav';                       % 设置文件名
fle=[filedir filename];                        % 构成完整的路径和文件名
nwind=240; noverlap=160; inc=nwind-noverlap;   % 设置帧长为240，重叠为160，帧移为80
w_nwind=hanning(200); w_noverlap=195;          % 设置段长为200，段重叠为195
nfft=200;                                      % FFT长度为200
% 对每帧用pwelch_2计算短时功率谱密度
[Pxx] = pwelch_2(wavin0, nwind, noverlap, w_nwind, w_noverlap, nfft);
freq=(0:nfft/2)*fs/nfft;                       % 计算频率刻度
% 作图
imagesc(frameTime,freq,Pxx); axis xy
ylabel('频率/Hz');
xlabel('时间/s');
title('短时功率谱密度函数')
m = 256; LightYellow = [0.6 0.6 0.6];
MidRed = [0 0 0]; Black = [0.5 0.7 1];
Colors = [LightYellow; MidRed; Black];
colormap(SpecColorMap(m,Colors));



[En]

The short-term stationarity of speech signal is a very important characteristic, in which short-term energy, short-term average zero-crossing rate, spectrogram and short-term power spectral density function are the basis of speech signal analysis, which need to be deeply understood and familiarized. if you are interested in the content of this chapter or want to fully learn, it is suggested to study the content of the second chapter in the book. In the later stage, some of these knowledge points will be discussed and supplemented on the basis of their own understanding. You are welcome to learn and communicate together.

Original: https://blog.csdn.net/sinat_34897952/article/details/124029488
Author: mozun2020
Title: 《MATLAB语音信号分析与合成（第二版）》：第2章 语音信号的时域、频域特性和短时分析技术

(0)

大家都在看

• 【阅读笔记】Iterative Entity Alignment via Joint Knowledge Embeddings（通过联合知识嵌入的迭代实体对齐）

啊哦~你想找的内容离你而去了哦 内容不存在，可能为如下原因导致： ① 内容还在审核中 ② 内容以前存在，但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

人工智能 2023年6月4日
0126
• ChatGPT：当向聊天机器人问起编程问题的时候

目录 0. 前言 1. 10个编程操作 * 1.1 MATLAB怎么检测鼠标所在的位置坐标 1.2 MATLAB获取系统时间 1.3 MATLAB怎么跳过报错程序 1.4 MATL…

人工智能 2023年7月31日
0145
• ORBSLAM3整体框架

一、前言 笔者认真学习了一年半有余的SLAM，期间学习过V-SLAM、VI-SLAM、激光SLAM和激光+IMU的SLAM，在看论文和代码的闲暇之余，会时常逛知乎和CSDN等博客膜…

人工智能 2023年6月2日
0164
• GO语言gin框架实战-04-websocket链接

文章目录 1. 升级接口 * 1.1 语法 – – 升级接口 – 关闭 – 接收前端信息 1.2 完整示例 2. 获取信息从webs…

人工智能 2023年6月30日
0144
• 概率还不会的快看过来《统计学习方法》——第四章、朴素贝叶斯法

作者简介：整个建筑最重要的是地基，地基不稳，地动山摇。而学技术更要扎稳基础，关注我，带你稳扎每一板块邻域的基础。博客主页：七归的博客收录专栏：《统计学习方法》第二版——个人笔记南来…

人工智能 2023年6月23日
0169
• 论文笔记 | Open-World Knowledge Graph Completion |AAAI2018

来源：AAAI2018 论文链接：https://arxiv.org/pdf/1711.03438.pdf 代码链接：https://github.com/bxshi/ConMas…

人工智能 2023年6月10日
0151
• neo4j 节点显示名称_[Neo4j] neo4j 的python操作

启动neo4j neo4j.bat console 浏览器访问http://localhost:7474/ 安装anaconda 安装py2neo包 pip install py2…

人工智能 2023年6月1日
0155
• 【python | linux10】面向对象四大特征（抽象、封装、继承、多态）详解

### 回答1： Java是一种 面向对象_的编程 _语言，它支持 封装、 继承_和 _多态_等特性。 _封装_是指将数据和方法 _封装_在一个类中，以保护数据的安全性和完整性。 …

人工智能 2023年7月6日
0105
• 时间序列分析ARMA模型原理及Python statsmodels实践（下）

目录 4. ARMA模型预测销量实践 * 4.1. 统计分析包statsmodels 4.2. 常用函数概述 – 4.2.1. 绘制自相关、偏自相关图 4.2.2. 白…

人工智能 2023年7月26日
0119
• PyTorch 实现CycleGAN 风格迁移

目录 一、前言 二、数据集 三、网络结构 四、代码 （一）net （二）train （三）test 五、结果 （一）loss （二）训练可视化 （三）测试结果 六、完整代码 一、前…

人工智能 2023年6月24日
0137
• 【Tensorflow2.x学习笔记】- Keras高层接口

1.Keras简介 2.常见功能模块 2.1 常见网络层类 2.2 网络容器 3.模型装配、训练、测试 3.1 模型装配 3.2 模型训练 3.3 模型测试 4.模型的保存与加载 …

人工智能 2023年5月25日
0165
• Tensorflow+Win10实现DGCNN代码

今天给大家讲解一下如何成功调试DGCNN的代码，之前发的博客是关于PointNet的代码调试，它们两个的网络非常类似，只不过DGCNN结合了局部的特征信息，关系到了点领域之间的关系…

人工智能 2023年5月24日
0164
• python pandas库统计分析基础必备知识汇总，2021Python网络编程总结篇

print(s4[1:4]) 1.5Series的index和values属性 Series对象有index和value属性，可直接调用进行查看。 import pandas as…

人工智能 2023年7月6日
0135
• Python人工智能实例 │ 使用光流法进行人脸追踪（附代码）

导语 哈喽铁汁萌今天小编准备给大家带来一篇使用光流法进行人脸追踪！感兴趣的可以往下滑了👇👇 一、 背景知识 光流法 目前，光流(optical flow)法是运动图像分析的重要方法…

人工智能 2023年7月19日
0183
• 【攻破css系列——第七天】属性值的计算

文章目录 1. 属性值的计算 * 1.1 定义 1.2 样式的来源 1.3 层叠规则 – 1.3.1 重要性 1.3.2 特殊性 1.3.3 源次序 1.4 属性值计算…

人工智能 2023年6月26日
0210
• 视频理解中常用的数据集

视频理解是计算机视觉领域中的重要任务，近年来得到了飞速的发展，其中高质量的数据集对视频理解的研究至关重要。本文我们总结了视频理解中常见的数据集，涵盖行为识别、行为分割、时序定位，视…

人工智能 2023年7月29日
0141