Microphone silently fails to capture on Meta Quest 3 standalone builds

What do you need help with?

Bug report

Installation method

Unity Asset Store

Issue area

Voice Interaction / Microphone

Impact

Blocker - I cannot continue

Unity version

6000.0.80f1

Convai Unity SDK version

4.1.0

Character ID

07f6f630-875b-11f1-8ccf-42010a7be02f

Target platform

XR / AR / MR

Build settings

Quest 3s

Where does it happen?

Both sample and custom scene

Short summary

Microphone silently fails to capture on Meta Quest 3 standalone builds only — works fine in Editor and via Air Link.

What happened?

Character connects successfully and the mic track publishes without error, but no speech transcript is ever produced and the character never responds to voice — only to typed text. The character’s own reply audio (character → user) works correctly; only user microphone capture is affected. Confirmed via adb logcat:

Error from HAL stream in function set_microphone_direction: Function not implemented
Error from HAL stream in function set_microphone_field_dimension: Function not implemented
[Info][SDK]: [AudioTrackManager] Microphone published successfully
[LiveKit] Android microphone started silently with AEC enabled. Restarting capture once.

No transcript or STT event follows this line.

What did you expect?

Speech to be captured and transcribed on standalone Quest 3 builds the same as it is in Editor/Air Link. Is there a confirmed working combination of unity version, convai plugin, meta xr plugin etc that actually works with MR/VR?

Steps to reproduce

  1. Build a Convai character scene (sample or custom) for Android/Meta Quest, URP.
  2. Deploy standalone APK to Meta Quest 3 (not Air Link).
  3. Launch app, wait for character to connect (“character ready” received).
  4. Speak clearly to the character.
  5. Observe: no transcript appears, character stays idle; typing text to the same character works and produces a spoken reply correctly.

Already ruled out: RECORD_AUDIO permission (confirmed granted, both via device Settings and runtime Permission.HasUserAuthorizedPermission), SDK version (4.3.0 and 4.1.0 both affected), Unity version (6000.5.4f1 and 6000.0.72f1 both affected), project/scene setup (reproduces in both an existing and a freshly-built project), missing FFI native libraries (confirmed downloaded for Android target), concurrent mic access from other scripts (disabled, no change). A Convai-free raw UnityEngine.Microphone test on the same headset shows an analogous symptom (GetPosition() freezes, samples stay at 0.0), suggesting a lower-level Android audio HAL issue on Quest 3 rather than something isolated to Convai’s SDK. Related: LiveKit client-sdk-unity GitHub issue #77 reports the identical symptom on Quest 3S

Unity Console errors or build logs

Full adb logcat capture available on request (confirmed containing the above sequence at the point of speaking to the character). Happy to attach the raw file or a minimal repro project.

I checked the relevant documentation, resources, and similar forum posts before posting.

on

I confirm that I did not include API keys, tokens, passwords, secrets, private character data, private conversation logs, or customer data.

on

Could you please share the logs?

Here they are, thanks - let me know if there’s any specific tests i can do

full_log.txt (4.5 MB)

full_log5.txt (1.2 MB)

full_log2.txt (1.5 MB)

full_log4.txt (171.9 KB)

Hi,

Thank you for sharing the logs.

From the logs, we can see that the microphone track is published successfully. However, LiveKit then detects that the Android microphone capture started silently while AEC was enabled and attempts to restart the capture:

Android microphone started silently with AEC enabled. Restarting capture once.

We also see native Android audio-layer errors during this process, including AAudio/PAL errors. This indicates that the microphone track is created successfully, but the device is not providing valid audio samples.

We have tested Meta Quest standalone builds internally, and other users have also confirmed that microphone input is working correctly. Therefore, this may be specific to the SDK version, build configuration, project, or device environment.

Could you please:

  • Update to the latest Convai Unity SDK version.

  • Set Internet Access to Require in Android Player Settings.

  • Create a new Android build and test it on the headset.

  • Capture the complete Logcat output while reproducing the issue.

  • Share the full, unfiltered logs as a single log file.

Thanks for the reply. I’ll try and do that today, I clicked to upgrade to the latest plugin but it frequently hangs on IdleFacialAnimationProfile.asset (this has been trying for 10 hours now) - i will send you logs when I get this working

image

The editor is probably stuck. Please close it, check the editor.log file, and if possible, ask the AI for help.

Hi,

Following your last reply, I attempted to update to Convai SDK 4.4.0 as requested, but I’m unable to complete your requested repro steps because the SDK itself now fails to compile before I can even build.

On Unity 6000.0.72f1, SDK 4.4.0 produces these compile errors:

error CS0246: The type or namespace name ‘EntityId’ could not be found (are you missing a using directive or an assembly reference?) – SDK/Modules/LipSync/Sinks/SkinnedMeshBlendshapeSink.cs(24,34)

error CS0103: The name ‘EntityId’ does not exist in the current context – SamplesShared/Scripts/UI/DynamicContext/DynamicContextDebugPanel.cs(363,53)

error CS1061: ‘ConvaiCharacter’ does not contain a definition for ‘GetEntityId’ and no accessible extension method ‘GetEntityId’ accepting a first argument of type ‘ConvaiCharacter’ could be found – SamplesShared/Scripts/UI/DynamicContext/DynamicContextDebugPanel.cs(363,80)

error CS0103: The name ‘EntityId’ does not exist in the current context – SamplesShared/Scripts/UI/DynamicContext/DynamicContextDebugPanel.cs(366,51)

error CS1061: ‘ConvaiManager’ does not contain a definition for ‘GetEntityId’ and no accessible extension method ‘GetEntityId’ accepting a first argument of type ‘ConvaiManager’ could be found – SamplesShared/Scripts/UI/DynamicContext/DynamicContextDebugPanel.cs(366,76)

This creates a direct contradiction with what I found on SDK 4.1.0: SDK 4.1.0 requires an older Unity Editor API (Object.GetInstanceID()) and fails to compile on Unity 6000.5.4f1 and later, where that API is hard-deprecated. SDK 4.4.0 requires a newer API (EntityId / GetEntityId()) and fails to compile on Unity 6000.0.72f1, where that API doesn’t exist yet. I have not been able to find a single Unity Editor version where both generations of the SDK compile cleanly.

(Separately and likely unrelated: the same log also shows a compile error in com.unity.collections/xxHash3.cs referencing ‘Unsafe’ not existing in the current context — flagging in case it’s relevant, but I suspect it’s downstream noise from the broken compile state above rather than a separate issue.)

Could you confirm the exact minimum (and ideally tested/certified) Unity Editor version for SDK 4.4.0? And separately — since I still need to complete the Internet Access / logcat repro steps you asked for — would you prefer I test 4.4.0 on a specific newer Unity version you can confirm works, or should I revert to SDK 4.1.0 on Unity 6000.0.72f1 (where it compiles cleanly) and gather those logs on that combination instead?

Happy to provide the full Editor log or project details if useful.

Thanks

Could you please try updating your Unity version to 6.4?

Hi,

I can confirm this now works with Convai 4.4, Unity 6.4 once internet access is changed from auto to require

Thanks for your help!