# Get active speaker in Mac OS client SDK

**URL:** <https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412>\
**Category:** macOS\
**Created:** [February 15, 2021, 11:43pm UTC](https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412 "2021-02-15T23:43:48Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jsw](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jsw/32/23126_2.png) [@jsw](https://devforum.zoom.us/u/jsw)\
**Post date:** [February 15, 2021, 11:43pm UTC](https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412/1 "2021-02-15T23:43:48Z")

</div>

Is the active speaker available in the Mac OS client SDK?

In a previous thread linked below, I see a reference to it being available in the iOS client, but can’t find the corresponding method in the Mac OS SDK.

I’d like to know which user is speaking in real-time so that I can correlate with real-time audio processing on the side (e.g. transcription). I’m open to other approaches as well.

> [@Active Speaker API](https://devforum.zoom.us/t/active-speaker-api/7620):
>
> We’d love to know when a guest is speaking, to understand who said what during a meeting. This can then be overlayed onto Cloud Recordings for audio analysis. It seems that Zoom has this information, but it is not exposed during a meeting via any API or webhook approach.

jeff

---

<div class="post-metadata">

**Author:** ![richard1](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/richard1/32/5472_2.png) [@richard1](https://devforum.zoom.us/u/richard1)\
**Post date:** [February 16, 2021, 11:31am UTC](https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412/2 "2021-02-16T11:31:59Z")

</div>

There is a method in the meeting delegate ((void)onActiveVideoUserChanged:(unsigned int)userID) which should be called on active speaker change however this is currently broken on macOS as it is always one user behind. Hopefully this might be fixed at some point soon…

---

<div class="post-metadata">

**Author:** ![jon.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jon.zoom/32/13495_2.png) [@jon.zoom](https://devforum.zoom.us/u/jon.zoom)\
**Post date:** [February 16, 2021, 6:16pm UTC](https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412/3 "2021-02-16T18:16:40Z")

</div>

Hi @jsw, thanks for using the dev forum (and thank you @richard1 for providing the answer! 💙 )

Please let me know if you would like any additional help or if the callback referenced in the previous reply is missing some aspect of functionality you are looking for. As @richard1 mentioned, there is a known bug with this callback which we are working on a fix for.

Thanks!

---

<div class="post-metadata">

**Author:** ![jsw](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jsw/32/23126_2.png) [@jsw](https://devforum.zoom.us/u/jsw)\
**Post date:** [February 16, 2021, 10:58pm UTC](https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412/4 "2021-02-16T22:58:35Z")

</div>

ZoomSDKMeetingActionControllerDelegate also has similar methods onUserActiveAudioChanage() [including typo] and onActiveSpeakerVideoUserChanged(). I’m not sure which of all 3 would be most appropriate to get notified of the active speaker(s).

---

<div class="post-metadata">

**Author:** ![jon.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jon.zoom/32/13495_2.png) [@jon.zoom](https://devforum.zoom.us/u/jon.zoom)\
**Post date:** [February 17, 2021, 5:59pm UTC](https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412/5 "2021-02-17T17:59:09Z")

</div>

Hi @jsw,

Thanks for pointing out that typo! We’ll get that fixed in a future release.

Here is a breakdown of what each of those callbacks indicates:

- `onUserActiveAudioChanage` - Provides an `NSArray` containing user IDs for all attendees with active audio
- `onActiveSpeakerVideoUserChanged` - When using [active speaker view](https://support.zoom.us/hc/en-us/articles/201362323-Changing-the-video-layout-Active-Speaker-View-and-Gallery-View-), this callback indicates when the active speaker displayed changes.
- `onActiveVideoUserChanged` - Functions similarly to the `onActiveSpeakerVideoUserChanged` callback, but can be triggered without the specific user speaking (e.g. the previous active speaker left the meeting and now a new one must be shown).

Thanks!

---

<div class="post-metadata">

**Author:** ![jsw](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jsw/32/23126_2.png) [@jsw](https://devforum.zoom.us/u/jsw)\
**Post date:** [February 17, 2021, 9:10pm UTC](https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412/6 "2021-02-17T21:10:16Z")

</div>

Hi @jon.zoom ,

I would be using gallery view instead of speaker view, so that seems to rule out `onActiveSpeakerVideoUserChanged` and `onActiveSpeakerVideoUserChanged`. So would `onUserActiveAudioChanage` be the right callback to set for determining the current speaker(s), independent of the view?

---

<div class="post-metadata">

**Author:** ![jon.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jon.zoom/32/13495_2.png) [@jon.zoom](https://devforum.zoom.us/u/jon.zoom)\
**Post date:** [February 17, 2021, 10:10pm UTC](https://devforum.zoom.us/t/get-active-speaker-in-mac-os-client-sdk/43412/7 "2021-02-17T22:10:58Z")

</div>

Hi @jsw,

For your use case, yes I would recommend that callback. 🙂

Thanks!
