Photon Voice 2: Speaker not linked issue on Oculus Quest

Hey as already reported on multiple discussions (here, here, here and here) by @BFX, @Lassiiter, @Aitor, @SaravanaPerumal and @CompuGeniusPrograms, PUN 2 integration for Photon Voice 2 using Photon Voice 2 does not seem to work properly on Oculus Quest.
So what needs to be checked:
- Oculus OVR "Can Use Microphone": disable exclusive microphone access,
"LocalAvatarWithGrab" or "+LocalAvatar" GameObject -> "Ovr Avatar (Script)" component -> "Can Own Microphone" checkbox, un-check it.
- all PUN clients need to be joined to a PUN room.
- all PUN clients need to be joined to the same PUN room.
- PhotonView attached to the same GameObject as PhotonVoiceView needs to have a valid ViewID > 0 (but should be > MAX_VIEW_ID, so by default, > 1000, otherwise it may be a scene object)
- all Voice clients need to be joined to a voice room.
- all Voice clients need to be joined to the same voice room.
Local prefab only:
Recorder setup (one option at least needs to be chosen in order for the PhotonVoiceView to have a Recorder):
a- PhotonVoiceVIew.UsePrimaryRecorder is true and PhotonVoiceNetwork.PrimaryRecorder is set
b- PhotonVoiceView.RecorderInUse is set in Editor
c- PhotonVoiceView GameObject has a Recorder in the hierarchy
d- PhotonVoiceView.AutoCreateRecorderIfNotFound is true
other checks:
- PhotonVoiceView.RecorderInUse needs to be initialized
- PhotonVoiceView.RecorderInUse needs to be recording
- PhotonVoiceView.RecorderInUse needs to be transmitting
Remote only or DebugEchoMode+SetupDebugSpeaker:
Speaker setup (one option at least needs to be chosen in order for the PhotonVoiceView to have a Speaker):
a- PhotonVoiceView.SpeakerInUse set in Editor
b- PhotonVoiceView GameObject has a Speaker in hierarchy
c- PhotonVoiceNetwork.AutoCreateSpeakerIfNotFound true + PhotonVoiceNetwork.SpeakerPrefab set (has Speaker in hierarchy)
Things to log for debugging:
For testing it would help if VAD is disabled.
Also preferably no AudioSource 3D settings changes.
Increase logging level in Voice components to WARNING at least.
Do this for PhotonVoiceView and PhotonVoiceNetwork at least.
(last resort) To force linking:
maybe call it in a loop/coroutine or bind it to a UI button, etc.
Please test again after importing this unitypackage into Photon Voice 2.16.1 (if you downloaded the patch before and tried it, try again as I updated it today).
So what needs to be checked:
- Oculus OVR "Can Use Microphone": disable exclusive microphone access,
"LocalAvatarWithGrab" or "+LocalAvatar" GameObject -> "Ovr Avatar (Script)" component -> "Can Own Microphone" checkbox, un-check it.
- all PUN clients need to be joined to a PUN room.
- all PUN clients need to be joined to the same PUN room.
- PhotonView attached to the same GameObject as PhotonVoiceView needs to have a valid ViewID > 0 (but should be > MAX_VIEW_ID, so by default, > 1000, otherwise it may be a scene object)
- all Voice clients need to be joined to a voice room.
- all Voice clients need to be joined to the same voice room.
Local prefab only:
Recorder setup (one option at least needs to be chosen in order for the PhotonVoiceView to have a Recorder):
a- PhotonVoiceVIew.UsePrimaryRecorder is true and PhotonVoiceNetwork.PrimaryRecorder is set
b- PhotonVoiceView.RecorderInUse is set in Editor
c- PhotonVoiceView GameObject has a Recorder in the hierarchy
d- PhotonVoiceView.AutoCreateRecorderIfNotFound is true
other checks:
- PhotonVoiceView.RecorderInUse needs to be initialized
- PhotonVoiceView.RecorderInUse needs to be recording
- PhotonVoiceView.RecorderInUse needs to be transmitting
Remote only or DebugEchoMode+SetupDebugSpeaker:
Speaker setup (one option at least needs to be chosen in order for the PhotonVoiceView to have a Speaker):
a- PhotonVoiceView.SpeakerInUse set in Editor
b- PhotonVoiceView GameObject has a Speaker in hierarchy
c- PhotonVoiceNetwork.AutoCreateSpeakerIfNotFound true + PhotonVoiceNetwork.SpeakerPrefab set (has Speaker in hierarchy)
Things to log for debugging:
PhotonVoiceView.IsPhotonViewReady PhotonVoiceView.IsSetup PhotonVoiceView.IsRecorder // local only PhotonVoiceView.IsRecording // local only PhotonVoiceView.IsSpeaker PhotonVoiceView.IsSpeakerLinked PhotonVoiceView.IsSpeaking
For testing it would help if VAD is disabled.
Also preferably no AudioSource 3D settings changes.
Increase logging level in Voice components to WARNING at least.
Do this for PhotonVoiceView and PhotonVoiceNetwork at least.
(last resort) To force linking:
photonVoiceView.Init();
maybe call it in a loop/coroutine or bind it to a UI button, etc.
Please test again after importing this unitypackage into Photon Voice 2.16.1 (if you downloaded the patch before and tried it, try again as I updated it today).
0
Comments
I'm having this issue so keen to try this fix.
I've cleared the Photon assets from my project. Downloaded latest version of Voice - 2.16.1 from asset store. No errors. When I apply the patch above I get this error:
Assets\Photon\PhotonVoice\Code\PUN\PhotonVoiceView.cs(338,41): error CS1503: Argument 1: cannot convert from 'Photon.Voice.PUN.PhotonVoiceNetwork' to 'Photon.Voice.VoiceClient'
I'm also a bit confused by the fact that in PhotonServerSettings it reports PUN version 2.15. Is that correct? I though PUN had recently been updated to 2.18.1? Or is Voice not compatible with the latest version?
Thanks,
It looks like you use an old Photon Voice version.
Make sure to update Photon Voice 2 properly, sometimes Unity's assets cache mess things up.
You may need to clear asset store cached files locally on your computer first.
Check Photon Voice 2's changelog file at "Assets\Photon\PhotonVoice\changes-voice.txt".
Photon Voice v2.11 (October 11th, 2019) and v2.10 (September 25th, 2019) had PUN 2.15.
- Updated PUN 2 to 2.18.1
- Updated Photon Voice to 2.16.1
- Applied the patch
From a first test using Desktop and Oculus Quest, it seems happening less, but still happening. Hard to identify the exact sequence of connection/disconnection between the users in the room: looks pretty random.When it happens this is the log on the Desktop (VoiceDebug is on the Local Avatar while Remote Voice Debug is on the Remote Avatar)
https://ibb.co/zRfnhGt
https://ibb.co/jMnQYXC
You will probably notice the NullReferenceException, which happens because this line in the VoiceDebug.cs script fails since is NULL:
and this is the log on the Oculus Quest:
LOCAL VOICE DEBUG
05-06 21:02:33.033 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.033 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.033 4734 4751 I Unity :
05-06 21:02:33.033 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.033 4734 4751 I Unity :
05-06 21:02:33.033 4734 4751 I Unity : [Voice Debug] Photon View - View ID:3001
05-06 21:02:33.033 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.033 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.033 4734 4751 I Unity :
05-06 21:02:33.033 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.033 4734 4751 I Unity :
05-06 21:02:33.033 4734 4751 I Unity : [Voice Debug] Photon Voice View - IsSetup:False
05-06 21:02:33.033 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.033 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.033 4734 4751 I Unity :
05-06 21:02:33.033 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.033 4734 4751 I Unity :
05-06 21:02:33.033 4734 4751 I Unity : [Voice Debug] Photon Voice View - IsRecorder:True
05-06 21:02:33.033 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.033 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.033 4734 4751 I Unity :
05-06 21:02:33.033 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.033 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : [Voice Debug] Photon Voice View - IsSpeaker:False
05-06 21:02:33.034 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.034 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.RecorderInUse.IsRecording:True
05-06 21:02:33.034 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.034 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.RecorderInUse.TransmitEnabled:True
05-06 21:02:33.034 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.034 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : [Voice Debug] Recorder - IsInitialized:True
05-06 21:02:33.034 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.034 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : [Voice Debug] Recorder - IsRecording:True
05-06 21:02:33.034 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.034 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : [Voice Debug] Recorder - TransmitEnabled:True
05-06 21:02:33.034 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.034 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.034 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.034 4734 4751 I Unity :
05-06 21:02:33.035 4734 4751 I Unity : [Voice Debug] Recorder - IsCurrentlyTransmitting:False
05-06 21:02:33.035 4734 4751 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 21:02:33.035 4734 4751 I Unity : VoiceDebug:Update()
05-06 21:02:33.035 4734 4751 I Unity :
05-06 21:02:33.035 4734 4751 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 21:02:33.035 4734 4751 I Unity :
05-06 21:02:33.035 4734 4751 E Unity : NullReferenceException: Object reference not set to an instance of an object.
05-06 21:02:33.035 4734 4751 E Unity : at VoiceDebug.Update () [0x00000] in <00000000000000000000000000000000>:0
05-06 21:02:33.035 4734 4751 E Unity :
05-06 21:02:33.035 4734 4751 E Unity : (Filename: currently not available on il2cpp Line: -1)
05-06 21:02:33.035 4734 4751 E Unity :
For some reason remote voice debug is not printing anything.
The debug script I'm using are
LOCAL AVATAR VOICE DEBUG
{
Recorder recorder;
Speaker speaker;
PhotonVoiceView photonVoiceView;
PhotonView photonView;
// Start is called before the first frame update
void Start()
{
photonVoiceView = GetComponent<PhotonVoiceView>();
//photonVoiceView.Init();
recorder = GetComponent<Recorder>();
speaker = GetComponent<Speaker>();
photonView = GetComponent<PhotonView>();
// if (recorder != null)
// {
// Debug.Log("Reinitialising microphone...");
// recorder.MicrophoneType = Recorder.MicType.Photon;
// recorder.RestartRecording();
// }
}
// Update is called once per frame
void Update()
{
Debug.Log("
LOCAL AVATAR VOICE DEBUG
");
// debug Photon View
if (photonView != null)
{
Debug.Log("[Voice Debug] Photon View - View ID:" + photonView.ViewID);
}
if (photonVoiceView != null)
{
Debug.Log("[Voice Debug] Photon Voice View - IsSetup:" + photonVoiceView.IsSetup);
Debug.Log("[Voice Debug] Photon Voice View - IsRecorder:" + photonVoiceView.IsRecorder);
Debug.Log("[Voice Debug] Photon Voice View - IsSpeaker:" + photonVoiceView.IsSpeaker);
Debug.Log("[Voice Debug] Photon Voice View - photonVoiceView.RecorderInUse.IsRecording:" + photonVoiceView.RecorderInUse.IsRecording);
Debug.Log("[Voice Debug] Photon Voice View - photonVoiceView.RecorderInUse.TransmitEnabled:" + photonVoiceView.RecorderInUse.TransmitEnabled);
}
// debug Recorder status
if (recorder != null)
{
Debug.Log("[Voice Debug] Recorder - IsInitialized:" + recorder.IsInitialized);
Debug.Log("[Voice Debug] Recorder - IsRecording:" + recorder.IsRecording);
Debug.Log("[Voice Debug] Recorder - TransmitEnabled:" + recorder.TransmitEnabled);
Debug.Log("[Voice Debug] Recorder - IsCurrentlyTransmitting:" + recorder.IsCurrentlyTransmitting);
} else {
Debug.Log("Recorder not set!");
}
// debug Speaker status
if (speaker != null)
{
Debug.Log("[Voice Debug] Photon Voice View - IsSpeakerLinked:" + photonVoiceView.SpeakerInUse.IsLinked);
}
// Display available microphones
var enumerator = Recorder.PhotonMicrophoneEnumerator;
if (enumerator.IsSupported)
{
for (int i = 0; i < enumerator.Count; i++)
{
Debug.LogFormat("PhotonMicrophone Index={0} ID={1} Name={2}", i, enumerator.IDAtIndex(i),
enumerator.NameAtIndex(i));
}
}
}
}
REMOTE AVATAR DEBUG
{
Recorder recorder;
Speaker speaker;
PhotonVoiceView photonVoiceView;
PhotonView photonView;
// Start is called before the first frame update
void Start()
{
photonVoiceView = GetComponent<PhotonVoiceView>();
//photonVoiceView.Init();
speaker = GetComponent<Speaker>();
photonView = GetComponent<PhotonView>();
// if (recorder != null)
// {
// Debug.Log("Reinitialising microphone...");
// recorder.MicrophoneType = Recorder.MicType.Photon;
// recorder.RestartRecording();
// }
}
// Update is called once per frame
void Update()
{
Debug.Log("
REMOTE AVATAR VOICE DEBUG
");
// debug Photon View
if (photonView != null)
{
Debug.Log("[Remote Voice Debug] Photon View - View ID:" + photonView.ViewID);
}
if (photonVoiceView != null)
{
Debug.Log("[Remote Voice Debug] Photon Voice View - photonVoiceView.IsSpeaker:" + photonVoiceView.IsSpeaker);
}
// debug Speaker status
if (speaker != null)
{
Debug.Log("[Remote Voice Debug] Photon Voice View - photonVoiceView.SpeakerInUse.IsLinked:" + photonVoiceView.SpeakerInUse.IsLinked);
}
}
}
Should I move everything to the RemoteAvatar prefab? I doubt it is because otherwise how could it work well in the other cases? Why do I need a speaker both in the RemoteAvatar prefab and in the PhotonVoiceNetwork game object?
Do I need to have two speakers in both game objects?
Yes you are right - its still got version 2.10!
Indeed on both logs I could see:
which is produced by that emergency coroutine I've set in the remote prefab:
{
PhotonVoiceView photonVoiceView;
// Start is called before the first frame update
void Start()
{
photonVoiceView = GetComponent<PhotonVoiceView>();
StartCoroutine(InitializeSpeaker());
}
// Update is called once per frame
void Update()
{
}
IEnumerator InitializeSpeaker()
{
yield return new WaitForSeconds(3);
if (photonVoiceView != null) {
if (photonVoiceView.SpeakerInUse.IsLinked == false) {
Debug.Log("[RemoteSpeakerSetup.cs] the speaker is not linked, forcing initialisation");
photonVoiceView.Init();
} else {
Debug.Log("[RemoteSpeakerSetup.cs] the speaker is linked!");
}
} else{
Debug.Log("[RemoteSpeakerSetup.cs] photonVoiceView is NULL");
}
}
}
This stuff is driving us nuts...seriously. Hope you guys find a fix.
PS. For the records, every single variable in your first post has been set, we'll post a new improved log as soon we can reproduce it (this time we disabled the logs by mistake)
WORKING
Scenario: Client 1(Unity Editor) can hear Client 2 (Oculus Quest) and viceversa
Unity editor Logs
https://ibb.co/q7FKNK6
https://ibb.co/km76thB
Oculus Quest logs
VOICE DEBUG FOR OBJECT: LocalAvatar
05-06 22:26:57.317 9175 9191 I Unity : UnityEngine.Logger:LogFormat(LogType, String, Object[])
05-06 22:26:57.317 9175 9191 I Unity : UnityEngine.Debug:LogFormat(String, Object[])
05-06 22:26:57.317 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : [Voice Debug] Photon View - View ID:2001
05-06 22:26:57.317 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.317 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : [Voice Debug] Photon View - photonVoiceView.IsPhotonViewReady:True
05-06 22:26:57.317 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.317 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : [Voice Debug] Photon Voice View - UsePrimaryRecorder:False
05-06 22:26:57.317 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.317 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : [Voice Debug] Photon Voice View - IsSetup:False
05-06 22:26:57.317 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.317 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.317 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.317 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : [Voice Debug] Photon Voice View - IsRecorder:True
05-06 22:26:57.318 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.318 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : [Voice Debug] Photon Voice View - IsSpeaker:False
05-06 22:26:57.318 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.318 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : [Remote Voice Debug] Photon Voice View - photonVoiceView.IsSpeaker:False
05-06 22:26:57.318 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.318 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.SpeakerInUse:
05-06 22:26:57.318 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.318 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.RecorderInUse.IsRecording:True
05-06 22:26:57.318 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.318 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.318 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.318 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.RecorderInUse.TransmitEnabled:True
05-06 22:26:57.319 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.319 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : [Voice Debug] Recorder - IsInitialized:True
05-06 22:26:57.319 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.319 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : [Voice Debug] Recorder - IsRecording:True
05-06 22:26:57.319 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.319 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : [Voice Debug] Recorder - TransmitEnabled:True
05-06 22:26:57.319 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.319 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : [Voice Debug] Recorder - IsCurrentlyTransmitting:False
05-06 22:26:57.319 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.319 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.319 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.319 9175 9191 I Unity :
05-06 22:26:57.320 9175 9191 I Unity :
END VOICE DEBUG
05-06 22:26:57.320 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.320 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.320 9175 9191 I Unity :
05-06 22:26:57.320 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.320 9175 9191 I Unity :
05-06 22:26:57.320 9175 9191 I Unity :
VOICE DEBUG FOR OBJECT: RemoteAvatar(Clone)
05-06 22:26:57.320 9175 9191 I Unity : UnityEngine.Logger:LogFormat(LogType, String, Object[])
05-06 22:26:57.320 9175 9191 I Unity : UnityEngine.Debug:LogFormat(String, Object[])
05-06 22:26:57.320 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.320 9175 9191 I Unity :
05-06 22:26:57.320 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.320 9175 9191 I Unity :
05-06 22:26:57.320 9175 9191 I Unity : [Voice Debug] Photon View - View ID:1001
05-06 22:26:57.320 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.320 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.320 9175 9191 I Unity :
05-06 22:26:57.320 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.320 9175 9191 I Unity :
05-06 22:26:57.320 9175 9191 I Unity : [Voice Debug] Photon View - photonVoiceView.IsPhotonViewReady:True
05-06 22:26:57.320 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.320 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.320 9175 9191 I Unity :
05-06 22:26:57.320 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.320 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : [Voice Debug] Photon Voice View - UsePrimaryRecorder:False
05-06 22:26:57.321 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.321 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : [Voice Debug] Photon Voice View - IsSetup:False
05-06 22:26:57.321 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.321 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : [Voice Debug] Photon Voice View - IsRecorder:False
05-06 22:26:57.321 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.321 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : [Voice Debug] Photon Voice View - IsSpeaker:True
05-06 22:26:57.321 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.321 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : [Remote Voice Debug] Photon Voice View - photonVoiceView.IsSpeaker:True
05-06 22:26:57.321 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.321 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.SpeakerInUse:RemoteAvatar(Clone) (Photon.Voice.Unity.Speaker)
05-06 22:26:57.321 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.321 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.321 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.321 9175 9191 I Unity :
05-06 22:26:57.322 9175 9191 I Unity : [Voice Debug] Photon Voice View - IsSpeakerLinked:True
05-06 22:26:57.322 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.322 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.322 9175 9191 I Unity :
05-06 22:26:57.322 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.322 9175 9191 I Unity :
05-06 22:26:57.322 9175 9191 W Unity : [RemoteAvatar(Clone).PhotonVoiceView] No need to set Recorder as the PhotonView does not belong to local player
05-06 22:26:57.322 9175 9191 W Unity : UnityEngine.Logger:LogFormat(LogType, Object, String, Object[])
05-06 22:26:57.322 9175 9191 W Unity : UnityEngine.Debug:LogWarningFormat(Object, String, Object[])
05-06 22:26:57.322 9175 9191 W Unity : Photon.Voice.PUN.PhotonVoiceView:get_RecorderInUse()
05-06 22:26:57.322 9175 9191 W Unity : VoiceDebug:Update()
05-06 22:26:57.322 9175 9191 W Unity :
05-06 22:26:57.322 9175 9191 W Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.322 9175 9191 W Unity :
05-06 22:26:57.322 9175 9191 I Unity : Recorder not set!
05-06 22:26:57.322 9175 9191 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 22:26:57.322 9175 9191 I Unity : VoiceDebug:Update()
05-06 22:26:57.322 9175 9191 I Unity :
05-06 22:26:57.322 9175 9191 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 22:26:57.322 9175 9191 I Unity :
05-06 22:26:57.322 9175 9191 I Unity :
END VOICE DEBUG
NOT WORKING
Scenario: Client 1(Unity Editor) can hear Client 2 (Oculus Quest) but NOT VICEVERSA
Unity editor Logs
https://ibb.co/Mf7NsFN
https://ibb.co/sCprk9K
Oculus Quest logs
VOICE DEBUG FOR OBJECT: LocalAvatar
05-06 23:08:40.007 13042 13058 I Unity : UnityEngine.Logger:LogFormat(LogType, String, Object[])
05-06 23:08:40.007 13042 13058 I Unity : UnityEngine.Debug:LogFormat(String, Object[])
05-06 23:08:40.007 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.007 13042 13058 I Unity :
05-06 23:08:40.007 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.007 13042 13058 I Unity :
05-06 23:08:40.007 13042 13058 I Unity : [Voice Debug] Photon View - View ID:2001
05-06 23:08:40.007 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.007 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.007 13042 13058 I Unity :
05-06 23:08:40.007 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.007 13042 13058 I Unity :
05-06 23:08:40.007 13042 13058 I Unity : [Voice Debug] Photon View - photonVoiceView.IsPhotonViewReady:True
05-06 23:08:40.007 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.007 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.007 13042 13058 I Unity :
05-06 23:08:40.007 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.007 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : [Voice Debug] Photon Voice View - UsePrimaryRecorder:False
05-06 23:08:40.008 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.008 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : [Voice Debug] Photon Voice View - IsSetup:False
05-06 23:08:40.008 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.008 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : [Voice Debug] Photon Voice View - IsRecorder:True
05-06 23:08:40.008 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.008 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : [Voice Debug] Photon Voice View - IsSpeaker:False
05-06 23:08:40.008 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.008 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : [Remote Voice Debug] Photon Voice View - photonVoiceView.IsSpeaker:False
05-06 23:08:40.008 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.008 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.SpeakerInUse:
05-06 23:08:40.008 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.008 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.008 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.008 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.RecorderInUse.IsRecording:True
05-06 23:08:40.009 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.009 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.RecorderInUse.TransmitEnabled:True
05-06 23:08:40.009 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.009 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : [Voice Debug] Recorder - IsInitialized:True
05-06 23:08:40.009 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.009 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : [Voice Debug] Recorder - IsRecording:True
05-06 23:08:40.009 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.009 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : [Voice Debug] Recorder - TransmitEnabled:True
05-06 23:08:40.009 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.009 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.009 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.009 13042 13058 I Unity :
05-06 23:08:40.010 13042 13058 I Unity : [Voice Debug] Recorder - IsCurrentlyTransmitting:False
05-06 23:08:40.010 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.010 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.010 13042 13058 I Unity :
05-06 23:08:40.010 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.010 13042 13058 I Unity :
05-06 23:08:40.010 13042 13058 I Unity :
END VOICE DEBUG
05-06 23:08:40.010 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.010 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.010 13042 13058 I Unity :
05-06 23:08:40.010 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.010 13042 13058 I Unity :
05-06 23:08:40.010 13042 13058 I Unity :
VOICE DEBUG FOR OBJECT: RemoteAvatar(Clone)
05-06 23:08:40.010 13042 13058 I Unity : UnityEngine.Logger:LogFormat(LogType, String, Object[])
05-06 23:08:40.010 13042 13058 I Unity : UnityEngine.Debug:LogFormat(String, Object[])
05-06 23:08:40.010 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.010 13042 13058 I Unity :
05-06 23:08:40.010 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.010 13042 13058 I Unity :
05-06 23:08:40.010 13042 13058 I Unity : [Voice Debug] Photon View - View ID:1001
05-06 23:08:40.010 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.010 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.010 13042 13058 I Unity :
05-06 23:08:40.010 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.010 13042 13058 I Unity :
05-06 23:08:40.011 13042 13058 I Unity : [Voice Debug] Photon View - photonVoiceView.IsPhotonViewReady:True
05-06 23:08:40.011 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.011 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.011 13042 13058 I Unity :
05-06 23:08:40.011 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.011 13042 13058 I Unity :
05-06 23:08:40.014 13042 13058 I Unity : [Voice Debug] Photon Voice View - UsePrimaryRecorder:False
05-06 23:08:40.014 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.014 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.014 13042 13058 I Unity :
05-06 23:08:40.014 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.014 13042 13058 I Unity :
05-06 23:08:40.014 13042 13058 I Unity : [Voice Debug] Photon Voice View - IsSetup:False
05-06 23:08:40.014 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.014 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.014 13042 13058 I Unity :
05-06 23:08:40.014 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.014 13042 13058 I Unity :
05-06 23:08:40.014 13042 13058 I Unity : [Voice Debug] Photon Voice View - IsRecorder:False
05-06 23:08:40.014 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.014 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.014 13042 13058 I Unity :
05-06 23:08:40.014 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.014 13042 13058 I Unity :
05-06 23:08:40.015 13042 13058 I Unity : [Voice Debug] Photon Voice View - IsSpeaker:True
05-06 23:08:40.015 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.015 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.015 13042 13058 I Unity :
05-06 23:08:40.015 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.015 13042 13058 I Unity :
05-06 23:08:40.015 13042 13058 I Unity : [Remote Voice Debug] Photon Voice View - photonVoiceView.IsSpeaker:True
05-06 23:08:40.015 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.015 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.015 13042 13058 I Unity :
05-06 23:08:40.015 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.015 13042 13058 I Unity :
05-06 23:08:40.015 13042 13058 I Unity : [Voice Debug] Photon Voice View - photonVoiceView.SpeakerInUse:RemoteAvatar(Clone) (Photon.Voice.Unity.Speaker)
05-06 23:08:40.015 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.015 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.015 13042 13058 I Unity :
05-06 23:08:40.015 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.015 13042 13058 I Unity :
05-06 23:08:40.015 13042 13058 I Unity : [Voice Debug] Photon Voice View - IsSpeakerLinked:False
05-06 23:08:40.015 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.015 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.015 13042 13058 I Unity :
05-06 23:08:40.015 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.015 13042 13058 I Unity :
05-06 23:08:40.016 13042 13058 W Unity : [RemoteAvatar(Clone).PhotonVoiceView] No need to set Recorder as the PhotonView does not belong to local player
05-06 23:08:40.016 13042 13058 W Unity : UnityEngine.Logger:LogFormat(LogType, Object, String, Object[])
05-06 23:08:40.016 13042 13058 W Unity : UnityEngine.Debug:LogWarningFormat(Object, String, Object[])
05-06 23:08:40.016 13042 13058 W Unity : Photon.Voice.PUN.PhotonVoiceView:get_RecorderInUse()
05-06 23:08:40.016 13042 13058 W Unity : VoiceDebug:Update()
05-06 23:08:40.016 13042 13058 W Unity :
05-06 23:08:40.016 13042 13058 W Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.016 13042 13058 W Unity :
05-06 23:08:40.016 13042 13058 I Unity : Recorder not set!
05-06 23:08:40.016 13042 13058 I Unity : UnityEngine.Logger:Log(LogType, Object)
05-06 23:08:40.016 13042 13058 I Unity : VoiceDebug:Update()
05-06 23:08:40.016 13042 13058 I Unity :
05-06 23:08:40.016 13042 13058 I Unity : (Filename: ./Runtime/Export/Debug/Debug.bindings.h Line: 35)
05-06 23:08:40.016 13042 13058 I Unity :
05-06 23:08:40.016 13042 13058 I Unity :
END VOICE DEBUG
THE ONLY SOLUTION IS, AS ALWAYS, TO DISCONNECT AND RECONNECT THE CLIENT WHOSE REMOTE AVATAR'S SPEAKER IS NOT LINKED.
Thanks @BFX.
Do you load scenes on join?
Do you have PhotonVoiceNetwork is in the scene, or in a prefab or neither?
PhotonVoiceNetwork has DontDestroyOnLoad enabled?
The disconnect workaround, means, you disconnect or leave room from PUN? or from Voice client?
The avatars are destroyed and re created in this case?
No, in Recorder or Speaker setup you need to choose one option at least to guarantee there is one Recorder for local avatar and one Speaker for remote one.
If someone could send a minimal repro project that would help and make things faster.
For us updating to the latest Voice/PUn and installing the patch has made it work. I didn't try without installing the patch so can't be 100% sure exactly what fixed it.
Thank you!
Yes, we load the scene using:
————————
Each scene (except the initial Lobby) has a gameObject (prefab) in the hierarchy which contains PhotonVoiceNetwork component. DontDestroyOnLoad is FALSE because we don’t need that object when the user disconnects from the room and gets back to the Lobby.
https://ibb.co/W5ZQd0n
We tried removing PhotonVoiceNetwork from that prefab and moving it inside another object in our Lobby (called Services) with DontDestroyOnLoad set to TRUE so it would persist across room.
For now, the error is not happening so IT might be it was one of the causes.
————————
We disconnect using:
Not sure what do you mean by “disconnecting from Voice Client”
————————
Yes, the avatars get destroyed and re-created every time
————————
We removed the prefab speaker in PhotonVoiceNetwork and disabled “Create speaker if not found” as the RemoteAvatar prefab already includes a PhotonVoiceView+Speaker
—————————
Unfortunately, it would be hard due to company IP protection
CURRENT SITUATION: We have tried 5 different scenarios and the error doesn't seem happening: it looks like the patch + moving PhotonVoiceNetwork made the trick for the Desktop<—>Oculus Quest testing HOWEVER we still need to test on 2 Oculus Quest devices so I will update you soon.
Stay tuned!
To be more specific it seems like it's the guest client has a problem with the speaker, while the guest could hear the master client.
For us updating to the latest Voice/PUN and installing the patch has made it work. I didn't try without installing the patch so can't be 100% sure exactly what fixed it.
Thank you!
Try this new patch.
First try the patch w/o any workarounds.
If the issue persists after this, now there is an RPC method, if you can't hear a remote avatar locally call photonVoiceView.CantHearYou() and see the logs for error returned and see if it fixes the issue.
I don't know how to get logs from Unity. The log files stated in the documentation doesn't contain the logs from my run or no logs at all. But I'll try to summarize what I see in the console.
Quest seems a bit slower to connect to the Voice servers than my editor. So when the prefab containing the Voice VIew is instantiated, the Voice connection is only in state 'ConnectingToNameserver'. I get this warning:
This is really the only difference I see between my editor and quest when they connect to each other. But I get the warning every time I connect regardless if the voice from the editor is heard or not by the Quest player.
It's hard to know If I have setup everything as I should. There are a lot of different speaker/recorder combinations you can configure and I have tried a lot of combinations without any success.
Next, I'll will test by separating the Photon View and Voice View from the same prefab since I am getting the feeling that I get some race condition when combining them. Maybe Voice works better if it's more "standalone".
So, my recommendation: Don't use Voice with PUN. It would have saved me hours, if not days, of testing and debugging.
Thank you for choosing Photon!
Interesting, this is new to us.
Are you saying Unity's Microphones.devices is empty or Photon microphones enumerator does not yield any element?
I prefer to discuss this on a separate forum discussion if you agree as it's a bit different from the issue here.
Hi @mabo,
Thank you for choosing Photon!
We will remove that warning, it should not be logged every time.
That is the price we pay when we want to give customers more options and flexibility. But the PUN Voice demo scene is what should be followed:
- PhotonVoiceNetwork in the scene + DontDestroyOnLoad
- one primary Recorder in the scene.
- one PhotonVoiceView + one speaker per prefab.
For more info:
My setup is as the above comment:
I set up a debug field in my Quest and pushed into it (in a Start() function):
mainController.AddStatusMessage("Microphones Detected: " + Microphone.devices.Length);
foreach (var device in Microphone.devices)
{
mainController.AddStatusMessage(" - Microphone Name: " + device.ToString());
}
(mainController has a function "AddStatusMessage()" that accepts a string and adds it to my status field so I can debug while running it on my Quest)
It shows "Microphones Detected: 0"
One other question that may resolve this as not a new Quest update issue: do I need to request permission for the microphone (Android) separately? I'm not doing this, and it only just occurred to me that maybe that's the issue? If the Android device doesn't give my app permission, Unity just wouldn't see any Microphones available?
I'd only assumed the Voice add-on already does something like this - but someone from another forum suggested it may be that my app doesn't have permission to use the Microphone on the Android device (Quest).
If this is the case, do you know if there is a setting I can check in the Unity Build, or is this something I need to do in code to get permission for the Microphone?
Read about it here.
We may add a UtilityScript that does this automatically.
The patch will not be part of Photon Voice as is.
The debug RPC CantHearYou won't be added to the package but you can easily use it by adding it to another script attached to the same GameObject as PhotonVoiceView.
Expect a Photon Voice 2 update very soon.
hmm. is it a timing issue or you do not start recording at all? do you have recorder.AutoStart disabled & you do not call recorder.StartRecording?
and in the other cases what was the issue?
The Recorder is set to AutoStart. I think it probably is a timing issue. I don't call recorder.StartRecording anywhere.
Based on the code in the CantHearYou function I now regularly check whether photonVoiceView.RecorderInUse.IsRecording is true and if not set it to true. Occassionally it switches off again whilst in our app - I am not 100% sure of the cirumstances.
This is the main issue I've had. None of the other fixes seem necessary such as turning off VAD. I once had a problem where none of the CantHearYou fixes worked including Debug Echo and eventually got the 'Should be working message'. Tried restarting the app and still had the problem. However a complete reboot fixed it so it does seem possible the Quest can get in a state where the microphone just doesn't work.
Photon Voice 2.17 is out.
It would be nice to check it out and see if it helps you solve the issue or identify the cause.
I suggest you set LogLevel to WARNING at least if not INFO/ALL for all Voice components (PhotonVoiceNetwork, PhotonVoiceVIew, Speaker, Recorder).
If you load scenes after joining rooms, this could be a cause, try restarting recording.
@gstevenson
here's a CantHearYou script you could use.
EDIT: proper CantHearYou script.
EDIT 2: putting an updated version here:
Have a nice day
Thanks you
I had to make use of PUN again for the voice. (Wanted to get voice indication of my players to work but couldn't find a way to connect the speaker with my remote player prefab instance unless I created the speaker with the remote player.) Saw that 2.17 was out so I tried it again and it seems to be stable now.
Not sure if I implemented my solution differently this time or if the update solved it. But it doesn't matter as long as it works.
A co worker joins the room and has never been able to connect to voice on his headset. I've created scripts to log all the info locally so he can read it off to me and his data always matches mine.
as an aside - IsSpeakerLinked always returns false for me but still works?
Any help or ideas on how to resolve this would be MUCH appreciated!
Thank you for choosing Photon!
You can use the VoiceDebugScript from this post.
Attach it to the same GameObject as PhotonVoiceView.
Call CantHearYou method on the character/avatar that you cannot hear and check the logs.
Also just to make 100% sure I am setting this up right -
Each scene has a voice object in it at start, this is not instantiated or spawned by PUN, its just in the each "map" the user can select.
The Voice object has a Photon Voice Network component, and a Recorder on it. Auto connect and join, auto leave and disconnect are true. Primary recorder is set to the recorder on the same object. Recorder has Transmit enabled and auto start true.
The avatars which are spawned by a PhotonNetwork.Instantiate command when a user joins has a -
PhotonView
Photon Voice View
Voice debug script
A child object of the avatar (the head) has -
Photon View
Audio Source
Speaker
The Photon Voice view on the avatar has the Use Primary recorder set to true and the Speaker In Use is set to the speaker component on the avatar's Head child object.
Is this correct? I based it on the demo example so I assume it is but want to be sure.
Thank you!