语音识别---节拍器

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

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

语音识别---节拍器

  • 节拍器
    • 一、任务需求
    • 二、任务目标
          • 1、掌握clicks轨迹
          • 2、掌握动态编程节拍跟踪器函数
    • 三、任务环境
          • 1、jupyter开发环境
          • 2、python3.6
          • 3、tensorflow2.4
    • 四、任务实施过程
      • 1、加载工具和数据
      • 2、观察数据
      • 3、生成节奏
      • 4、绘制节拍器
      • 5、节拍器演示
    • 五、任务小结
  • 说明

节拍器


一、任务需求

在本实验中,我们将根据给出的音乐,生成与之对应的节拍器。

生成节拍器最关键的函数是librosa.clicks和librosa.beat.beat_track。

要求:利用librosa.clicks和librosa.beat.beat_track实现节拍器功能。

二、任务目标

1、掌握clicks轨迹
2、掌握动态编程节拍跟踪器函数

三、任务环境

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

四、任务实施过程

在本实验中,我们将根据给出的音乐,生成与之对应的节拍器。

生成节拍器最关键的函数是librosa.clickslibrosa.beat.beat_tracklibrosa.clicks函数专门用来生成clicks轨迹,其参数如下:

  • times: 每秒放置clicks次数
  • frames: 用于放置clicks的帧索引
  • sr: 采样率
  • length: 输出信号所需样本数
  • click_freq: 默认clicks信号的频率(以赫兹为单位)。默认为 1KHz
  • click_duration: 默认clicks信号的持续时间(以秒为单位)。默认值为 100 毫秒。

函数返回值为合成clicks信号

librosa.beat.beat_track则是动态编程节拍跟踪器函数

1、加载工具和数据

import librosa
import librosa.display
import numpy as np
import IPython.display as ipd
import matplotlib.pyplot as plt

读取并播放音频,这是一段Drum-bass(某种鼓)的音乐

# 检测beat事件
y, sr = librosa.load('/home/jovyan/datas/admiralbob77_-_Choice_-_Drum-bass.ogg', duration=10)
ipd.Audio(y,rate=sr)

2、观察数据

在生成节拍器之前,我们先来查看波形图

plt.figure(figsize=(12,3))
librosa.display.waveshow(y,sr)

<librosa.display.AdaptiveWaveplot at 0x7f7923993cf8>

在这里插入图片描述

从波形图上,可以看出这段音频应该存在一定的节奏,接下来我们就要用librosa.beat.beat_track来生成节奏,这是一个动态编程节拍跟踪器函数。生成节奏以后,使用librosa.clicks来合成节奏。

3、生成节奏

# 使用beat_track生成节奏
tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
y_beats = librosa.clicks(frames=beats, sr=sr)

查看一下beats,显然,这是节奏所在的帧序号

beats
array([  3,  21,  40,  59,  78,  96, 116, 135, 154, 173, 192, 211, 230,249, 268, 287, 306, 325, 344, 363])

或者通过下面这种方法产生和y长度相同的信号

y_beats_len = librosa.clicks(frames=beats, sr=sr, length=len(y))

或者使用计时而不是帧索引生成节奏信号(将帧转换为计时)

times = librosa.frames_to_time(beats, sr=sr)
y_beat_times = librosa.clicks(times=times, sr=sr)

或使用880Hz的点击频率和500ms的采样生成节奏信号

y_beat_times880 = librosa.clicks(times=times, sr=sr,click_freq=880, click_duration=0.5)

4、绘制节拍器

我们可以将生成的节奏波形图绘制出来,方便你对不同节拍器进行区别。

# 绘制不同的节拍器
fig, ax = plt.subplots(nrows=4, sharex=True,figsize=(12,6))
librosa.display.waveshow(y_beats, sr=sr, label='y_beats', ax=ax[0],x_axis=None)
librosa.display.waveshow(y_beats_len, sr=sr, label='y_beats_len', ax=ax[1],x_axis=None)
librosa.display.waveshow(y_beat_times, sr=sr, label='y_beat_times', ax=ax[2],x_axis=None)
librosa.display.waveshow(y_beat_times880, sr=sr, label='y_beat_times880', ax=ax[3])[ax[i].legend() for i in range(4)];

在这里插入图片描述
当然,我们还可以将原始音频的频谱图和节拍器波形图放在一起比较

import matplotlib.pyplot as plt
fig, ax = plt.subplots(nrows=2, sharex=True)
S = librosa.feature.melspectrogram(y=y, sr=sr)
# 绘制频谱图
librosa.display.specshow(librosa.power_to_db(S, ref=np.max),x_axis='time', y_axis='mel', ax=ax[0])
# 绘制波形图
librosa.display.waveshow(y_beats_len, sr=sr, label='Beat clicks',ax=ax[1])
ax[1].legend()
ax[0].label_outer()
ax[0].set_title(None);

在这里插入图片描述

5、节拍器演示

我们也可以听一听生成的节拍器

ipd.Audio(y_beats_len,rate=sr)

也可以把音频和节拍器组合在一起,需要注意这是一个双声道音频

two_channel = np.vstack((y,y_beats_len))
ipd.Audio(two_channel,rate=sr)

将双声道音频转换为单声道音频,也许能帮助你更好的理解节拍器

ipd.Audio(librosa.to_mono(two_channel),rate=sr)

五、任务小结

本实验中,我们 通过librosa节拍器函数生成节拍,并找到节拍对应的位置。

然后使用可视化工具将节拍绘制出来,并将节拍器通过音频播放出来。

–end–

说明

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度神经网络中的不确定性研究综述

A.单一确定性方法 对于确定性神经网络&#xff0c;参数是确定的&#xff0c;每次向前传递的重复都会产生相同的结果。对于不确定性量化的单一确定性网络方法&#xff0c;我们总结了在确定性网络中基于单一正向传递计算预测y *的不确定性的所有方法。在文献中&#xff0c;可以找…

Scratch编程v3.29.1少儿编程工具

软件介绍 SCRATCH是一款由麻省理工学院&#xff08;MIT&#xff09;媒体实验室开发的图形化编程语言和集成开发环境&#xff08;IDE&#xff09;。它的目标是让编程变得有趣、直观且易学&#xff0c;尤其是针对儿童和青少年群体。通过SCRATCH&#xff0c;用户可以通过拖放代码…

Al加码,引爆“躺平式”旅游 | 最新快讯

旅游业正迎来新的技术浪潮。 文&#xff5c;锌刻度&#xff0c;作者&#xff5c;孟会缘&#xff0c;编辑&#xff5c;李季 今年的五一&#xff0c;“微度假”“微旅行”纷纷出圈。 相较于三亚、云南等老牌旅游大热门&#xff0c;人们开始寻找一些不用“人挤人”的小众旅行目的…

第一天学习(GPT)

1.图片和语义是如何映射的&#xff1f; **Dalle2&#xff1a;**首先会对图片和语义进行预训练&#xff0c;将二者向量存储起来&#xff0c;然后将语义的vector向量转成图片的向量&#xff0c;然后基于这个图片往回反向映射&#xff08;Diffusion&#xff09;——>根据这段描…

Ps 中 曲线和色阶的区别在哪里?

【官方解释】 在Photoshop中&#xff0c;曲线&#xff08;Curves&#xff09;和色阶&#xff08;Levels&#xff09;是两种调整图像色调和对比度的工具&#xff0c;它们有一些相似之处&#xff0c;但也有一些重要的区别。 调整方式: 曲线&#xff08;Curves&#xff09;&…

激发创新活力,泸州老窖锻造人才“铁军”(内附长江酒道短评)

执笔 | 姜 姜 编辑 | 古利特 刚刚站上300亿元新台阶&#xff0c;泸州老窖再次传来喜讯。 <<<左右滑动查看更多>>> 4月28日&#xff0c;四川省庆祝“五一”国际劳动节大会在成都召开。泸州老窖股份有限公司工业4.0项目秘书长赵丙坤、泸州老窖酿酒有限责任公…

测试环境搭建:JDK+Tomcat+Mysql+Redis

基础的测试环境搭建&#xff1a; LAMPLinux(CentOS、ubuntu、redhat)ApacheMysqlPHP LTMJLinux(CentOS、ubuntu、redhat)TomcatMysql(Oracle)RedisJava 真实的测试环境搭建&#xff1a;&#xff08;企业真实的运维&#xff09; 基于SpringBoot&#xff08;SpringCloud分布式微…

SpringMVC响应数据

三、SpringMVC响应数据 3.1 handler方法分析 理解handler方法的作用和组成&#xff1a; /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为handler* TODO: handler需要使用RequestMapping/GetMapping系列,声明路径,在HandlerMapping中注册,供DS查找!* TODO: ha…

d3dcompiler_47.dll缺失怎么修复?,修复d3dcompiler_47.dll文件缺失的详细教程

d3dcompiler_47.dll缺失怎么修复&#xff1f;遇到这样的问题是不是不知道怎么办&#xff1f;如果你不知道该怎么办&#xff0c;那么小编这篇文章将教大家如何去解决d3dcompiler_47.dll文件缺失。 方法1&#xff1a;下载并安装d3dcompiler_47.dll文件 当出现找不到d3dcompiler_…

5月6号作业

申请该结构体数组&#xff0c;容量为5&#xff0c;初始化5个学生的信息 使用fprintf将数组中的5个学生信息&#xff0c;保存到文件中去 下一次程序运行的时候&#xff0c;使用fscanf&#xff0c;将文件中的5个学生信息&#xff0c;写入(加载)到数组中去&#xff0c;并直接输出学…

MySQL基础_5.多表查询

文章目录 一、多表连接1.1、笛卡尔积&#xff08;或交叉连接&#xff09; 二、多表查询&#xff08;SQL99语法&#xff09;2.1、内连接(INNER JOIN)2.2、内连接(INNER JOIN) 一、多表连接 多表查询&#xff0c;也称为关联查询&#xff0c;指两个或更多个表一起完成查询操作。 …

视频号是资本创造的伪风口?还是互联网的真机遇?

我是王路飞。 都说视频号是在模仿抖音。 短视频、直播&#xff0c;甚至是视频号小店&#xff0c;都在模仿。 所以很多人认为&#xff0c;视频号不过是资本创造的伪风口罢了&#xff0c;谈不上是下一个互联网风口所在。 到底是伪风口&#xff1f;还是互联网的真机遇&#xf…

WinForm DataGridView 垂直滑动条显示异常

WinForm DataGridView的垂直滑动条不正常显示&#xff0c;当总行高超过控件高度&#xff08;控件高度为227及以下不会出现该问题&#xff09;时&#xff0c;右下角会出现一个灰框&#xff0c;因为表格控件位处TabControl下&#xff0c;当切换其他选项卡后再切回来时&#xff0c…

超分辨率重建——BSRN网络训练自己数据集并推理测试(详细图文教程)

目录 一、BSRN网络总结二、源码包准备三、环境准备3.1 报错KeyError: "No object named BSRN found in arch registry!"3.2 安装basicsr源码包3.3 参考环境 四、数据集准备五、训练5.1 配置文件参数修改5.2 启动训练5.2.1 命令方式训练5.2.2 配置Configuration方式训…

python+barcode快速生成条形码(电商测试小工具)

背景 需要测试自助收银机&#xff0c;每次都要在线生成条码&#xff0c;而且生成次数还有限制 需求 满足自定义条形码&#xff0c;可以生成条形码图片 方案 python 3.8以上 barcode 1.0.4 python-barcode 0.15.1 代码 用于生成Code128条形码…

基于Springboot的校园志愿者管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园志愿者管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

LangChain框架学习总结

目录 一、简介 二、概念 三、组件具体介绍 3.1 Models 3.1.1 LLMs 3.1.2 Chat Models 3.1.3 Text Embedding Modesl 3.1.4 总结 3.2 Prompts 3.2.1 LLM Prompt Template 3.2.1.1 自定义PromptTemplate 3.2.1.2 partial PromptTemplate 3.2.1.3 序列化PromptTemplat…

网页html版面分析-- BeauifulSoup(python 文档解析提取)

介绍 BeauifulSoup 是一个可以从HTML或XML 文件中提取数据的python库&#xff1b;它能通过转换器实现惯用的文档导航、查找、修改文档的方式。 BeauifulSoup是一个基于re开发的解析库&#xff0c;可以提供一些强大的解析功能&#xff1b;使用BeauifulSoup 能够提高提取数据的效…

VueComponent构造函数

//创建school组件——注册给谁 在谁的结构上写const school Vue.extend({name: school,//开发者工具的显示template: <div><h2>学校名称&#xff1a;{{schoolName}}</h2><h2>学校地址&#xff1a;{{adress}}</h2> </div>,//结构data() {…

液晶数显式液压万能试验机WES-300B

一、简介 主机为两立柱、两丝杠、油缸下置式&#xff0c;拉伸空间位于主机的上方&#xff0c;压缩、弯曲试验空间位于主机下横梁和工作台之间。测力仪表采用高清液晶显示屏&#xff0c;实验数据方便直观。 主要性能技术指标 最大试验力&#xff08;kN&#xff09; 300 试…