音频特征---波形图

       音频信号(Audio)是带有语音、音乐和音效的有规律的声波的频率、幅度变化的信息载体。根据声波的特征,可以把音频信息分类为规则音频和不规则声音。规则音频可视为一种连续变化的模拟信号,并使用一条连续的曲线(即声波)来表示。

       当前人工智能日益成熟并在越来越多的领域获得应用,其中语音识别,音频鉴别等就是其中一个很重要的应用领域。这些核心算法的第一步都是需要将音频文件数据化,提取其中的音频特征。本文主要以其中的一个基本特征 波形为例来进行介绍。在此之前,我们首先来了解音频的一些基本概念,随后介绍如何画出波形图等特征。

一、音频基本概念

1) 通道数

又称声道数。是在采集(录制)声音时引入的概念,即用几个通道去录制声音。一般来说,单声道和双声道的音频文件较为常见。例如在声源的不同位置放置通道去录制,则可以获得多通道的音频数据。

2) 采样率

即每秒钟内采集的样本个数,每个通道分别采集。音频文件的采样率通常较高,例如44100Hz、32000Hz等。

3) 位深

又称之为 量化精度、位宽,表示一个杨本值采用多少bit来表示,用的bit越多则越接近样本的原值。例如若用3个bit表示,则只有2的3次方,也就是8个不同的值,而若用16bit、24bit或更多的bit去量化样本值,则表示的不同指就越多,从而音频听起来就更逼真。

4) 帧数

帧数也就是样本个数。对于“总帧数”要根据上下文来判断,可以是一个通道(声道)的总帧数,也可以是所有通道的总帧数。计算公式为:样本个数=文件的大小/位深精度/通道数。

5) 波形图

又称振幅图,是音频的振幅(或能量)这个维度的图形表达。波形图的横坐标一般为时间,纵坐标一般为dB(即分贝)来表示;有的时候只关心振幅的趋势,那就对振幅进行归一化为[-1,1]范围内。

二、音频波形图的绘制

音频文件大多是以mp3格式进行存储,但是mp3格式文件对于音频的压缩比例较重,因此可以考虑现将mp3文件转化为wav原始文件再提取音频特征。

首先需要安装Python的音频处理模块pydub:

pip install pydub

安装ffmpeg:

brew install ffmpeg

在Ubuntu/Debian Linux安装:

apt-get install  ffmpeg

MP3转为wav的具体代码:

from os import path
from pydub import AudioSegment
                                                                      
src = "source.mp3"
dst = "target.wav"
                                                           
sound = AudioSegment.from_mp3(src)
sound.export(dst, format="wav")

由wav文件画出波形图的源代码:

import librosa
import matplotlib.pyplot as plt
import librosa.display

audioFile='test.wav'
x,sr=librosa.load(audioFile)
plt.figure(figsize=(16,5))
librosa.display.waveplot(x,sr=sr)
plt.show()

显示的波形图如下:

好了,今天的内容先介绍到这里,接下来还会聊到频谱图等特征,敬请期待。

推荐一个公众号:健哥聊量化,会持续推出股票相关基础知识,以及python实现的一些基本的分析代码。欢迎大家关注,二维码如下:

å¥å¥èéå

相关文章列表如下:

### 关于数字电路实验中涉及数码管的相关资料 在数字电路实验中,数码管是一个重要的显示组件。以下是关于数码管显示电路设计的一些关键点及其相关内容: #### 数码管显示电路的基础理论 数码管显示电路作为电子设计中的基础模块之一,在许多应用场合下都发挥着重要作用[^1]。其工作原理主要基于电流流经特定段时点亮对应的发光二极管来形成字符或数字。 #### 设计与实现过程 为了帮助理解如何构建数码管显示电路,可以参考以下内容: - **硬件部分**:通过使用FPGA开发板并加载生成的`.bit`文件进行测试,能够直观地观察到实际效果是否符合预期[^3]。 - **软件部分**:提供了具体的Verilog HDL代码片段用于定义七段数码管的行为逻辑[^2]: ```verilog module bcd7seg( input [3:0] b, output reg [6:0] h ); // Detailed implementation ... endmodule ``` 此模块接受BCD编码形式的输入,并将其转换成适合驱动共阳极型七段显示器的形式输出。 #### 单片机环境下的应用实例 对于采用51系列单片机的情况,则可能涉及到更复杂的程序结构以便处理多任务需求[^5]。例如,在定时中断服务例程里安排不同优先级的任务执行顺序——其中就包括了针对数码管刷新频率设定合理的延时参数以减少视觉残留现象的影响。 ```c void Timer_ISR() interrupt 1 { static unsigned char i = 0; P2=0xc0;P0=0;P2=0; // Clear previous segment data. P2=0xe0;P0=~smg_du[i];P2=0;// Set active low segments according to current digit value. P2=0xc0;P0=smg_wei[i];P2=0;// Select corresponding position on the display. i++; if (i == 8) { i = 0; // Reset index after completing one full cycle through all digits positions. } } ``` 上述C语言代码展示了如何在一个简单的轮询机制基础上增加时间管理功能从而提高系统的响应速度和稳定性。 --- ### 实验报告撰写建议 当准备编写有关此类主题的研究成果总结文档时,请考虑以下几个方面: 1. **摘要**: 简要概述整个项目的背景意义、研究目标和技术路线图; 2. **材料与方法论**: 描述所使用的工具链(如Quartus II)、编程语言以及具体算法流程图表等细节信息; 3. **结果展示**: 展现最终达成的效果截图或者波形捕捉图片配合必要的文字说明解释; 4. **讨论分析**: 对比原计划指标同实测数值之间的差异原因探讨改进措施可行性评估; 5. **结论展望**: 总结收获体会并对未来进一步优化方向做出预测猜想;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值