好网站有没有,五河网站建设哪家好,成全视频免费观看在线看第6季高清版下载,网站开发工程师岗位说明书⚠申明#xff1a; 未经许可#xff0c;禁止以任何形式转载#xff0c;若要引用#xff0c;请标注链接地址。 全文共计3077字#xff0c;阅读大概需要3分钟 #x1f308;更多学习内容#xff0c; 欢迎#x1f44f;关注#x1f440;【文末】我的个人微信公众号#xf… ⚠申明 未经许可禁止以任何形式转载若要引用请标注链接地址。 全文共计3077字阅读大概需要3分钟 更多学习内容 欢迎关注【文末】我的个人微信公众号不懂开发的程序猿 个人网站https://jerry-jy.co/ ❗❗❗知识付费止白嫖有需要请后台私信或【文末】个人微信公众号联系我 语音识别---节拍器 节拍器一、任务需求二、任务目标1、掌握clicks轨迹2、掌握动态编程节拍跟踪器函数 三、任务环境1、jupyter开发环境2、python3.63、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.clicks和librosa.beat.beat_tracklibrosa.clicks函数专门用来生成clicks轨迹其参数如下
times: 每秒放置clicks次数frames: 用于放置clicks的帧索引sr: 采样率length: 输出信号所需样本数click_freq: 默认clicks信号的频率以赫兹为单位。默认为 1KHzclick_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, duration10)
ipd.Audio(y,ratesr)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(yy, srsr)
y_beats librosa.clicks(framesbeats, srsr)查看一下beats显然这是节奏所在的帧序号
beatsarray([ 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(framesbeats, srsr, lengthlen(y))或者使用计时而不是帧索引生成节奏信号将帧转换为计时
times librosa.frames_to_time(beats, srsr)
y_beat_times librosa.clicks(timestimes, srsr)或使用880Hz的点击频率和500ms的采样生成节奏信号
y_beat_times880 librosa.clicks(timestimes, srsr,click_freq880, click_duration0.5)4、绘制节拍器
我们可以将生成的节奏波形图绘制出来方便你对不同节拍器进行区别。
# 绘制不同的节拍器
fig, ax plt.subplots(nrows4, sharexTrue,figsize(12,6))
librosa.display.waveshow(y_beats, srsr, labely_beats, axax[0],x_axisNone)
librosa.display.waveshow(y_beats_len, srsr, labely_beats_len, axax[1],x_axisNone)
librosa.display.waveshow(y_beat_times, srsr, labely_beat_times, axax[2],x_axisNone)
librosa.display.waveshow(y_beat_times880, srsr, labely_beat_times880, axax[3])[ax[i].legend() for i in range(4)];当然我们还可以将原始音频的频谱图和节拍器波形图放在一起比较
import matplotlib.pyplot as plt
fig, ax plt.subplots(nrows2, sharexTrue)
S librosa.feature.melspectrogram(yy, srsr)
# 绘制频谱图
librosa.display.specshow(librosa.power_to_db(S, refnp.max),x_axistime, y_axismel, axax[0])
# 绘制波形图
librosa.display.waveshow(y_beats_len, srsr, labelBeat clicks,axax[1])
ax[1].legend()
ax[0].label_outer()
ax[0].set_title(None);5、节拍器演示
我们也可以听一听生成的节拍器
ipd.Audio(y_beats_len,ratesr)也可以把音频和节拍器组合在一起需要注意这是一个双声道音频
two_channel np.vstack((y,y_beats_len))
ipd.Audio(two_channel,ratesr)将双声道音频转换为单声道音频也许能帮助你更好的理解节拍器
ipd.Audio(librosa.to_mono(two_channel),ratesr)五、任务小结
本实验中我们 通过librosa节拍器函数生成节拍并找到节拍对应的位置。
然后使用可视化工具将节拍绘制出来并将节拍器通过音频播放出来。
–end–
说明
本实验项目/论文若有需要请后台私信或【文末】个人微信公众号联系我