我有参与对话的发言者数量及其开始和结束时间的矩阵..如下
segmentation_result=
start time end time
speaker1 1 1095
speaker2 10.95 20.67
speaker3 20.67 35.54
我想播放每个说话者的片段,new_seg 是原始语音信号的列向量,如果我有时间我可以通过将该时间乘以 Fs(16000)来计算片段的大小,其中第一片段总是从 1 开始。我试过如下代码
count=0;
for i=1:length(segmentation_result(:,1))
count=count+1;
if count==1
player=audioplay(new_seg(segmentation_result(1):segmentation_result(i,2)*Fs));
lay(player);
else
player=audioplay(new_seg(segmentation_result(i,1):segmentation_result(i,2)*Fs));
play(player);
end
end
但是那个播放器正在被覆盖...这就是为什么只有最后一个执行的播放器在播放...
我制作了 new_seg 语音信号的图表,其中 x 轴是时间,y-xis 是 new_seg 数据的幅度值。我在图表上显示了有扬声器变化点的垂直线。现在我希望垂直线应该移动自动从扬声器片段的开始时间到结束点,同时该片段也应该播放。
您的帮助将不胜感激..