(44)MATLAB读取语音信号进行频谱分析

ops/2024/10/20 23:19:17/

文章目录

  • 前言
  • 一、MATLAB代码
  • 二、仿真结果画图
  • 三、频谱分析


前言

语音信号是我们最常见的一种信号,本文使用MATLAB读取一段语音信号画出其波形,然后使用FFT变换给出其频谱,对其频谱进行分析。


一、MATLAB代码

读取语音数据并得出频谱的代码如下:

%% 读取语音数据
load('speech_8ksps.mat', 'speech_8k')     % load variable dataL = length(speech_8k);
fs = 8000;                                % 语音信号采样率8ksps
t = (0:1/fs:(length(speech_8k)-1)/fs);    % 语音信号的时间刻度figure()
plot(t,speech_8k)
grid on
title('一段语音信号(fs=8kSPS)')
xlabel('Time(s)')
ylabel('Amplitude')%% 频域(FFT)结果解析
N = length(speech_8k);
Y = fft(speech_8k,N);                     % 信号的傅里叶变换% 信号的双边幅度频谱
P2 = abs(Y/L);% 信号的双边幅度频谱
figure()
plot(0:(fs/N):(fs-fs/N),P2(1:N),'LineWidth',1)
grid on
title(['语音的双边幅度频谱(fs=',num2str(fs),' samples/s)'])
xlabel('频率/Hz')
ylabel('幅度|Y(n)|')%% 信号的单边幅度频谱
% 计算信号的单边幅度频谱
P1 = P2(1:N/2+1);
P1(2:end-1) = 2*P1(2:end-1);figure()
plot(0:(fs/N):(fs/2),P1(1:N/2+1),'LineWidth',1)
grid on
title(['语音的单边幅度频谱(fs=',num2str(fs),' samples/s)'])
xlabel('频率(Hz)  (单边谱的频率范围0Hz到fs/2)')              % 频率范围0Hz到fs/2
ylabel('频谱幅度|Y|')

二、仿真结果画图

语音信号的时域波形图:

在这里插入图片描述

语音信号的双边幅度谱:

在这里插入图片描述

语音信号的单边幅度谱:

在这里插入图片描述

三、频谱分析

语音信号我们一般取300Hz-3000Hz的频率范围。一般情况下,男子的语音频谱处于相对较低的范围,如上面图中所示,处于300Hz-1500Hz的频率范围。女子的语音频谱处于相对较高的范围。



http://www.ppmy.cn/ops/127113.html

相关文章

高效的多进程编程:使用 Python `multiprocessing` 库进行进程管理

高效的多进程编程:使用 Python multiprocessing 库进行进程管理 在现代计算机硬件上,CPU 核心的数量日益增多,单线程程序难以充分利用这些资源。因此,了解如何使用 Python 的 multiprocessing 库管理多个进程,充分利用多核 CPU 来提高程序的并行执行能力,成为了一个非常…

【elasticsearch】安装和启动

启动 Elasticsearch 并验证其是否成功运行通常涉及以下步骤: 下载和安装 Elasticsearch: 访问 Elasticsearch 官方网站下载页面:https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html根据你的操作系…

基于FreeRTOS的LWIP移植

目录 前言一、移植准备工作二、以太网固件库与驱动2.1 固件库文件添加2.2 库文件修改2.3 添加网卡驱动 三、LWIP 数据包和网络接口管理3.1 添加LWIP源文件3.2 Lwip文件修改3.2.1 修改cc.h3.2.2 修改lwipopts.h3.2.3 修改icmp.c3.2.4 修改sys_arch.h和sys_arch.c3.2.5 修改ether…

用html做跨平台应用程序——千丝冥缘应用——跨平台软件开发

一、用网页设计应用程序的优势 1.1界面设计方面 可视化编辑:提供直观的可视化工具,让设计师能够快速创建和布局页面元素,无需深入了解代码。 丰富的组件库:包含各种预定义的组件,如按钮、表单、导航栏等,节…

react antd redux 全局状态管理 解决修改菜单状态 同步刷新左侧菜单

npm i react-redux1.src新建两个文件 globalState.js 全局状态定义 store.js 全局存储定义 2.globalState.js import { createSlice } from "reduxjs/toolkit";export const globalState createSlice({name: "globalState",initialState: { data: {} },r…

学习笔记——交换——STP(生成树)工作原理

三、工作原理 STP的基本原理是在一个有二层环路的网络中,交换机通过运行STP,自动生成一个没有环路的网络拓扑。这个无环网络拓扑也叫做STP树(STP Tree),树节点为某些交换机,树枝为某些链路。当网络拓扑发生变化时,STP…

深入理解WPF中的数据绑定:完整指南

如果你曾经使用Windows Presentation Foundation (WPF)进行开发,你可能听说过“数据绑定”这个术语。数据绑定是WPF最强大的功能之一,它能够在用户界面和业务逻辑之间实现无缝的数据流,从而简化开发并保持代码整洁。在这篇文章中,…

three.js 实现模型模型 ,拆解,爆炸,还原的动画效果

three.js 实现模型模型 ,拆解,爆炸,还原的动画效果 在线链接:https://threehub.cn/#/codeMirror?navigationThreeJS&classifybasic&idmodelUnpack 国内站点预览:http://threehub.cn github地址: https://g…