假设您有一个会议室,并且会议可以在任意即兴时间举行。您希望保留所有会议的音频记录。为了使其尽可能易于使用,会议参加者不需要执行任何操作,他们只知道当他们在特定房间举行会议时,他们会有会议记录。

显然,仅仅不间断地记录是低效的,因为这会浪费数据存储并且难以筛选。

我认为有两种基本方法可以解决这个问题。

  1. 录音只是根据声级阈值开始和停止。
  2. 录音是连续的,但分为 X 分钟的块。发现不包含任何内容的块将被丢弃。

我更喜欢第二种方式,因为我觉得由于启动较晚或触发器失败而丢失数据的风险较小。

我想用 Python 实现,如果可能的话,在 Windows 上实现。

实施建议?

额外的考虑因素可能值得他们自己提出问题:

  • 为此目的的最佳音频格式和压缩
  • 任何确定有多少发言者在场的方法,假设识别是不现实的
有帮助吗?

解决方案

这是那些项目之一,其中的路径将更多地定义为现有的可供重用的内容。

您可能会发现连续记录和保存数据块(例如,长达一小时的片段)更容易。

格式将取决于您的录音工具和音频处理库的形式。您甚至可能会发现您使用了两个。一种格式,例如用于录制和处理的 PCM 编码的 WAV,以及用于存储的压缩 MP3。

获得音频流后,您需要以 PCM 形式(幅度值列表)访问它。简单的平均方法可能足以检测何时存在对话。典型的调整属性:*触发的平均能量水平 *您需要在能量水平或以下以识别停止并开始的时间(我建议两个不同的值) *分析窗口的大小以进行平均

至于参与者的数量,除非你找到一个可以做到这一点的图书馆,否则我没有看到一个简单的解决方案。我以前使用过语音识别引擎,也做过相当数量的音频处理,但我还没有看到任何“简单”的方法来做到这一点。如果您要寻找,请寻找进行语音分析研究的大学。您可能会找到一些可以修改的原型,以为您的软件提供一些线索。

其他提示

我认为完全用 Python 来做这件事会很困难。您正在谈论对 MP3 文件进行频率/幅度分析。您必须打开文件并查找音量阈值,然后剪掉低于该阈值的部分。弄清楚有多少发言者需要非常先进的信号处理。

粗略的谷歌搜索对我来说没有任何结果。您可能会更幸运地寻找现成的解决方案。

顺便说一句,在不让人们知道的情况下让记录器 24/7 运行可能会产生法律上的复杂性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top