【python】【sox】音频降采样与改变位深度

这篇文章介绍如何使用python对音频进行降采样。
手上有一批48k采样率的音频,需要将到16k。这里使用python的librosa库来完成。一行代码搞定:

y_48k, sr = librosa.load(wav_filename, 48000) # 读取原音频
y_16k = librosa.resample(y=y_48k, orig_sr=48000, targe_sr=16000) # 降采样

批量降采样,代码如下

# coding: utf-8
###########################################################
# TODO: 将VCTK/下的音频48k,降采样为16k,并保存到VCTK_16K/目录下
###########################################################
import librosa  
import glob  
from tqdm import tqdm 
import os 

for wav in tqdm(glob.glob('VCTK/*/*.wav')):
	audio_48k, sr = librosa.load(wav, 48000)
	audio_16k = librosa.resample(y=audio_48k, orig_sr=sr, target_sr=16000)
	new_filename = wav.replace('VCTK', 'VCTK_16K')
	new_file_path = new_filename.split(os.sep)[0] + '/' + new_filename.split(os.sep)[1]+'/'
	if not os.path.exists(new_file_path):
		os.makedirs(new_file_path)
	librosa.output.write_wav(new_filename, audio_16k, 16000)

除此之外,还可以利用linux系统的sox工具进行处理

示例

降采样:

sox input.wav -r 16000 output.wav

位深 变为16位:

sox input.wav -b 16 output.wav

同时实现降采样与改变采样深度

sox input.wav -b 16 -r 16000 output.wav

显示音频的信息:

soxi input.wav

输出:

Input File     : 'id11700.wav'
Channels       : 1
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:00:02.01 = 88463 samples = 150.447 CDDA sectors
File Size      : 177k
Bit Rate       : 706k
Sample Encoding: 16-bit Signed Integer PCM

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值