音频采样率批量转换

因为之前训练的模型采样率是22050,现在手上有采样率48000的数据,虽说调整下参数也可以,但效果不是太好,就试着转一下,用的是BZNSYP的语料库。

现有的
在这里插入图片描述
想要的
在这里插入图片描述

方案一

import librosa
import os
from tqdm import tqdm
l = os.listdir('F:\我的程序练习\BZNSYP\Wave')[:-1]
for i in tqdm(l):
    y, sr = librosa.load('F:\我的程序练习\BZNSYP\Wave\\'+i, sr=48000)
    y_16 = librosa.resample(y, sr, 22050)
    librosa.output.write_wav('F:\\我的程序练习\\BZNSYP\\Wave\\'+i, y_16, 22050)

可以送进去模型,但是模型识别不出来它的梅尔谱图,否决了
方案一结果
在这里插入图片描述
方案二
sox下载地址,下好安装,然后就在cmd里调用就好,这个应该可以,等下看看结果

for %i in (*.wav) do 
	"H:\sox\sox-14-4-2\sox.exe" %i 
	-r 22050 
	F:\我的程序练习\BZNSYP\sox\%i

方案二结果
在这里插入图片描述

以下是一个简单的 Matlab 脚本,它可以批量将一个文件夹内的 16 位采样位数的音频文件转换为 6 位采样位数的音频文件,并将其保存在同一文件夹中。 ```matlab % 输入需要处理的文件夹路径 folder_path = input('请输入需要处理的文件夹路径:', 's'); % 打开文件夹 folder = dir(folder_path); % 遍历文件夹内的所有文件 for i = 1 : length(folder) % 获取文件名和文件路径 file_name = folder(i).name; file_path = fullfile(folder_path, file_name); % 判断是否为音频文件 if strfind(file_name, '.wav') ~= 0 % 读取音频文件 [y, fs] = audioread(file_path); % 转换采样位数 y = round(63 * (y + 1)); % 将数据类型转换为 int8 y = int8(y); % 将采样率转换为 11025 Hz fs = 11025; % 保存音频文件 new_file_name = strrep(file_name, '.wav', '_6bit.wav'); new_file_path = fullfile(folder_path, new_file_name); audiowrite(new_file_path, y, fs); % 验证 [new_y, new_fs] = audioread(new_file_path); if isequal(y, int8(63 * (new_y + 1))) && new_fs == fs fprintf('%s 转换成功!\n', file_name); else fprintf('%s 转换失败!\n', file_name); end end end ``` 这个脚本会提示你输入需要处理的文件夹路径,然后遍历文件夹内的所有文件,对于每个音频文件,它会读取音频数据,将采样位数转换为 6 位,并将数据类型转换为 int8,最后将采样率转换为 11025 Hz,并保存为新的文件。在保存后,它会验证新文件是否正确转换
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫凯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值