当前位置: 首页 > news >正文

python 几种常见的音频数据读取、保存方式

1. soundfile 库的使用

soundfile库是一个Python库,主要用于读取和写入音频文件。它支持多种音频格式,包括WAV、AIFF、FLAC和OGG等。通过soundfile库,用户可以方便地将numpy数组存储到音频文件或者将音频文件加载到numpy数组中。此外,soundfile库还提供了一些函数,用于处理音频数据。它的使用简单且灵活,方便进行音频处理和分析的工作。

1.1 read 读文件

读取音频文件数据

import soundfile as sf
# wav numpy 型数据,sr是采样率
filename = "xx/xx.wav"
wav, sr = sf.read(filename, dtype='float64)

可通过dtype将任意的音频文件数据格式转为float64,float32,int16,int32 的numpy型数据,其中float64,float32是归一化后的结果。dtype 默认值为float64。

1.2 write 保存文件

保存音频文件数据

# save_filename, 保存的音频文件路径,data保存的数据,samplerate是采样率
sf.wrtie(save_filename,data,samplerate)

支持写入的数据也为float64,float32,int16,int32,并保存相应格式的数据

2. torchaudio 库的使用

torchaudio是PyTorch深度学习框架的一部分,主要用于处理和分析音频数据。它提供了丰富的音频信号处理工具、特征提取功能以及与深度学习模型结合的接口,使得在PyTorch中进行音频相关的机器学习和深度学习任务变得更加便捷。通过使用torchaudio,开发者能够轻松地将音频数据转换为适合深度学习模型输入的形式,并利用PyTorch的高效张量运算和自动梯度功能进行训练和推理。此外,torchaudio还支持多声道音频处理和GPU加速,以满足不同应用场景的需求。

2.1 load 读文件

加载音频文件数据

import torchaudio
file_path = "xx/xx.wav"
waveform, sr = torchaudio.load(file_path, normalize=True)

主要说明:
可以读取float32, int16, int32类型数据,返回的是torch.tensor类型的数据;
normalize=True时,返回的数据是归一化到(-1,1)的float32数据;
normalize=False时,返回的是float32、int16或者int32数据,具体需要看file_path本身是什么类型的音频数据;
normalize默认值为True。

2.2 save 保存文件

保存音频数据到文件

# out_path, 保存的音频文件路径,waveform保存的数据,sr是采样率
torchaudio.save(out_path, waveform, sr)

根据waveform的格式自动保存为float32、int16或者int32

3. from scipy.io import wavfile 库的使用

scipy.io.wavfile库是SciPy科学计算库中的一个模块,主要用于读取和写入WAV格式的音频文件。该库提供了函数用于将音频数据存储为WAV文件或者将WAV文件加载为numpy数组,方便进行音频数据的处理和分析。用户可以使用scipy.io.wavfile库来读取音频文件的采样率和数据,以及将音频数据写入WAV文件。此外,该库还提供了一些函数用于处理音频数据,如获取音频数据的声道数、比特深度等信息。通过scipy.io.wavfile库,用户可以方便地进行音频文件的读写操作,并结合其他Python库进行音频数据处理和分析。

3.1 read 读文件

from scipy.io import wavfile
file_name = "xx/xx.wav"
sr, wav_data = wavfile.read(file_name)

返回的是float32、int16、int32型numpy数据,具体格式根据file_name文件的音频格式

3.2 save 保存文件

# filename, 保存的音频文件路径,wav_data保存的数据,sr是采样率
wavfile.wrtie(filename, sr, wav_data)

根据wav_data的格式自动保存为float32、int16或者int32。

注:以上float32、float64数据是归一化后的结果,与其他转换为int16 / 2 ** 15,int32 / 2 ** 31

相关文章:

  • React setState同步还是异步
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • 【springBoot】springAOP
  • 信息学奥赛一本通1209:分数求和
  • 【智慧零售】门店管理设备解决方案,为企业数字化运营升级赋能
  • 逻辑回归算法概述
  • Ubuntu20.04 屏幕截图快捷键
  • GptSoVits音频教程
  • 设计模式-创建型模式-原型模式
  • 宏观视角下的浏览器
  • Selenium定位不到元素怎么办?一定要这么做
  • 电路设计(26)——速度表的multisim仿真
  • 计算机设计大赛 深度学习卷积神经网络的花卉识别
  • fastApi笔记01-路径参数
  • 分类预测 | Matlab实现CWT-DSCNN-MSA基于时序特征、cwt小波时频图的双流卷积融合注意力机制的分类预测
  • php的引用
  • Akka系列(七):Actor持久化之Akka persistence
  • Angular数据绑定机制
  • echarts的各种常用效果展示
  • Kibana配置logstash,报表一体化
  • MySQL的数据类型
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 安装python包到指定虚拟环境
  • 电商搜索引擎的架构设计和性能优化
  • 目录与文件属性:编写ls
  • 前端_面试
  • 前端路由实现-history
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 入门到放弃node系列之Hello Word篇
  • 突破自己的技术思维
  • 微信开源mars源码分析1—上层samples分析
  • - 转 Ext2.0 form使用实例
  • 湖北分布式智能数据采集方法有哪些?
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C)一些题4
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (zt)最盛行的警世狂言(爆笑)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (蓝桥杯每日一题)love
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (四) Graphivz 颜色选择
  • (算法设计与分析)第一章算法概述-习题
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • .Mobi域名介绍
  • .NET Core 版本不支持的问题
  • .NET Core 中插件式开发实现
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET Core中Emit的使用
  • .NET DataGridView数据绑定说明