System Generator从入门到放弃(十)-ADC应用之音频信号采集与输出


文章目录

  • System Generator从入门到放弃(十)-ADC应用之音频信号采集与输出
  • 一、ADC应用之音频信号采集与输出
  • 1、简介
  • 2、单声道音频信号采集与输出
    • 2.1 本部分设计使用到的文件及block
    • 2.2 搭建模型
    • 2.3 仿真验证
  • 3、单声道采集、立体声输出
    • 3.1 本部分设计使用到的文件及block
    • 3.2 搭建模型
  • 4、立体声采集与输出
    • 4.1 本部分设计使用到的文件及block
    • 4.2 搭建模型
  • 5、语音信号数字滤波

  System Generator是Xilinx公司进行数字信号处理开发的一种设计工具,它通过将Xilinx开发的一些模块嵌入到Simulink的库中,可以在Simulink中进行定点仿真,可以设置定点信号的类型,这样就可以比较定点仿真与浮点仿真的区别。并且可以生成HDL文件,或者网表,可以在ISE中进行调用。或者直接生成比特流下载文件。能够加快DSP系统的开发进度。


一、ADC应用之音频信号采集与输出


1、简介

  音频格式即音乐格式。音频格式是指要在计算机内播放或是处理音频文件,是对声音文件进行数、模转换的过程。音频格式最大带宽是20KHZ,速率介于40~50KHZ之间,采用线性脉冲编码调制PCM,每一量化步长都具有相等的长度。
  主要包括WAVE、AIFF、MPEG、MP3、MPEG-4、MIDI、WMA、RealAudio、VQF、OggVorbis等格式。音频信号属于一维信号,下面介绍一些基本概念如下:

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

  关于声道,这里简单说下单声道、双声道和立体声之间的区别:
  单声道只能播放一个声道的歌(一般为左声道),而立体声是双声道的,能听到左右声道合成的声音,人的耳朵会分辨不出从哪个方向传来的,所以叫立体声 我们听声音时,可以分辨出声音是由哪个方向传来的,从而大致确定声源的位置。我们所以能分辨声音的方向,是由于我们有两只耳朵的缘故。例如,在我们的右前方有一个声源,那么,由于右耳离声源较近,声音就首先传到右耳,然后才传到左耳,并且右耳听到的声音比左耳听到的声音稍强些。如果声源发出的声音频率很高,传向左耳的声音有一部分会被人头反射回去,因而左耳就不容易听到这个声音。两只耳朵对声音的感觉的这种微小差别,传到大脑神经中,就使我们能够判断声音是来自右前方。这就是通常所说的“双耳效应”。

  一般的录音是单声道的。例如一个音乐会的录音,从舞台各方面同时传来的不同乐器声音,被一个传声器接收(或被几个传声器接收然后混合在一起),综合成一种音频电流而记录下来。放音时也是由一个扬声器发出声音。我们只能听到各个方向不同乐器的综合声,而不能分辨哪个乐器声音是从哪个方向来的,感觉不到像在音乐厅里面听音乐时的那种立体感(空间感)。

  如果录音时能够把不同声源的空间位置反映出来,使人们在听录音时,就好像身临其境直接听到各方面的声源发音一样。这种放声系统重放的具有立体感的声音,叫做立体声。


2、单声道音频信号采集与输出


2.1 本部分设计使用到的文件及block

Xilinx block

System Generator

Gateway In

Gateway Out

Delay

其它block
mux(Simulink->mux):将多路数据组合为一路

From Multimedia File(Simulink->From Multimedia File):读取音频文件
To Multimedia File(Simulink->To Multimedia File):用于将信号以指定音频格式写入文件

文件
单声道音频文件(网上下载的多为双声道和立体声,所以需要利用格式工厂转化为单声道音频)


2.2 搭建模型

  搭建如下模型:

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

File name中选择音频文件路径;
Number of times to play file设置从文件中读取的音频信号时间
Samples per audio channel设置每个通道读取出的采样点数

  音频信号需要通过Gateway In输入到FPGA,但Gateway In不能接收向量型数据,因此这个值通常设置为1更方便。

To Multimedia File用于将信号以指定音频格式写入文件:

File name设置输出音频文件的路径
File type设置输出音频文件格式
Audio compressor选择采用的音频压缩算法
Audio data type设置输出音频的数据格式,这里设置为与输入相同

  此外,Audio System Toolbox中还有Audio Device Reader可以读取麦克风的音频数据;Audio Device Writer可以直接用扬声器播放声音而不用保存文件。但模型中使用这两个block时,仿真用时会比采用文件格式的输入输出长很多,因此在后面的设计中都采用文件格式做音频采集与输出。

2.3 仿真验证

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

  本设计采集到音频信号后不做任何处理直接输出,播放输出的音频文件。仿真过程中的几个注意项给出:

  • 数据格式选择:From Multimedia
    File这个block当输出数据格式设置为double时,输出数据范围为-1~1,因此Gateway
    In的数据格式只需要保留一个符号位,其余都是小数位即可,如Fix_16_15。
  • 采样频率的改变:可以改变System Generator和Gateway
    In的采样频率(如改到11025Hz、22050Hz、44100Hz甚至更低)来体会不同采样率对音频信号的影响。
  • 量化精度的改变:可以改变Gateway
    In的数据格式(如Fix_8_7、Fix_4_3、Fix_2_1)来体会不同量化精度对音频信号的影响。可以感受到,随着量化位宽的减少,音频信号中噪声增多,质量变差。

3、单声道采集、立体声输出

3.1 本部分设计使用到的文件及block

Xilinx block

System Generator

Gateway In

Gateway Out

Delay

其它block
mux(Simulink->mux):将多路数据组合为一路

From Multimedia File(Simulink->From Multimedia File):读取音频文件
To Multimedia File(Simulink->To Multimedia File):用于将信号以指定音频格式写入文件

文件
单声道音频文件(网上下载的多为双声道和立体声,所以需要利用格式工厂转化为单声道音频)


3.2 搭建模型

  搭建如下模型:

  To Multimedia File这个block支持向量形式输入,会导出立体声音频文件。使用Simulink中mux可以将多路数据组合为一路。
  采集的单声道音频分为两路,为了区别左右声道一路经过一定单位的延时,再由Mux组合成向量形式输出为立体声音频文件。延时的方法只是粗略的实现了效果,实际中会采用一些专门的DSP算法达到更好的音效。


4、立体声采集与输出

4.1 本部分设计使用到的文件及block

Xilinx block

System Generator

Gateway In

Gateway Out

其它block
demux(Simulink->demux):将一路分为多路数据组合

mux(Simulink->mux):将多路数据组合为一路

From Multimedia File(Simulink->From Multimedia File):读取音频文件
To Multimedia File(Simulink->To Multimedia File):用于将信号以指定音频格式写入文件

文件
立体声音频文件


4.2 搭建模型

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

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

  本文介绍了单声道和立体声音频信号在System Generator系统中的采集和输出方法,可以在此设计的基础上,在中间加入DSP算法做语音信号处理。
  采集的单声道音频分为两路,为了区别左右声道一路经过一定单位的延时,再由Mux组合成向量形式输出为立体声音频文件。延时的方法只是粗略的实现了效果,实际中会采用一些专门的DSP算法达到更好的音效。

5、语音信号数字滤波

  以前面文章讲述过的FIR数字滤波为例,做一个简单的DSP处理。语音信号的频率范围为300~3400Hz,老式电话通常选用8000Hz作为采样频率。设计一个FIR滤波器,将声音信号转换为“电话音”,按下图连接model:

  Digital FIR Filter的滤波系数配置如下:

  对输入的信号用8000Hz重新采样,通带范围为300~3400Hz。Convert截取滤波输出信号的位宽。运行仿真,播放输出音频,会发现其声音如同电话中的声音一样。





System Generator从入门到放弃(十)-ADC应用之音频信号采集与输出相关推荐

  1. System Generator从入门到放弃(一)-安装与使用

    System Generator从入门到放弃(一)-安装与使用 文章目录 System Generator从入门到放弃(一)-安装与使用 一.安装与使用 1.简介 2.功能介绍 3.System Ge ...

  2. System Generator从入门到放弃(六)-利用Vivado HLS block实现VivadoHLS调用C/C++代码

    System Generator从入门到放弃(六)-利用Vivado HLS block实现Vivado HLS调用C/C++代码 夜未央,流星落,情已殇 文章目录 System Generator从 ...

  3. keras从入门到放弃(十九)RNN和LSTM

    循环神经网络,Recurrent Neural Network.神经网络是一种节点定向连接成环的人工神经网络.这种网络的内部状态可以展示动态时序行为.不同于前馈神经网络的是,RNN可以利用它内部的记忆 ...

  4. keras从入门到放弃(十八)批量标准化

    什么是批量标准化 批标准化(Batch Normalization,BN),又叫批量归一化,是一种用于改善人工神经网络的性能和稳定性的技术. 这是一种为神经网络中的任何层提供零均值/单位方差输入的技术 ...

  5. keras从入门到放弃(十五)图片数据增强

    import keras from keras import layers import numpy as np import os import shutil base_dir = '../猫狗数据 ...

  6. keras从入门到放弃(十六)内置预训练网络VGG

    什么是预训练网络 一个常用.高效的在小图像数据集上深度学习的方法就是利用预训练网络.一个预训练网络只是简单的储存了之前在大的数据集训练的结果,通常是大的图像分类任务.如果原始的数据集已经足够大,足够一 ...

  7. keras从入门到放弃(十四)模型的保存

    今天来探讨模型的保存 Keras使用HDF5文件系统来保存模型.模型保存的方法很容易,只需要使用save()方法即可. 上次训练好了手写数字识别数据集,今天学会如何保存数据集 保存/加载整个模型 Ke ...

  8. keras从入门到放弃(十二)卷积神经网络

    卷积神经网络 卷积是指将卷积核应用到某个张量的所有点上,通过将 卷积核在输入的张量上滑动而生成经过滤波处理的张量. 介绍的目标识别与分类,就是在前面问题的基础 上进行扩展,实现对于图像等分类和识别. ...

  9. keras从入门到放弃(十)手写数字识别训练

    导入手写数字识别 import keras from keras import layers import matplotlib.pyplot as plt %matplotlib inline im ...

最新文章

  1. 第三节 循环链表的Go语言实现
  2. 为什么我们做分布式的使用都是用Redis?
  3. 【JOURNAL】集花酒联
  4. SSM框架笔记16:EASYUI_SSM框架西蒙购物网
  5. 2023考研王道数据结构知识梳理
  6. 【敏捷开发每日一贴】代码走查
  7. python用实现FGO自动挂机战斗思路
  8. tempfile.mkstemp 详解
  9. Redis Cluster集群
  10. 内核查找符号指针函数kallsyms_lookup_name
  11. 见过的最全的iOS面试题
  12. SLCP验厂辅导,SLCP数据收集和验证工具整合成在线格式的托管平台来完成
  13. 2020电赛省赛实战(二)ADS1292心电检测仪
  14. 常见的反常积分判断敛散性方法
  15. 【IoT】产品开发:产品开发战略指南:如何获得竞争优势?
  16. 从mybatis拦截器维度处理读写分离的多数据源问题
  17. 抖音短视频企业团队SOP策划运营工作计划表格
  18. Smart Link详解及其配置
  19. 中老年计算机办公网上培训,中老年电脑免费培训(第1讲).ppt
  20. 不怕神一样的对手就怕猪一样的队友

热门文章

  1. 美中嘉和赴港IPO背后:毛利率大幅下滑,杨建宇控股2家公司均亏损
  2. codevs 1907:方格取数3
  3. JAVA构造函数(方法)
  4. python画螺旋状图形教程_Python实现的绘制三维双螺旋线图形功能示例
  5. 用Kettle的一套流程完成对整个数据库迁移
  6. 熊猫烧香制造者李俊出狱以后的六种出路
  7. html5设置app启动页,使用Ken Burns Effect制作App启动页
  8. 半导体车间测量尘埃粒子浓度等级仪器解决方案
  9. 靠着这Java面试210题,成功拿下了10多家国内知名大厂Offer,10万字精华全部分享给大家
  10. 计算机原理-ACC 等14个指令缩写