looping in all audio files
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I'm trying to remove silence in audio files I already did that in every single file but I still have thousand of another files. but to save time, how I can loop them to silence all files in the same time and be able to download all new audios?. I tried but it gets me some errors.
clc; clear all; [filenames, pathname] = uigetfile({'.wav'},'Select file .wav', ... 'MultiSelect', 'on'); fullpathnames = fullfile(pathname, cellstr(filenames)); numfiles = length(fullpathnames); audio = cell(numfiles, 1); fs = zeros(numfiles, 1); for i = 1: numfiles
[audio{i}, fs(i)] = audioread(fullpathnames{i}); end % do framing f_d = 0.25; f_size = round(f_d
fs); n = length(audio); n_f = floor(n/f_size); %no. of frames temp = 0; for i = 1 : n_f
frames(i,:) = audio(temp + 1 : temp + f_size); temp = temp + f_size; end % silence removal based on max amplitude m_amp = abs(max(frames,[],2)); % find maximum of each frame id = find(m_amp > 0.03); % finding ID of frames with max amp > 0.03 fr_ws = frames(id,:); % frames without silence % reconstruct signal audio_r = reshape(fr_ws',1,[]); plot(audio_r); title('speech without silence'); hold on; plot(audio,'r'); legend('After Silence Removal','Original Signal'); frame_analysis_silence_removal.m Displaying frame_analysis_silence_removal.m.
0 comentarios
Respuestas (2)
Benjamin Thompson
el 16 de Ag. de 2022
dir('*.wav') will return a struct containing all the audio file names. Then you can pass the name field of each element of that structure array to audioread in a for loop. That would take uigetfile out of the picture.
3 comentarios
Walter Roberson
el 16 de Ag. de 2022
Editada: Walter Roberson
el 17 de Ag. de 2022
You should format your code first before expecting someone to edit it. With the way it is now, we cannot tell where the comments end.
Benjamin Thompson
el 17 de Ag. de 2022
Here is a small sample to try yourself and if you have problems and want to post a new sample of your code for help, you may do that.
>> cd rtwdemo_roll_ert_rtw\
>> D = dir('*.c')
D =
2×1 struct array with fields:
name
folder
date
bytes
isdir
datenum
>> D(1).name
ans =
'ert_main.c'
>> D(2).name
ans =
'rtwdemo_roll.c'
jibrahim
el 18 de Ag. de 2022
audioDatastore can simplify this type of task.
ads = audioDatastore(yourFolder);
% Read all files, one by one, using a while-loop
while hasdata(ads)
[data,info] = read(ads);
% do whatever you want with the data
end
0 comentarios
Ver también
Categorías
Más información sobre Audio and Video Data en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!