音频分割

最近在练习听写,想找一个可以把音频播放完一句话之后暂停的软件。没有找到合适的,于是自己用matlab写了一个。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function splitsound(filename)
[data, fs] = audioread(filename);
A = data(:,1);
D(1) = 1;
j = 2; k = 0;
for ii = 1:length(A)
if abs(A(ii)) < 1e-3 % 考虑存在噪声,设置阈值1e-3
k = k+1;
if A(ii) ~= 0 && k > 30000 % 假设朗读者句子之间停顿时间是30000/fs秒
D(j) = ii;
k = 0;
j = j+1;
end
end
end
tt = 1;
while tt < length(D)
sound(A(D(tt):D(tt+1)),fs)
flag = input('put a to listen again and put other key to listen next sentence:','s');
if ~strcmp(flag,'a')
tt = tt+1;
end
end