To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at git://github.com/rmeddis/MAP.git .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Revision:

root / userProgramsTim / cutsignal.m @ 38:c2204b18f4a2

History | View | Annotate | Download (3.07 KB)

1 38:c2204b18f4a2 rmeddis
function outsignal = cutsignal(insignal,samplingfrequency,vocabularyset)
2
3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4
%
5
%   This function cuts the silence before and after the audiosignal
6
%
7
%  (c) Tim J?rgens, Medizinische Physik, Feb.2006
8
%
9
%  usage: outsignal = cutsignal(insignal,samplingfrequency,vocabularyset)
10
%
11
%
12
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13
14
% initial_energythreshold = 0.11;
15
% final_energythreshold = 0.05;
16
%
17
% % choose initial and final delay due to different vocabularysets
18
% if (strcmp(vocabularyset,'f_f') > 0)
19
%     initial_delay = 0.17; % the speech started delay seconds before trespassing threshold (default 0.01, for f_f: 0.17)
20
%     final_delay = 0.2; %default 0.1, for f_f: 0.2
21
% else
22
%     initial_delay = 0.01; % the speech started delay seconds before trespassing threshold (default 0.01, for f_f: 0.2)
23
%     final_delay = 0.1; %default 0.1, for f_f: 0.2
24
% end
25
%
26
% [initialsample_of_frame, energy] = compute_energy(insignal, samplingfrequency);
27
% for i = 1:length(initialsample_of_frame)
28
%     if (energy(i) > initial_energythreshold)
29
%         initialsample = initialsample_of_frame(i)-samplingfrequency*initial_delay;
30
%         break;
31
%     end
32
% end
33
%
34
% time_inverted_energy = energy(end:-1:1); %turn signal around
35
% time_inverted_initialsample = initialsample_of_frame(end:-1:1);
36
%
37
% for i = 1:length(time_inverted_initialsample)
38
%     if (time_inverted_energy(i) > final_energythreshold)
39
%         finalsample = time_inverted_initialsample(i)+samplingfrequency*final_delay;
40
%         break;
41
%     end
42
% end
43
%
44
% if (finalsample > length(insignal))
45
%     finalsample = length(insignal);
46
% end
47
% outsignal = insignal(initialsample:finalsample);
48
49
if nargin < 3
50
    vocabularyset = 'a_a'; %default vocabularyset
51
end
52
53
54
55
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56
initial_threshold = 0.15; %amplitude threshold for detection of speech
57
final_threshold = 0.1;
58
59
% choose initial and final delay due to different vocabularysets
60
if (strcmp(vocabularyset,'f_f') > 0)
61
    initial_delay = 0.2; % the speech started delay seconds before trespassing threshold (default 0.01, for f_f: 0.2)
62
    final_delay = 0.2; %default 0.1, for f_f: 0.2
63
else
64
    initial_delay = 0.01; % the speech started delay seconds before trespassing threshold (default 0.01, for f_f: 0.2)
65
    final_delay = 0.1; %default 0.1, for f_f: 0.2
66
end
67
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
68
69
70
%cut signal with taking initial delay into account
71
for(i = 1:length(insignal))
72
    if (abs(insignal(i)) > initial_threshold)
73
        initialsample = i - samplingfrequency*initial_delay;
74
        break;
75
    end
76
end
77
78
79
time_inverted_insignal = insignal(end:-1:1); %turn signal around
80
% cut it with taking a final delay into account
81
for(i = 1:length(time_inverted_insignal))
82
    if (abs(time_inverted_insignal(i)) > final_threshold)
83
        finalsample = i - samplingfrequency*final_delay;
84
        break;
85
    end
86
end
87
88
if (finalsample < 0)
89
    finalsample = 0;
90
end
91
if (initialsample < 1)
92
    initialsample = 1;
93
end
94
95
%% output %%%
96
outsignal = insignal(initialsample:end-finalsample);