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

 更新时间:2024年06月22日 15:32:41   作者:idealmu  
Python是一种非常适合进行音频处理和音频分析的语言,因为它有许多强大的库可以使用,下面这篇文章主要给大家介绍了关于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

附: soundfile安装报错与解决

①问题描述

在终端使用pip install soundfile安装soundfile时报错。

②问题解决

python处理音频文件经常要使用soundfile库。ubuntu系统在pip安装soundfile库时报错,是因为缺乏依赖包libsndfile1,所以要先安装依赖包,然后再安装soundfile。命令如下:

step1:终端输入sudo apt-get install libsndfile1

step2:终端输入pip install soundfile

总结

到此这篇关于python中常见的几种音频数据读取、保存方式的文章就介绍到这了,更多相关python音频数据读取保存方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 元组和列表的区别

    python 元组和列表的区别

    这篇文章主要介绍了python 元组和列表的区别,帮助大家更好的理解和学习python 数据类型的相关知识,感兴趣的朋友可以了解下
    2020-11-11
  • python中Pexpect的工作流程实例讲解

    python中Pexpect的工作流程实例讲解

    在本篇文章里小编给大家整理的是一篇关于python中Pexpect的工作流程实例讲解内容,有兴趣的朋友们可以学习下。
    2021-03-03
  • 探索Python神奇算术用代码轻松求和的几种方法

    探索Python神奇算术用代码轻松求和的几种方法

    求和是数学中最基本的运算之一,也是编程中常见的任务之一,Python 提供了多种方法来计算和求和数字,本文将掏出计算求和的不同方法,包括使用循环、内置函数以及第三方库
    2023-11-11
  • Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子

    Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子

    这篇文章主要介绍了Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子,本文重点在于scapy有使用上,需要的朋友可以参考下
    2014-10-10
  • Python遍历列表时删除元素案例

    Python遍历列表时删除元素案例

    这篇文章主要介绍了Python遍历列表时删除元素案例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09
  • python妙用之编码的转换详解

    python妙用之编码的转换详解

    在日常渗透,漏洞挖掘,甚至是CTF比赛中会遇到各种编码,常常伴随着这些编码之间的各种转换。下面这篇文章主要介绍了python中编码转换妙用的相关资料,需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-04-04
  • Pycharm使用之设置代码字体大小和颜色主题的教程

    Pycharm使用之设置代码字体大小和颜色主题的教程

    今天小编就为大家分享一篇Pycharm使用之设置代码字体大小和颜色主题的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python中的测试框架

    python中的测试框架

    这篇文章主要介绍了python中测试框架的相关资料,帮助大家更好的理解和使用python进行测试,感兴趣的朋友可以了解下
    2020-11-11
  • Python中的简写操作(for、if简写、匿名函数)

    Python中的简写操作(for、if简写、匿名函数)

    这篇文章主要介绍了Python中的简写操作(for、if简写、匿名函数),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python对excel的基本操作方法

    Python对excel的基本操作方法

    这篇文章主要介绍了Python对excel的基本操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02

最新评论