当前位置: 首页 > 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

http://www.lryc.cn/news/304492.html

相关文章:

  • 关于msvcr120.dll丢失怎样修复的详细解决步骤方法分享,msvcr120.dll文件的相关内容
  • 简单几步通过DD工具把云服务器系统Linux改为windows
  • 使用 package.json 配置代理解决 React 项目中的跨域请求问题
  • 生成 Let‘s Encrypt 免费证书
  • int128的实现(基本完成)
  • 【linux】使用 acme.sh 实现了 acme 协议生成免费的SSL 证书
  • MACOS上面C/C++获取网卡索引,索引获取网卡接口名
  • 解决SSH远程登录开饭板出现密码错误问题
  • 什么时候用ref和reactive
  • Java实战:Spring Boot实现邮件发送服务
  • 重磅!MongoDB推出Atlas Stream Processing公共预览版
  • dell戴尔电脑灵越系列Inspiron 15 3520原厂Win11系统中文版/英文版
  • k8s(3)
  • Java多线程并发学习
  • Curfew e-Pass 管理系统存在Sql注入漏洞 附源代码
  • 记阿里云mysql丢表丢数据的实践记录
  • 自然语言转SQL的应用场景探索
  • Python学习笔记——PySide6设计GUI应用之UI与逻辑分离
  • 【智能家居入门2】(MQTT协议、微信小程序、STM32、ONENET云平台)
  • Java架构师之路九、设计模式:常见的设计模式,如单例模式、工厂模式、策略模式、桥接模式等
  • 【OpenAI官方课程】第三课:ChatGPT文本总结Summarizing
  • 跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)
  • 初识表及什么是数据表
  • 使用Docker部署DataX3.0+DataX-Web
  • 庖丁解牛-二叉树的遍历
  • 一文了解LM317T的引脚介绍、参数解读
  • 【2024.02.22】定时执行专家 V7.0 发布 - TimingExecutor V7.0 Release - 龙年春节重大更新版本
  • ☀️将大华摄像头画面接入Unity 【1】配置硬件和初始化摄像头
  • 直流电流电压变送器4-20mA 10V信号隔离转换模拟量精度变送器
  • 1.1 计算机网络的概念、功能、组成和分类