语音识别--加载音频

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

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

语音识别--加载音频

  • 加载音频
    • 一、任务需求
    • 二、任务目标
          • 1、掌握librosa加载音频
          • 2、学习采样率
          • 3、学习读取指定时段音频
    • 三、任务环境
          • 1、jupyter开发环境
          • 2、python3.6
          • 3、tensorflow2.4
    • 四、任务实施过程
      • 1、设置jupyter多行输出
      • 2、使用librosa加载音频
      • 3、采样率
      • 4、读取指定时段音频
    • 五、任务小结
  • 说明

加载音频


一、任务需求

声音处理,最重要的一步就是加载音频,音频不同于结构化数据,音频没有特定的格式。音频不同于图像,图像可见,音频不可见,因此音频的读取是不同于其他数据格式的(倒是和波等时序数据相似)。在本节实验中,我们将尝试读取音频数据,并了解一些相关知识。

要求:利用librosa等工具掌握音频加载方法

二、任务目标

1、掌握librosa加载音频
2、学习采样率
3、学习读取指定时段音频

三、任务环境

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

四、任务实施过程

1、设置jupyter多行输出

为了方便在同一个代码框打印多个输出,我们先学一个关于jupyter的小技巧

# 设置jupyter为多行输出
from IPython.core.interactiveshell import InteractiveShell 
InteractiveShell.ast_node_interactivity = 'all' #默认为'last'

2、使用librosa加载音频

Librosa是一个用于音频、音乐分析、处理的python工具包,一些常见的时频处理、特征提取、绘制声音图形等功能应有尽有,功能十分强大。读取音频的方式很多,在这里我们使用librosa读取。

import IPython.display as ipd
import librosa

我们使用函数librosa.load读取音频数据,该函数返回值为audio time series,也就是音频数据本身,和sampling rate采样率。所谓采样率,其实就是单位时间内,对声音采集多少个样本点。

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

从结果可以看出,该音频由117601个采样点组成,采样率22050。因此音频的时间长度为:

print('%.2f s'%(117601/22050))

5.33 s

接下来我们将学习如何在jupyter中播放音频

import IPython.display as ipd
ipd.display(ipd.Audio(y, rate=sr,autoplay=False))

3、采样率

正如上文所说,采样率,其实就是单位时间内,对声音采集多少个样本点。

接下来我们将修改读取音频时的采样点,再次读取数据。

# 加载文件并重采样喂 11 KHz
filename = '/home/jovyan/datas/sorohanro_-_solo-trumpet-06.ogg'
y, sr = librosa.load(filename, sr=11025)
y
len(y),sr

array([-8.7455846e-04, -3.3625244e-04, 1.4627776e-04, …,
1.2944984e-05, -1.3008447e-05, 0.0000000e+00], dtype=float32)

(58801, 11025)

可以看到,采样率降低一半,音频采样点也会下降一半 117601 / 2 = 58801 117601/2=58801 117601/2=58801,这与我们的预期相同。同时声音的时长并不会发生变化,因为采样点和采样率都降低为原来的一半。为了验证这个结论,我们可以再次播放该声音,你也可以比较一下两次读取的声音是否有差别(可能需要设备和听觉足够灵敏)。

ipd.display(ipd.Audio(y, rate=sr,autoplay=False))

4、读取指定时段音频

给定一段音频,我们可能只需要其中一段。这种情况下,并不需要将完整音频加载进来,然后再使用切片器截取。实际上,librosa已经集成了这种功能,使用方法如下:

# 选取15-20秒的音频
filename = '/home/jovyan/datas/Hungarian_Dance_number_5_-_Allegro_in_F_sharp_minor_(string_orchestra).ogg'
y,sr = librosa.load(filename)
y_clip, sr_clip = librosa.load(filename, offset=15.0, duration=5.0)
len(y),len(y_clip)
sr,sr_clip

(1010880, 110250)

(22050, 22050)

在函数librosa.load中,使用了两个新的参数,offset=15.0, duration=5.0,顾名思义,offset是指时间偏移,duration是指读取时长,因此这句命令的意思是,从音频的15秒开始,读取连续5秒,即读取15-20秒,共五秒的音频。

为了验证是不是这回事,我们先播放全部音频。

ipd.display(ipd.Audio(y, rate=sr,autoplay=False))

然后再播放截取后的音频。

ipd.display(ipd.Audio(y_clip, rate=sr_clip,autoplay=False))

从播放结果看,音频被正确截取了时长。

五、任务小结

本节实验我们学习了使用librosa.load加载音频,同时学习了采样率。

采样率,其实就是单位时间内,对声音采集多少个样本点。

最后我们还学习了如何使用librosa读取指定时段的音频。

–end–

说明

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

昂科烧录器支持O2Micro凹凸科技的电池组管理IC OZ7708

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中O2Micro凹凸科技的电池组管理IC OZ7708已经被昂科的通用烧录平台AP8000所支持。 OZ7708是一款高度集成、低成本的电池组管理IC,适用于5~8s Li-Ion/Polymer电池组&a…

245 基于matlab的MEEMD信号分解及重构算法

基于matlab的MEEMD信号分解及重构算法。MEEMD方法的主要步骤包括:1. 定义多元信号集合,将多个信号进行集合;2. 对多元信号集合进行EEMD分解,得到一组IMFs;3. 将相同IMF进行平均,得到改进的IMFs;…

用于图生成的自回归扩散模型 笔记

1 Title Autoregressive Diffusion Model for Graph Generation(Lingkai Kong、Jiaming Cui、Haotian Sun、Yuchen Zhuang、B. Aditya Prakash、Chao Zhang)【PMLR 2022】 2 Conclusion This study propose an autoregressive diffusion model …

【数据结构】单链表和双链表的基操实现

文章目录 一、链表的概念及结构二、链表的分类三、无头单向非循环链表1.单链表创建2.尾插和头插3.尾删和头删4.打印5.查找6.插入7.删除8.销毁 四、带头双向循环链表1.双链表的创建2.初始化3.判断链表是否为空4.尾插和头插5.尾删和头删6.查找7.插入8.删除9.销毁 五、总结链表和顺…

深入理解回溯算法

大家好,我是 方圆,本篇我们来讲回溯。回溯相当于穷举搜索,它会尝试各种可能的情况直到找到一个满足约束条件的解,寻找解的手段一般通过 DFS 实现,是一个 增量构造答案 的过程。回溯法适用于解决能够将原问题拆分成子问…

OpenSSL实现AES-CBC加解密,可一次性加解密任意长度的明文字符串或字节流(QT C++环境)

本篇博文讲述如何在Qt C的环境中使用OpenSSL实现AES-CBC-Pkcs7加/解密,可以一次性加解密一个任意长度的明文字符串或者字节流,但不适合分段读取加解密的(例如,一个4GB的大型文件需要加解密,要分段读取,每次…

常见通信协议

1、串口:(串行异步全双工,先发低位) 因为是异步的,所以没有时钟线,因为是全双工,所以有两条数据传输线,实现数据的收发。 帧格式 起始位1位,数据位8位,校验…

【C++】stack、queue和priority_queue的模拟实现

在本篇博客中,作者将会讲解STL中的stack、queue和priority_queue的模拟实现,同时还会带大家了解一下deque这个容器。 一.什么是适配器 STL中一共有6大组件:容器,适配器,空间配置器,仿函数,迭代器…

控制台调试 hover 后才出现的元素

调试 hover后才出现的元素 打开开发者工具,鼠标放在hover时才出现的元素上,然后点击右键; 不要选中任何选项,将鼠标移动到开发者工具的调试面板中; 按下N键,此时悬浮的元素不会消失,定位成功。…

Java注解介绍

注解(Annotation)是Java提供的一种元数据形式,它可以被添加到Java代码的各种元素上,如类、方法、变量、参数等。注解的作用主要包括: 1. 代码文档:注解可以用于生成文档,提高代码的可读性。 2.…

前端之深拷贝

前提: 就是在实际开发中,我有一个编辑的弹窗,可以查看和编辑,因为弹窗里面是一个步骤条,点击下一步就要向对应的接口发送请求,考虑到就比如我点击下一步,此次表箱信息其实不需要修改&#xff0…

大模型_DISC-MedLLM基于Baichuan-13B-Base医疗健康对话

文章目录 DISC-MedLLM介绍概述数据集部署推理流程 DISC-MedLLM 介绍 DISC-MedLLM 是一个专门针对医疗健康对话式场景而设计的医疗领域大模型,由复旦大学数据智能与社会计算实验室 (Fudan-DISC) 开发并开源。 该项目包含下列开源资源: DISC-Med-SFT 数据集 (不包…

智慧园区综合物业管理平台解决方案PPT(130页精品)

我们对智慧园区的理解 智慧园区,是通过信息技术和各类资源的整合,充分降低企业运营成本,提高工作效率,加强各类园区创新、服务和管理能力,为园区铸就一套超强的软实力。智慧园区的实现是多技术融合、多系统融合、多领域…

初识C语言——第十三天

关键字2: static 修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型) static修饰全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用 …

全方位了解 Meta Llama 3

本文将为您提供 Llama 3 的全面概览,从其架构、性能到未来的发展方向,让您一文了解这一革命性大语言模型的所有要点。 Meta Llama 发展历程 Llama 1 Llama 是由 Meta(FaceBook) AI 发布的一个开源项目,允许商用,影响力巨大。Lla…

基于springboot+vue+Mysql的在线动漫信息平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Qt | QLCDNumber 类(LCD 数字),LCD 表示液晶显示屏

01、上节回顾 Qt 基础教程合集02、QLCDNumber 1、QLCDNumber 类用于显示类似于 LCD 显示屏上的字符(见右图) ​ 2、QLCDNumber 类是 QFrame 类的直接子类,因此 QLCDNumber 以使用从 QFrame 类继承而来的边框效果 3、QLCDNumber 可显示的符号有:0,1,2,3,4,5,6,7,8,…

ue引擎游戏开发笔记(33)——武器与角色的匹配,将新武器装备到角色身上

1.需求分析: 武器能出现在世界中,完成了第一步,下一步需要角色和武器适配,即不论角色跑动,射击等,武器和角色都相匹配,将武器装备到角色身上。 2.操作实现: 1.首先先把角色原有的武…

【数据结构】--- 深入剖析二叉树(中篇)--- 认识堆堆排序Topk

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 数据结构之旅 文章目录 🏠 初识堆 📒 堆的概念 📒 堆的性质 🏠 向上调整算法 && 向下调整算…

vector的oj题

1.只出现1次的数字 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 方法:…
最新文章