语音识别之线性频谱图

server/2024/11/15 4:15:20/

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/

❗❗❗知识付费,🈲止白嫖,有需要请后台私信或【文末】个人微信公众号联系我

语音识别之线性频谱图

  • 线性频谱图
    • 一、任务需求
    • 二、任务目标
          • 1、掌握频谱图绘制方法
          • 2、掌握频谱图装饰方法
          • 3、学习修改频谱图轴刻度
          • 4、学习更改频谱图分析参数
    • 三、任务环境
          • 1、jupyter开发环境
          • 2、python3.6
          • 3、tensorflow2.4
    • 四、任务实施过程
      • 1、频谱图
      • 2、装饰频谱图
      • 3、更改轴刻度
      • 4、更改分析参数
    • 五、任务小结
  • 说明

线性频谱图


一、任务需求

本实验深入演示specshow 可以做的所有事情,包括生成多种时、频域(spectro-temporal)数据的可视化。

librosa 的所有绘图函数都依赖于 matplotlib。因此在这里导入 matplotlib 的 pyplot API是有帮助的。

要求:利用librosa生成频谱图

二、任务目标

1、掌握频谱图绘制方法
2、掌握频谱图装饰方法
3、学习修改频谱图轴刻度
4、学习更改频谱图分析参数

三、任务环境

1、jupyter开发环境
2、python3.6
3、tensorflow2.4

四、任务实施过程

加载工具

import numpy as np
import matplotlib.pyplot as pltimport librosa
import librosa.display

首先,我们加载一个演示曲目

y, sr = librosa.load('/home/jovyan/datas/sorohanro_-_solo-trumpet-06.ogg')

1、频谱图

首先我们要显示一个普通的(线性)频谱图。我们将通过首先计算短时傅立叶变换,然后将幅度映射到分贝尺度来做到这一点。

# 短时傅里叶变换
D = librosa.stft(y)
S_db = librosa.amplitude_to_db(np.abs(D), ref=np.max)

matplotlib有两种主要的绘图方式,pyplot接口和面向对象接口,这两种方式librosa都支持。

接下来我们演示pyplot接口:

plt.figure()
# 绘制频谱图
librosa.display.specshow(S_db)
# 添加颜色条
plt.colorbar()

上图展示了一段声音对应的db频谱图,注意他的数值是负数,这和我们通常理解的分贝不同,音频分析中的db“参照点”不同寻常理解的分贝。

音频分析通常采用满刻度电平,0dBFS(0dB Full Scale),即把16bit采样的±32767允许的最大值作为0dB,这就是参考点。

也就是把有可能出现“数字过载”的临界点作为参照点,在这样的标准下,大多数的实际电平自然都是负值。

然后是面向对象接口

fig, ax = plt.subplots()
img = librosa.display.specshow(S_db, ax=ax)
fig.colorbar(img, ax=ax)

如你所见,两个图形其实是相同的,但它们使用不同的编程接口来构建。

大多数人都会认为 pyplot 界面学起来更快,但面向对象的界面对于复杂的图形可能更灵活一些。

对于本实验的其余部分,我们将使用面向对象的接口。

2、装饰频谱图

上一步表达了频谱图的基本内容,但缺少轴标签。没有这些信息,读者就不可能知道如何解释可视化结论。specshow 提供了许多工具来自动装饰绘图的轴。对于上图,x 轴对应于时间,y 轴对应于由离散傅立叶变换产生的线性间隔频率。我们可以告诉 specshow 相应地轴标签:

fig, ax = plt.subplots()
img = librosa.display.specshow(S_db, x_axis='time', y_axis='linear', ax=ax)
ax.set(title='Now with labeled axes!')
fig.colorbar(img, ax=ax, format="%+2.f dB")

看起来好多了,我们还在颜色条中添加了格式字符串,以便读者了解如何读取色标。

3、更改轴刻度

线性频率标度有时很有用,但通常很难阅读。或者,通常使用对数频率轴。这样做的好处是每个八度音程都占据恒定的垂直范围。

我们可以告诉 specshow 使用对数缩放频率轴,就像上面一样:

fig, ax = plt.subplots()
# 修改为指数坐标
img = librosa.display.specshow(S_db, x_axis='time', y_axis='log', ax=ax)
# 添加标题
ax.set(title='Using a logarithmic frequency axis')
fig.colorbar(img, ax=ax, format="%+2.f dB")

现在纵坐标轴被转换为对数标签,这样做的好处在于音程变成了线性的,例如国际标准音A440,它的下一个八度起始位置是880,再下一个八度是1760。这样指数增加的音程,在现在的坐标轴上,总是等距的。

4、更改分析参数

librosa 使用的默认参数设置(例如,sr=22050、hop_length=512等)可能不适用于每个信号。如果您更改参数的默认值,例如在计算 STFT 时,您可以将相同的参数传递给specshow。这可确保正确计算轴刻度(例如时间或频率)。

例如,在下面的示例中,我们将hop_length设置为256,n_fft设置为4096.

fig, ax = plt.subplots()
D_highres = librosa.stft(y, hop_length=256, n_fft=4096)
S_db_hr = librosa.amplitude_to_db(np.abs(D_highres), ref=np.max)
# 绘制频谱图,横坐标时间,纵坐标指数坐标
img = librosa.display.specshow(S_db_hr, hop_length=256, x_axis='time', y_axis='log',ax=ax)
ax.set(title='Higher time and frequency resolution')
fig.colorbar(img, ax=ax, format="%+2.f dB")

hop_length决定了相邻两帧之间不重叠的音频样本数量。

五、任务小结

本实验完成了specshow 生成频谱图。通过本实验我们学习到了包括生成多种时、频域(spectro-temporal)数据的可视化的相关知识,需要掌握以下知识点:

  • 掌握频谱图绘制方法
  • 掌握频谱图装饰方法
  • 学习修改频谱图轴刻度
  • 学习更改频谱图分析参数

–end–

说明

本实验(项目)/论文若有需要,请后台私信或【文末】个人微信公众号联系我


http://www.ppmy.cn/server/36292.html

相关文章

换新电脑,配置环境,下载需要的软件(还在整理中)

开发要的工具软件 nvm node版本管理工具(要在下载node之前配置好)参考 Visual Studio Code 写vue、html等 HBuilder X 写uniapp的 微信开发者工具 开发小程序微信h5的 Postman 测试接口的 Firefox 备用浏览器 uTools 小工具 Adobe Photoshop 切图仔必备 …

连通“数据”,让制造变“聪明”

说起数据智能,你第一时间想到的是什么呢?是科技感十足的智慧城市?还是炫酷的人工智能景象? 数据作为企业的战略资产越来越受到重视,从最初的数据协助业务协同,转化为数据驱动业务,数据驱动运营…

实用的Chrome 浏览器命令

Google Chrome 浏览器提供了许多快捷命令和实用功能,可以帮助用户提高效率和改善浏览体验。这里列举了一些非常实用的Chrome浏览器命令: 1. **CtrlT** / **CmdT** - 打开一个新的标签页。 2. **CtrlShiftT** / **CmdShiftT** - 重新打开最后关闭的标签页…

【Linux】System V 共享内存

文章目录 1. 共享内存示意图2. 共享内存数据结构3. 共享内存函数shmgetshmatshmdtshmctl 4. 实例代码测试共享内存5. 共享内存相关命令6. System V 消息队列(了解)7. System V 信号量(了解) 共享内存区是最快的 IPC 形式。一旦这样…

气膜滑雪馆:滑雪新宠的全面介绍—轻空间

气膜滑雪馆,作为一种创新型的滑雪运动设施,正以其独特的建筑特点和功能优势,成为滑雪运动领域的引领者。这些场馆凭借其轻盈的结构、优良的保温性能和环保节能的特性,为滑雪场馆的建设提供了全新的解决方案。相较于传统建筑&#…

Nvidia发布Llama3-ChatQA-1.5: 提升对话问答和表格推理能力,平均性能超越GPT-4

前言 近日,Nvidia推出了一款名为Llama3-ChatQA-1.5的对话问答模型。该模型在对话式问答和检索增强型生成等能力方面表现出色,在综合评测指标上甚至超越了当前业界顶尖的GPT-4模型。 技术特点 Llama3-ChatQA-1.5是基于Llama-3基础模型训练而成的。相比之…

EPSON的温补晶振TG7050SKN

EPSON公司推出的温补品振(TCXO)TG7050SKN,尺寸大小为7.0x5.0x1.5 mm,具有高稳定性(105℃℃高温)等特点,可输出10MHz~54MHz的频率可应用在网络同步,BTS,微波,以及需要符合Stratum3、SyncE和IEEE1588等规范的…

快手蓝V商家采集软件使用指南

快手是中国最大的短视频平台之一,许多商家都在快手上开设账号进行营销推广。为了更好地管理和分析自己的粉丝数据,快手为商家提供了蓝V商家采集软件。本篇文章将为大家介绍快手蓝V商家采集软件的使用方法,并附带一些代码示例。 一、下载和安…