在音频会议中查找当前发言人
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)中有信息?如何标准化所有用户的音频以便比较合理? 除非您对不同的编码进行类似的测量,否则我会假设您必须将流解码为常见的音频格式。但无论如何,会议代码可能必须对所有音频流进行解码,以便将它们混合起来,以便将它们发送给每个参与者。 请注意,对于这种方法,您需要在切换谁被认为是活跃的之间有一些轻微的延迟,这样一个扬声器上的短暂而响亮的噪音不会立即切换到他们。以上是关于在音频会议中查找当前发言人的主要内容,如果未能解决你的问题,请参考以下文章