【FPGA-DSP】第九期:音频信号处理

这篇具有很好参考价值的文章主要介绍了【FPGA-DSP】第九期:音频信号处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从本文开始将记录一些简单的音频信号处理算法在System Generator中的实现方法。本文将介绍如何搭建音频信号的采集与输出模型。

音频信号属于一维信号,一些基本概念如下:

  • 采样频率:根据奈奎斯特采样定理,采样频率Fs应该不低于声音信号中最高频率2倍。常见的音频格式文件(如mp3、wav等)有几个固定的采样频率:11025Hz、22050Hz、44100Hz、48000Hz。
  • 量化精度:即每个声音样本用多少位(bit)表示。通常以字节为单位。
  • 声道:现在的音频文件几乎都是立体声(左声道、右声道),也可以用“格式工厂”等工具转换为单声道。

现在单声道的音频文件很难找,因此使用“格式工厂”将立体声音频文件转换为单声道音频文件,用于设计仿真。System Generator和Gateway In的采样频率设置为48000Hz,仿真时长设置为5s,即只采集和输出5s的音频信号。

本设计采集到音频信号后不做任何处理直接输出,播放输出的音频文件。

1. 音频文件的采集

1.1 通过matlab导入音频数据

我们需要将下载的双声道文件通过matlab转化成单声道文件

%% 音乐信号处理
Music = audioinfo("music.mp3"); 
[Music_audio,Fs] = audioread("music.mp3");
Music_one_channel = Music_audio(:,1); %获取单声道
Music_length = length(Music_one_channel);

T = 10; %音乐持续时间
T_start = 34; %音乐开始时间
N = Fs*T;
N_start = Fs*T_start; %开始时的样本点数
t = 1:1:N; %持续的样本点数

Music_in(:,1) = 1:N; %输入信号的第一列表示样本点数
Music_in(:,2) = Music_one_channel(N_start:N_start+N-1); %输入信号的第二列表示单通道的音乐信息

sound(Music_in(:,2),Fs); %播放验证一下

plot一下看看信号幅度谱

%% 图像输出
plot(t,Music_in(:,2)),xlabel('音频信号的采样点数'),ylabel('音频信号的幅度谱');

【FPGA-DSP】第九期:音频信号处理

1.2 通过system generator导入音频数据

在simulink中添加From Multimedia File模块来读取我们的音频数据

【FPGA-DSP】第九期:音频信号处理

Simulink的Audio System Toolbox中包含了与音频相关的block。上图中的From Multimedia File的作用是读取音频文件,音频文件的相关信息会显示在图标上(mono即表示单声道,stero为双声道)

【FPGA-DSP】第九期:音频信号处理

“File name”中选择音频文件路径;“Number of times to play file”设置从文件中读取的音频信号时间;“Samples per audio channel”设置每个通道读取出的采样点数。音频信号需要通过Gateway In输入到FPGA,但Gateway In不能接收向量型数据,因此这个值通常设置为1更方便。

如果From Multimedia File读取的是立体声音频文件,会以向量的形式输出数据。如果把立体声音频信号直接接到Gateway In会提示如下错误:

System Generator block只支持标量数据类型。Gateway In的图标中输入数据也变成了“?”。需要采集立体声音频时,必须用demux这个block将各声道的音频分开,分别进行信号处理。模型如下图: 

【FPGA-DSP】第九期:音频信号处理

 文章来源地址https://www.toymoban.com/news/detail-429829.html

2. system generator设计

为了读取工作区中的变量,我使用simulink中的from/to workspace来读取和导出数据。 

【FPGA-DSP】第九期:音频信号处理

2.1 音频信号的降采样和升采样

信号降采样等效于将音频信号加速处理 

【FPGA-DSP】第九期:音频信号处理

将输出导入到工作区后,通过matlab进行读取

%% Simulink
output_simulink = out.output.data;
sound(output_simulink,Fs); %播放验证一下

可以发现,声音被加速了一倍,同样的,如果或我们使用升采样,那么等效于慢速播放

【FPGA-DSP】第九期:音频信号处理再在matlab中运行,可以发现相较于原始音频而言,经过两次采样操作之后音质下降 

2.2 音频信号的频谱分析

参考(244条消息) 【FPGA-DSP】第五期:FFT调用流程_fft流程_༜黎明之光༜的博客-CSDN博客 

我们使用的是简化的FFT block

【FPGA-DSP】第九期:音频信号处理

FFT参数设置 

【FPGA-DSP】第九期:音频信号处理 

注意:一定要将Natural Order给勾选上。除非你知道FFT输出的顺序如何确定,否者按照自然顺序输出。 

示波器输出结果如下: 

【FPGA-DSP】第九期:音频信号处理 

将Simulink导入到工作区的变量在matlab中进行 

【FPGA-DSP】第九期:音频信号处理

可以发现经过FFT过后的数据在8377个样本点之后才会有输出,matlab的信号处理如下: 

【FPGA-DSP】第九期:音频信号处理 

 

到了这里,关于【FPGA-DSP】第九期:音频信号处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【FPGA-DSP】第一期:DSP基础

    目录 1. DSP基础  1.1 DSP基本概念 1.2 FPGA实现DSP的特点 2. DSP硬核的结构与使用 3. FPGA设计DSP技术 3.1. 浮点数与定点数的表示与转换 3.1.1. 双精度浮点数表示 3.1.2. 双精度浮点数与定点数的转换 本章作为FPGA数字信号处理的入门介绍课程,将介绍DSP的基本原理                   

    2024年02月05日
    浏览(86)
  • 音频信号处理库librosa

    参考: 1. librosa官网 2. librosa语音信号处理 3. 语音信号处理库 ——Librosa 4. librosa音频处理教程 5. Python音频信号处理库函数librosa介绍

    2024年02月05日
    浏览(45)
  • 【FPGA-DSP】第二期:DSP开发流程【全过程】

    目录 1. System Generator安装 1.1 system generator的安装 1.1.1 vivado安装System Generator 1.1.2  System Generator配置 1.3 启动 2. FPGA-DSP开发流程 2.1 FPGA-DSP 开发流程介绍 2.2 FPGA-DSP 实际开发流程 1. 软件启动  2. matlab编写 3. Simulink仿真  Simulink输入信号 乘法器   时延器 累加器 输出示波器设置

    2024年02月11日
    浏览(45)
  • MATLAB GUI笔记(十):音频信号处理

    选择Blank GUI,然后更改保存路径 改变字体大小和显示内容 更改字体大小和显示内容 注意:以下代码中的部分变量使用global,是全局变量,这样别的控件callback函数也能调用该变量。 可以更改字体大小和显示内容 查看属性并更改字体大小和显示内容 面板 单选按钮 按钮 静态文

    2024年02月09日
    浏览(45)
  • 【FPGA-DSP】第五期:FFT调用流程

    目录 1. matlab输入信号编写 2. Simulink开发 2.1 模块搭建 2.2 Simulink运行 2.3 matlab信号处理  拓:输入信号位数改变 本章节主要说明如何在system generator中使用fft模块,话不多说,看操作: 参考教程第5期 - FFT调用流程 - 基于FPGA的数字信号处理系统开发笔记_哔哩哔哩_bilibili 参考我之

    2023年04月11日
    浏览(42)
  • 【Matlab】音频信号谱分析及椭圆滤波处理

    一个使用matlab对音频信号进行频谱分析及滤波处理的学习笔记,本文使用的是椭圆滤波器。 音频下载 demo.mp3 读取音频信号进行傅里叶变换 结果如下 在谱分析中使用matlab自带的快速傅里叶变换函数进行变换 在IIR滤波器设计中使用椭圆低通滤波器 椭圆滤波器使用 入门级教程

    2024年02月12日
    浏览(43)
  • 聊聊音频信号处理中一个不太起眼的算法-limiter

    本文对笔者关于音频信号处理中的 Limiter 的理解作以记录。如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。 由于工作上的需要,笔者花了一周左右的时间对 limiter (它属于动态范围控制器里面的一种算法,动态范围控制器包括 compressor, expander,

    2024年02月21日
    浏览(62)
  • 嵌入式操作教程_数字信号处理_音频编解码:3-6 AAC音频解码实验

    了解AAC音频格式,掌握AAC音频解码的原理,并实现将AAC格式的音频解码为PCM 音频编解码的主要对象是音乐和语音,音频的编解码格式可分为无压缩的格式、无损压缩格式、有损音乐压缩格式、有损语音压缩格式和合成算法。本实验中使用的AAC格式属于有损音乐压缩格式。音频

    2024年04月15日
    浏览(67)
  • 【FPGA】分享一些FPGA高速信号处理相关的书籍

      在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。         后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍 【FPGA】分享一些FPGA协同MATLAB开发的书籍  【FPGA】分享一些FPGA视频图像处理相关的书籍  【FPGA】分享一些FPGA高速信号处理相关的书籍

    2024年02月04日
    浏览(47)
  • 【Matlab】音频信号分析及FIR滤波处理——凯泽(Kaiser)窗

    1.1 课题内容: 利用麦克风采集语音信号(人的声音、或乐器声乐),人为加上环境噪声(窄带) 分析上述声音信号的频谱,比较两种情况下的差异 根据信号的频谱分布,选取合适的滤波器指标(频率指标、衰减指标),设计对应的 FIR 滤波器 实现数字滤波,将滤波前、后的声

    2024年02月21日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包