手把手教你学Simulink——使用Simulink进行音频特征提取

目录

 

手把手教你学Simulink——使用Simulink进行音频特征提取

一、什么是音频特征提取?

二、本教程目标

三、准备工作

四、实现步骤详解

✅ 步骤1:创建Simulink模型

✅ 步骤2:添加音频输入模块

方法一:读取音频文件(适合离线处理)

方法二:实时麦克风输入(适合实时处理)

✅ 步骤3:添加特征提取模块

📌 特征1:MFCC(梅尔频率倒谱系数)

📌 特征2:频谱特征(Spectral Centroid, Bandwidth...)

📌 特征3:能量和短时能量

📌 特征4:零交叉率(Zero Crossing Rate)

✅ 步骤4:连接特征提取模块并可视化

添加 Scope 查看特征变化

连接信号线

✅ 步骤5:导出特征到MATLAB工作区(可选)

✅ 步骤6:配置仿真参数

五、完整框图结构示意(文字版)

六、运行仿真并观察结果

七、结论与拓展方向

✅ 本章收获:

🔍 后续建议拓展方向:

八、参考代码汇总(一键复制)


 

手把手教你学Simulink——使用Simulink进行音频特征提取


一、什么是音频特征提取?

音频特征提取 是从原始音频信号中提取出有助于后续处理或分析的关键信息,广泛应用于语音识别、音乐分类、情感分析、语音增强等领域。

常见的音频特征包括:

  • MFCC(梅尔频率倒谱系数)
  • 频谱质心、带宽、滚降点
  • 零交叉率(Zero Crossing Rate)
  • 能量与短时能量
  • 基频(Pitch)

本教程将手把手教你如何在 Simulink 中实现这些音频特征的提取。


二、本教程目标

我们将使用 Simulink 搭建一个完整的音频特征提取系统,支持以下功能:

  • 实时或离线音频输入
  • 提取 MFCC、能量、频谱等常见特征
  • 可视化特征输出
  • 支持导出到 MATLAB 工作区用于进一步处理

三、准备工作

确保你已经安装了以下工具箱:

  • MATLAB R2023a 或更新版本
  • Simulink
  • DSP System Toolbox(必须)
  • Audio Toolbox(推荐)

四、实现步骤详解

✅ 步骤1:创建Simulink模型

 

matlab

深色版本

modelName = 'AudioFeatureExtraction';
new_system(modelName);
open_system(modelName);

✅ 步骤2:添加音频输入模块

方法一:读取音频文件(适合离线处理)

 

matlab

深色版本

add_block('dsp/Signal Management/Signal Attributes/Audio File Read', [modelName '/AudioFileReader']);
set_param([modelName '/AudioFileReader'], 'Filename', 'your_audio_file.wav');
set_param([modelName '/AudioFileReader'], 'PlayCount', 'inf'); % 循环播放

方法二:实时麦克风输入(适合实时处理)

 

matlab

深色版本

add_block('audioio/Audio Device Reader', [modelName '/MicInput']);

✅ 步骤3:添加特征提取模块

📌 特征1:MFCC(梅尔频率倒谱系数)

 

matlab

深色版本

add_block('audio/Mel-Frequency Cepstral Coefficients', [modelName '/MFCCExtractor']);

双击配置参数:

  • 输入采样率(如 44100 Hz)
  • 输出维数(默认 13 维)
  • 是否输出对数能量(Log energy)

📌 特征2:频谱特征(Spectral Centroid, Bandwidth...)

 

matlab

深色版本

add_block('audio/Spectral Descriptor', [modelName '/SpectralDescriptor']);

选择输出类型:

  • Spectral Centroid(频谱质心)
  • Spectral Spread(频谱宽度)
  • Spectral Skewness(偏度)
  • Spectral Kurtosis(峰度)
  • Spectral Rolloff Point(滚降点)

📌 特征3:能量和短时能量

 

matlab

深色版本

add_block('audio/Power Estimate', [modelName '/EnergyEstimator']);

可以设置帧长、重叠长度等参数。

📌 特征4:零交叉率(Zero Crossing Rate)

 

matlab

深色版本

add_block('audio/Zero-Crossing Rate', [modelName '/ZCR_Estimator']);

✅ 步骤4:连接特征提取模块并可视化

添加 Scope 查看特征变化

 

matlab

深色版本

add_block('simulink/Sinks/Scope', [modelName '/MFCC_Scope']);
add_block('simulink/Sinks/Scope', [modelName '/Spectral_Scope']);
add_block('simulink/Sinks/Scope', [modelName '/Energy_Scope']);
add_block('simulink/Sinks/Scope', [modelName '/ZCR_Scope']);

连接信号线

 

matlab

深色版本

add_line(modelName, 'AudioFileReader/1', 'MFCCExtractor/1');
add_line(modelName, 'MFCCExtractor/1', 'MFCC_Scope/1');

add_line(modelName, 'AudioFileReader/1', 'SpectralDescriptor/1');
add_line(modelName, 'SpectralDescriptor/1', 'Spectral_Scope/1');

add_line(modelName, 'AudioFileReader/1', 'EnergyEstimator/1');
add_line(modelName, 'EnergyEstimator/1', 'Energy_Scope/1');

add_line(modelName, 'AudioFileReader/1', 'ZCR_Estimator/1');
add_line(modelName, 'ZCR_Estimator/1', 'ZCR_Scope/1');

✅ 步骤5:导出特征到MATLAB工作区(可选)

使用 To Workspace 模块将特征保存下来供后续训练或分析使用:

 

matlab

深色版本

add_block('simulink/Sinks/To Workspace', [modelName '/MFCC_ToWorkspace']);
set_param([modelName '/MFCC_ToWorkspace'], 'VariableName', 'mfccData');
set_param([modelName '/MFCC_ToWorkspace'], 'SaveFormat', 'StructureWithTime');

✅ 步骤6:配置仿真参数

进入菜单栏:Simulation > Model Configuration Parameters

设置如下参数:

  • SolverFixed-step
  • TypeDiscrete (no continuous states)
  • Stop time'inf'
  • Fixed-step size1/44100(对应采样率)

五、完整框图结构示意(文字版)

 

深色版本

[ Audio Input ] --> [ MFCC Extractor ] --> [ Scope / To Workspace ]
                  |
                  v
         [ Spectral Descriptor ] --> [ Scope / To Workspace ]
                  |
                  v
           [ Power Estimate ] --> [ Scope / To Workspace ]
                  |
                  v
       [ Zero-Crossing Rate ] --> [ Scope / To Workspace ]

六、运行仿真并观察结果

点击 Run 开始仿真,你会看到各个Scope窗口中显示:

  • MFCC随时间的变化
  • 频谱质心、带宽
  • 能量波动
  • 零交叉率变化趋势

同时,如果添加了 To Workspace 模块,可以在MATLAB命令行中查看变量如 mfccData, spectralData 等。


七、结论与拓展方向

✅ 本章收获:

  • 学会使用 Simulink 提取常用音频特征(MFCC、能量、频谱、ZCR)
  • 掌握音频特征的实时可视化方法
  • 初步了解如何将特征数据导出用于机器学习或模式识别任务

🔍 后续建议拓展方向:

  1. 结合机器学习模型(如SVM、CNN)进行音频分类;
  2. 构建端到端语音识别系统(结合深度学习模块);
  3. 实现实时特征提取+GUI界面控制(使用App Designer);
  4. 部署到嵌入式平台(如树莓派、FPGA);
  5. 多通道音频特征提取(立体声或多麦克风场景);
  6. 自定义特征提取算法(通过MATLAB Function Block编写)

八、参考代码汇总

 

matlab

深色版本

modelName = 'AudioFeatureExtraction';
new_system(modelName);
open_system(modelName);

% 添加音频输入源
add_block('dsp/Signal Management/Signal Attributes/Audio File Read', [modelName '/AudioFileReader']);
set_param([modelName '/AudioFileReader'], 'Filename', 'your_audio_file.wav');
set_param([modelName '/AudioFileReader'], 'PlayCount', 'inf');

% 添加特征提取模块
add_block('audio/Mel-Frequency Cepstral Coefficients', [modelName '/MFCCExtractor']);
add_block('audio/Spectral Descriptor', [modelName '/SpectralDescriptor']);
add_block('audio/Power Estimate', [modelName '/EnergyEstimator']);
add_block('audio/Zero-Crossing Rate', [modelName '/ZCR_Estimator']);

% 添加示波器
add_block('simulink/Sinks/Scope', [modelName '/MFCC_Scope']);
add_block('simulink/Sinks/Scope', [modelName '/Spectral_Scope']);
add_block('simulink/Sinks/Scope', [modelName '/Energy_Scope']);
add_block('simulink/Sinks/Scope', [modelName '/ZCR_Scope']);

% 连线
add_line(modelName, 'AudioFileReader/1', 'MFCCExtractor/1');
add_line(modelName, 'MFCCExtractor/1', 'MFCC_Scope/1');

add_line(modelName, 'AudioFileReader/1', 'SpectralDescriptor/1');
add_line(modelName, 'SpectralDescriptor/1', 'Spectral_Scope/1');

add_line(modelName, 'AudioFileReader/1', 'EnergyEstimator/1');
add_line(modelName, 'EnergyEstimator/1', 'Energy_Scope/1');

add_line(modelName, 'AudioFileReader/1', 'ZCR_Estimator/1');
add_line(modelName, 'ZCR_Estimator/1', 'ZCR_Scope/1');

% 设置仿真参数
set_param(modelName, 'StopTime', 'inf');
set_param(modelName, 'Solver', 'Fixed-step');
set_param(modelName, 'SolverName', 'discrete (no continuous states)');
set_param(modelName, 'FixedStep', '1/44100');

📌 下节预告:手把手教你学Simulink——使用Simulink实现语音活动检测(VAD)系统
如果你喜欢这个系列,请点赞、收藏,我会持续更新更多实用教程!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蘑菇二号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值