确定视频中的发言量“数量”

时间:2015-03-24 02:31:24

标签: audio signal-processing

我正在制作一个转录讲座视频的项目。我们目前只是使用人类进行转录,因为我们认为它比编辑ASR更容易转录,特别是对于技术主题(不是我的问题,尽管我喜欢这方面的任何输入)。根据我们的经验,我们发现在大约10分钟的抄写后,我们会焦虑或失去焦点。因此,我们根据讲座内容中的逻辑中断将视频分成约5-7分钟的块。然而,我们发现讲座的开始(至少对于我们正在试用的班级而言)通常比以后有更多的谈话,这通常有时间让学生们就问题进行自己的谈话。我在想,我们可以进行信号处理,以确定整个视频中的大量说话。我们的想法是将视频分成包含大致相同数量的讲座的片段,而不是长度相同的片段。

我已经对此做了一些研究,但是对于我正在尝试做的事情,一切似乎都有些过分。本课程的视频,虽然我们想要概括,但基本上只包含讲师,偶尔会有一些反馈和遥远的学生声音。那么,我只需简单地查看波形并粗略地使用包含音频超过某个阈值的点来确定讲师何时讲话?或者是一种ML方法真的有必要量化讲师的发言吗?

希望这是有道理的,如果有必要,我可以澄清任何事情。

感谢帮助,因为我没有信号处理经验。

1 个答案:

答案 0 :(得分:2)

尽管有机器学习方法非常善于区分语音和其他声音,但您似乎并不需要为您的应用程序提供这种准确性。一个简单的基于水平的方法类似于你提出的方法应该足以让你估计发言时间。

基于音量的声音检测

目标

给定音频样本,从包含背景噪声的部分中区分出具有大量声音的部分。然后,这可以很容易地用于估计声音文件中的语音量。

方法概述

我们将首先将其转换为滑动窗口RMS,而不是查看信号中的原始级别。这给出了音频样本的任何给定点处音频能量的简单度量。通过分析RMS信号,我们可以自动确定区分背景噪声和语音的阈值。

工作示例

我将在MATLAB中使用这个例子,因为它使数学变得容易,并让我创建插图。

源音频

我正在使用肯尼迪总统"我们选择去登月"言语。我使用维基百科的音频文件,只提取左声道。

imported = importdata('moon.ogg');
audio = imported.data(:,1);
plot(audio);
plot((1:length(audio))/imported.fs, audio);
title('Raw Audio Signal');
xlabel('Time (s)');

enter image description here

生成RMS信号

虽然您可以技术上实现重叠的每个样本滑动窗口,但是避免重叠更简单,您将获得非常相似的结果。我将信号分成一秒钟的块,并将RMS值存储在一个新的数组中,每秒输入一个音频。

audioRMS = [];
for i = 1:imported.fs:(length(audio)-imported.fs)
   audioRMS = [audioRMS; rms(audio(i:(i+imported.fs)))];
end
plot(1:length(audioRMS), audioRMS);
title('Audio RMS Signal');
xlabel('Time (s)');

enter image description here

这会产生一个小得多的阵列,充满正值,代表音频能量或"响度"每秒。

选择门槛

下一步是确定"响亮"是足够响亮的。"您可以使用直方图了解噪声级别的分布:

histogram(audioRMS, 50);

enter image description here

我怀疑下架是人群和录音环境的一般背景噪音。下一个架子可能是更安静的掌声。其余的是言语和响亮的人群反应,这种方法无法区分。对于您的应用,最响亮的区域几乎总是讲话。

我的RMS信号中的最小值是.0233,并且粗略猜测我将使用该值的3倍作为我的噪声标准。这似乎会切断整个下架和大部分下架。

对该阈值进行简单检查可得出972秒的语音计数:

>> sum(audioRMS > 3*min(audioRMS))

ans =

   972

为了测试它的实际效果,我们可以听取消除的音频。

for i = 1:length(speech)
   if(~speech(i))
      clippedAudio = [clippedAudio; audio(((i-1)*imported.fs+1):i*imported.fs)];
   end
end
>> sound(clippedAudio, imported.fs);

由于分析中使用的一秒钟窗口,通过聆听这一点会产生一分钟的背景人群噪音和部分字词的亚秒级剪辑。没有明显的语音长度。相反的是,音频主要是语音,在跳过部分时会听到咔嗒声。更响亮的掌声打破了它。

这意味着对于此演讲,最低RMS的三倍阈值工作得非常好。您可能需要调整该比率以获得适合您录制环境的自动结果,但这似乎是一个好的开始。