Audio
音频格式
无损格式:wav, flac 有损格式:mp3
wav格式为 44 字节作为头部,后续字节为实际的数据。一般采用 int16(取值范围是[-32768, 32767]) 来存储。因此在事先已知音频的“元数据”信息时,可以以下面的方式推算音频时长:
import os
wav_path = "x.wav"
sr = 16000 # 原始数据的sample_rate为16000
n_channels = 1 # 通道数
size = 2 # 单个采样点所占的字节数(int16为2个字节)
seconds = (os.path.getsize(wav_path) - 44) / 2 / n_channels / srPython读写语音的包
scipy.io.wavfile
soundfile: doc
audioread
librosa
torchaudio
wavefile
wave
依赖关系及安装: (1)torchaudio (0.11.0) 当前可以选用 soundfile 与 sox_io 作为 backend,其中sox_io只适用于linux (2)librosa (v0.7以后) 使用 soundfile 与 audioread 作为 backend 来读写音频。特别的,默认使用 soundfile 进行读写,特别地:mp3 格式的文件 soundfile 无法读取,librosa 会用 audioread 进行读写。 (3)soundfile 的安装步骤为:
(4)audioread 的安装步骤为:
scipy.io.wavfile
只能读写 wav 格式,且 format 只能是 32-bit floating-point,32-bit PCM,16-bit PCM,8-bit PCM
注意:写文件时需要先将对音频resample好,才能写入
soundfile
按官方文档的说法, soundfile的API在0.6,0.7,0.8发生了些变化,需要小心这些“坑”。
soundfile 还提供了一些底层API例如:
audioread
略
librosa
librosa读取数据与soundfile一样一般会做归一化,但多通道情况下,读取出来的维数顺序会与soundfile相反,原因在于如下源码:
wave
代码参考自 webrtcvad
torchaudio
读音频
Last updated
Was this helpful?