torchaudio的I/O函数

news2024/9/23 19:26:01
  1. info、load、save

1.1 info

torchaudio.info (filepath: str , ...)
Fetch meta data of an audio file. Refer to torchaudio.backend for the detail.
返回音频文件的meta信息

这里的meta元信息包括采样率、帧数、通道数、量化位数、音频格式

info = torchaudio.info(r'E:\adins\data\2s\test\cover\test60099_1.flac')
print(info)
输出meat信息
AudioMetaData(sample_rate=16000, num_frames=32000, num_channels=1, bits_per_sample=16, encoding=FLAC)

1.2 load

torchaudio.load (filepath: str , ...)
Load audio file into torch.Tensor object
将音频文件加载为Tensor

这里加载的tensor,形状为[1, length]

y1, sr = torchaudio.load(r'E:\adins\data\2s\test\cover\test60099_1.flac')

1.3 save

torchaudio.save (filepath: str , src: torch.Tensor , sample_rate: int , ...)
Save torch.Tensor object into an audio format
保存tensor到音频文件

save的参数很多,很难权衡参数的选择,这里推荐两种方式:

  • 使用默认参数

torchaudio.save(path, waveform, sample_rate)

根据官网的说法,你不提供encodeing的参数,save时也会自动选择

  • 以手中的音频作为依据,使用torchaudio.info的输出作为选择依据

# AudioMetaData(sample_rate=16000, num_frames=32000, num_channels=1, bits_per_sample=16, encoding=FLAC)
torchaudio.save(path, waveform, sample_rate, encoding="PCM_S", bits_per_sample=16)

值得注意的是,info输出的encoding严格来说是音频的format格式,save中的encoding是音频的编码方式,不能等同

  1. save的几个坑

2.1 save的实现后端

torchaudio.backend module provides implementations for audio file I/O functionalities, which are torchaudio.info, torchaudio.load, and torchaudio.save.
There are currently two implementations available.
* "sox_io" (default on Linux/macOS)
* "soundfile" (default on Windows)

save, load, info 的实现都是基于torchaudio.backend类,该类的后端(底层实现),在linux/Mac系统上是sox_io,在windows系统上依赖于soundfile。

在windows上使用IO函数之前要确保安装了soundfile

import soundfile as sf
print(sf.__version__)

还可以查看soundfile支持的音频格式

print(sf.available_formats())

2.2 save的format参数和encoding参数

format被测试过支持的参数有WAV、FLAC、OGG/VORBIS、SPHERE

encoding支持的参数有PCM_S, PCM_U 、PCM_F 、ULAW、ALAW

虽然这里描述flac支持这些encoding方式,但是当你同时使用时必然会报错

flac does not support encoding

这是因为在源码中,调用soundfile前,torchaudio用_get_subtype函数处理了encoding和format

可以看到,当format为flac时,不允许有encoding参数,否则就会报flac does not support encoding错误

也就是flac只支持PCM_S8、PCM_S16、PCM_S32三种格式,而且是根据bits_per_sample量化数做选择的

所以,想保存为flac格式的音频,应该使用format和bits_per_sample两个参数,而不使用encoding参数

  1. save的合法参数搭配

  • wav:

  • format、encoding、bits_per_sample

  • flac:

  • format、bits_per_sample

  • encoding、bits_per_sample

  • ogg/vorbis

  • format

  • sph

  • format

  • nis/nist

  • format

文档:

io函数APi :https://pytorch.org/audio/stable/torchaudio.html?highlight=torchaudio+info#torchaudio.info

backbone:https://pytorch.org/audio/stable/backend.html#overview

源码:https://pytorch.org/audio/stable/_modules/torchaudio/backend/soundfile_backend.html#save

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

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

相关文章

Java使用DFA算法实现敏感词过滤

1 前言敏感词过滤就是你在项目中输入某些字(比如输入xxoo相关的文字时)时要能检测出来,很多项目中都会有一个敏感词管理模块,在敏感词管理模块中你可以加入敏感词,然后根据加入的敏感词去过滤输入内容中的敏感词并进行…

测试软件5

一 css基础 css定义:可以设置网页中的样式,外观,美化 css中文名字:级联样式表,层叠样式表,样式表 二 css基础语法 1.style标签写在title标签后面 2.选择器{属性名1:属性值1;属性名…

ChatGPT最牛应用,让它帮你更新网站新闻吧!

谁能想到,ChatGPT火了!既能对话入流,又能写诗歌论文、出面试题、编代码,甚至还通过了谷歌面试拿到L3工程师offer,放在一年之前,没人相信这是当前AI能够达到的水平。ChatGPT自面世以来,凭借其极为…

【数据结构初阶】手把手带你实现栈

前言 在进入数据结构初阶的学习之后,我们学习了顺序表和链表,当然栈也是一种特殊的数据结构,他的特点是后进先出。 栈的概念及结构 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删…

iptables的介绍

iptables简介 1、 什么是iptables? iptables是linux防火墙工作在用户空间的管理工具,是 netfilter/iptables IP信息包过滤系统的一部分,用来设置、维护和检查Linux内核的IP数据包过滤规则 2、 iptables特点 iptables是基于内核的防火墙&…

【pytorch 入门系列】02 手把手多分类从0到1

温故而知新,通过手把手写一个多分类任务来复习之前所学过的知识。 前置知识 factorize的妙用:把文本数据枚举化 labels, uniques pd.factorize([b, b, a, c, b]) labels,uniques(array([0, 0, 1, 2, 0]), array([‘b’, ‘a’, ‘c’], dtypeobject))…

【C++】-- 特殊类设计

对于类的思维境界提升,没有太大的实际意义,但是锻炼思想。 目录 单例模式 饿汉模式 懒汉模式 #:请设计一个类,不能被拷贝。 拷贝只会发生在两个场景中:拷贝构造函数赋值运算符重载因此想要让一个类禁止拷贝&#xf…

对称锥规划:对称锥的增广拉格朗日乘子法(Semi-Smooth Newton Method解无约束优化子问题)

文章目录对称锥规划:对称锥的增广拉格朗日乘子法(Semi-Smooth Newton Method解无约束优化子问题)对称锥的增广拉格朗日函数Semi-Smooth Newton Method半光滑牛顿法广义雅可比半光滑性半光滑牛顿算法参考文献对称锥规划:对称锥的增…

2023年最新阿里云服务器价格表出炉(精准收费标准及配置价格表)

阿里云在全球率先宣布了基于 Intel Ice Lake 处理器的第七代云服务器ECS,性能提升的同时降低了报价,性价比更高了。进入2023年阿里云服务器价格依然是大家关心的问题,事实上阿里云服务器租用价格和最新收费标准都可以通过官方云服务器计算器来…

【IoT】智能烟雾报警器

设计简介 硬件设计由AT89C51单片机、DS18B20温度传感器、4位共阳数码管、电源模块、报警模块、按键模块、MQ-2烟雾检测模块和ADC0832模数转换模块组成。 烟雾传感器MQ-2检测空气中的烟雾气体,通过ADC0832进行数据转换,经过单片机的运算处理后在数码管上…

【WEB前端进阶之路】 HTML 全路线学习知识点梳理(上)

前言 HTML 是一切Web开发的基础,本文专门为小白整理,针对前端零基础的朋友们,手把手教你学习HTML,让你轻松迈入WEB开发的行列。 首先,感谢 橙子_ 在HTML学习以及本文编写过程中对我的帮助。 文章目录前言一.HTML简介1.…

Java使用不同方式获取两个集合List的交集、补集、并集(相加)、差集(相减)

1 明确概念首先知道几个单词的意思:并集 union交集 intersection补集 complement析取 disjunction减去 subtract1.1 并集对于两个给定集合A、B,由两个集合所有元素构成的集合,叫做A和B的并集。记作:AUB 读作“A并B”例&#…

微纳制造技术——基础知识

1.什么是直接带隙半导体和间接带隙半导体 导带底和价带顶处以同一K值,称为直接带隙半导体 导带底和价带顶不处在同一K值,称为间接带隙半导体 2.扩散和漂移的公式 3.三五族半导体的性质 1.high mobility 2.wide bandgap 3.direct bandgap 4.三五族…

SWM181 串口功能使用介绍

SWM181 串口功能使用介绍📌SDK固件包:https://www.synwit.cn/kuhanshu_amp_licheng/✨注意新手谨慎选择作为入门单片机学习。🌼开发板如下图: 📋SWM181描述上写了有4个串口,在数据手册上,将引脚…

教你如何搭建设备-巡检管理系统,demo可分享

1、简介1.1、案例简介本文将介绍,如何搭建设备-巡检管理。1.2、应用场景设备管理员进行制定设备巡检时间/内容计划、记录设备巡检信息、可以查看今日待巡检设备。2、设置方法2.1、表单搭建1)新建表单【设备档案-履历表】,字段设置如下&#x…

activiti7执行流程详解

什么是工作流? 官方定义:工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统…

阿赵的MaxScript学习笔记分享八《文件操作》

大家好,我是阿赵。继续分享MaxScript学习笔记第八篇 。这一篇主要讲文件操作,包括文件的I/O和导入导出。 1、获得3DsMax指定的一些目录路径 如果在电脑上安装了3DsMax软件,那么在文档里面会有一个3dsMax的文件夹,里面有一些3dsMa…

《C++ Primer Plus》(第6版)第8章编程练习

《C Primer Plus》(第6版)第8章编程练习《C Primer Plus》(第6版)第8章编程练习1. 打印字符串2. CandyBar3. 将string对象的内容转换为大写4. 设置并打印字符串5. max5()6. maxn()7. SumArray()《C Primer Plus》(第6版…

【C++】C++11 异常

目录 1. C语言传统的处理错误的方式 2. C异常概念 3. 异常的使用 3.1. 异常的抛出和捕获 3.2. 在函数调用链中异常栈展开匹配原则 3.3. 异常的重新抛出 3.4. 异常安全 3.5. 异常规范 4.自定义异常体系 5. C标准库的异常体系 6. 异常的优缺点 6.1. C异常的优点&…

Spark性能优化二 Shuffle机制分析

(一) 什么情况下发生shuffle 在MapReduce框架中,Shuffle是连接Map和Reduce之间的桥梁,Map阶段通过shuffle读取数据并输出到对应的Reduce;而Reduce阶段负责从Map端拉取数据并进行计算。在整个shuffle过程中&#xff0c…