Audio 在音频会议中查找活动扬声器

Audio 在音频会议中查找活动扬声器,audio,voip,rtmp,freeswitch,conference,Audio,Voip,Rtmp,Freeswitch,Conference,运行音频会议的服务器如何查找谁是活动扬声器? 我想在当前正在讲话的用户旁边显示一个图标,并显示mos有源扬声器的视频 我想我需要这样的东西: 根据音频能量/功率/级别计算每次使用的分数。 使所有用户之间的分数正常化。 计算几个音频帧上的分数,以防止快速更改。 我是否需要对原始音频进行计算,或者是否可以从编码数据包speex/opus中获得分数? 有没有办法从传输音频RTMP或SDP的协议中提取此信息 在FreeSwitch中,每个参与者都有一个活动区,带有用于交谈和场地所有者的旗帜。这是代码,但

运行音频会议的服务器如何查找谁是活动扬声器? 我想在当前正在讲话的用户旁边显示一个图标,并显示mos有源扬声器的视频

我想我需要这样的东西:

根据音频能量/功率/级别计算每次使用的分数。 使所有用户之间的分数正常化。 计算几个音频帧上的分数,以防止快速更改。 我是否需要对原始音频进行计算,或者是否可以从编码数据包speex/opus中获得分数? 有没有办法从传输音频RTMP或SDP的协议中提取此信息

在FreeSwitch中,每个参与者都有一个活动区,带有用于交谈和场地所有者的旗帜。这是代码,但我不明白它是如何工作的


谢谢

通常,发送最响亮音频流的参与者被视为“活跃演讲者”


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

我是否必须解码流,或者数据包协议RTMP和WebRTC中是否有信息?我如何规范所有用户的音频以便比较合理?除非您对不同的编码提出可比较的度量,否则我假设您必须将流解码为通用音频格式。但无论如何,会议代码可能必须解码所有音频流,以便将它们混合起来,以便发送给每个参与者。请注意,对于这种方法,在切换被视为活动的人之间需要稍微延迟,以便一个扬声器上的短而大的噪音不会立即切换到它们。