在音频会议中查找当前发言人

Posted

技术标签:

【中文标题】在音频会议中查找当前发言人【英文标题】:Find active speaker in audio conference 【发布时间】:2013-12-20 14:31:02 【问题描述】:

运行音频会议的服务器如何找到当前发言人/发言人? 我想在当前正在发言的用户旁边显示一个图标,并显示最活跃的发言者的视频。

我想我需要类似的东西:

根据音频能量/功率/级别计算每次使用的分数。 标准化所有用户之间的分数。 计算几个音频帧的分数以防止快速变化。

我需要对原始音频进行计算,还是可以从编码数据包(speex/opus)中获得分数? 有没有办法从传输音频的协议(RTMP 或 SDP)中提取此信息?

在 FreeSwitch 中,每个参与者都有一个status field,并带有说话和发言者的标志。这是calculates the score 的代码,但我不明白它是如何工作的。

谢谢

【问题讨论】:

【参考方案1】:

通常,发送最大音频流的参与者被认为是“活跃的发言者”。

因此您必须计算每个音频流的音量。如何测量音量取决于音频流的编码。查看question,了解如何计算 PCM 音频的音量。

【讨论】:

我必须解码流还是数据包协议(RTMP 和 WebRTC)中有信息?如何标准化所有用户的音频以便比较合理? 除非您对不同的编码进行类似的测量,否则我会假设您必须将流解码为常见的音频格式。但无论如何,会议代码可能必须对所有音频流进行解码,以便将它们混合起来,以便将它们发送给每个参与者。 请注意,对于这种方法,您需要在切换谁被认为是活跃的之间有一些轻微的延迟,这样一个扬声器上的短暂而响亮的噪音不会立即切换到他们。

以上是关于在音频会议中查找当前发言人的主要内容,如果未能解决你的问题,请参考以下文章

不忘初心,不负韶华——2021年中会议发言之一

scrum站立会议

SCRUM站立会议

讲幻灯片的基本技巧——2021年中会议发言之二

修改第二周站立会议

腾创网络-webrtc视频会议软件