Microphone on the HTC VIVE Focus 3 doesn't work
Microphone on the HTC VIVE Focus 3 doesn't work, but on other platforms -Pico, Oculus, PC everything's ok. What could be the problem?
10 Replies
Hi @MaxEsin. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
I'm sorry, but the knowledge sources do not contain specific information about microphone support or known issues on the HTC VIVE Focus 3 platform. The documentation covers microphone setup and troubleshooting for platforms like Mac, iOS, Android, and general Unity settings, but does not mention the VIVE Focus 3 or provide platform-specific guidance for it.
If the microphone works on Pico, Oculus, and PC but not on the VIVE Focus 3, it may be due to platform-specific compatibility or permission issues not addressed in the current Normcore documentation. I recommend checking your Unity microphone permissions and device settings, as well as reaching out to the Normcore community for further assistance, as suggested in the documentation for unresolved issuesVoice chat common questions.
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------
<@328247194794852352> Kapa.ai is still learning and improving, please let me know how I did by reacting below.
On the Vive Focus 3, Normcore uses the Unity Microphone API. I would start by verifying that the Unity microphone API works on that platform. HTC has been known to be fairly buggy there
Also make sure nothing else in your app tries to bind to the microphone too. Unity’s microphone API will return silence for all future attempts to bind to the microphone
Thanks for reply! Okey, I'll check it
So, I debugged the connection to the room and catch next error :
AndroidPlayer "HTC_VIVE_Focus_3" GameObject has multiple AudioSources and/or AudioListeners attached. While built-in filters like lowpass are instantiated separately, components implementing OnAudioFilterRead may only be used by either one AudioSource or AudioListener at a time.
The reason for this is that any state information used by the callback exists only once in the component, and the source or listener calling it cannot be inferred from the callback.
In this case the OnAudioFilterRead callback of script AudioPreprocessorPlaybackListener was first attached to a component of type AudioSource on the game object Camera after which a component of type AudioListener tried to attach it.
UnityEngine.GameObject:AddComponent()
Normal.Realtime.RealtimeAvatarVoice:ConnectLocalAudioStream()
Normal.Realtime.<RequestMicrophonePermissionAndConnectLocalAudioStreamTask>d__36:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
Normal.Realtime.RealtimeAvatarVoice:RequestMicrophonePermissionAndConnectLocalAudioStream()
Normal.Realtime.RealtimeAvatarVoice:ConnectAudioStream()
Normal.Realtime.RealtimeAvatarVoice:Update()
[./Modules/Audio/Public/AudioCustomFilter.cpp line -1521741816]
I guess the line 287 in the attached image throws the error. The script is RealtimeAvatarVoice. SDK version 2.15.4. What could be the solution to it?

can you show me the logic for how the echoCancellation book is calculated and what each of the values log on that device? it should evaluate to false on that platform as it has hardware echo cancellation already
Thanks for helping me out 🙂 Well, here it is. Hope it's what you asked!

@NormalMark any chance you can add the loadedDeviceName from this to the echo cancellation exclusion list in RealtimeAvatarVoice?
will do 👍
in the meantime @MaxEsin I’d fork RealtimeAvatarVoice to set echoCancellation to false