Photon Voice 1 is the original and first major version of Photon Voice. It is now replaced by Photon Voice 2 which is refactored and enhanced. We highly recommend starting new projects with Photon Voice 2 and if possible migrating existing ones from Photon Voice 1 to Photon Voice 2. Photon Voice will be maintained for the coming months. We will fix important bugs and support new Unity versions but new features will be added only to Photon Voice 2.

Version History

v1.23 (November 18th, 2019)
CHANGED: PUN updated to 1.101.

v1.22 (August 21st, 2019)
CHANGED: PUN updated to 1.99.
CHANGED: minimal Unity version from 5.6.6f2 to 2017.4.7f1.

v1.21 (June 25th, 2019)
CHANGED: PUN updated to 1.98.
FIXED: PhotonVoiceNetwork.Client.AuthValues will not be overwritten when connecting to self-hosted Photon Server.

v1.20 (May 17th, 2019)
CHANGED: PUN updated to 1.97.

v1.19 (April 30th, 2019)
CHANGED: PUN updated to 1.96.
CHANGED: Speex library and references removed.
FIXED: AudioIn.bundle macOS plugin Import Settings.

v1.18.1 (March 8th, 2019)
FIXED: UWP build support by using proper ping implementation per platform.
FIXED: PS4 build support by removing duplicate file.
FIXED: Self-hosted Photon Server support by properly setting a UserId before connecting.
NOTE: Unity 5.6.6f2 is now the minimum supported Unity version

v1.18 (February 15th, 2019)
CHANGED: PUN updated to 1.94
ADDED: Android 64-bit opus lib (Unity 2017.4+)

CHANGED: PUN updated to 1.93
FIXED: compilation error when building for Android or iPhone

Nintendo Switch support (requires separate add-on)
CHANGED: PUN updated to 1.93v
CHANGED: LoadBalancingApi updated to
FIXED: null reference when trying to set DebugEchoMode of dummy voice
FIXED: sending voice remove event to oneself when in DebugMode

CHANGED: removed all RequestUserAuthorization calls: crashes iOS builds, useful only in WebPlayer which is not supported since Unity 5.4.0
CHANGED: PhotonVoiceRecorder.updateAudioSource renamed to UpdateAudioSource and made public (call it when AudioSourceFactory has changed e.g.), it recreates local voice for any audio source (was Microphone only)
CHANGED: PhotonVoiceCreated receiver parameter updated in DelayProcessor
CHANGED: PhotonVoiceSettings.Encrypt option added to toggle encryption of all voice streams from settings
CHANGED: PhotonVoiceSettings.WorkInOfflineMode option added to allow voice client to connect in PUN offline mode
CHANGED: when connecting to self hosted server PUN's Nickname and UserId are used
CHANGED: updated Standard Assets' CrossPlatformInput inside PhotonVoice to remove warnings from newer Unity versions
CHANGED: updated PUN to 1.91v
CHANGED: PhotonVoiceSpeaker routes audio data to IAudioOut instance instead of AudioStreamPlayer; AudioStreamPlayer implements IAudioOut
ADDED: PS4AudioOut component that implements IAudioOut used in PS4 builds.
NOTE: Audio output on the PS4 is now routed through Sony's native audio output APIs instead of through Unity's audio output APIs, when headphones are connected. This change was necessary to be able to support Sony's requirement that Voice Chat audio output must go to the headphones (when such are connected) even when other audio output goes to the speakers (which is not currently supported by Unity's audio output APIs).
FIXED: VoiceClient.removePlayerVoices iterated local voices channels list instead of remote
MINOR: not used 'encoder' parameter removed from VoiceClient.createLocalVoice (encoder passed implicitly in voiceFactory parameter if required)
CHANGED: VoiceClient.RemoveLocalVoice made public
FIXED: LocalVoiceFramed.PushDataBufferPool.Release always called with 'info' parameter to avoid reusing of buffers of wrong size during pool element size change with Init call (this happens for windows AudioIn native capturer e.g.)
CHANGED: LocalVoice.IsTransmitting set to true if sendFrame was called in PushData or service (for readers) calls instead of checking built-in threshold based voice detector status
ADDED: AudioUtil::ForceToStereo()

CHANGED: PUN updated to 1.90v
FIXED: Photon Voice's "AutoConnect" and "AutoDisconnect" settings ignored when PUN's "OfflineMode" is enabled

CHANGED: UWP build fixes
CHANGED: refactored the PhotonVoiceSpeaker cleanup code to get rid of code redundancies
FIXED: Singleton pattern for PhotonVoiceNetwork and PhotonVoiceSettings
CHANGED: PhotonVoiceRecorder passes IAudioSource along with LocalVoice to PhotonVoiceCreated message
CHANGED: DelayProcessor supports both float and short audio buffers
CHANGED: PUN updated to 1.89v
CHANGED: LoadBalancingApi updated to
MINOR: fixed a typo in a comment inside AudioStreamPlayer::Update()

ADDED: platform plugins (AEC, native microphone input, iOS ForceToSpeaker)
CHANGED: more control over PhotonVoiceRecorder source and frame type
FIXED: threading issue causing access violation in opus_egpb.dll

CHANGED: PUN updated to 1.87
CHANGED: LoadBalancingApi updated to

CHANGED: PUN updated to 1.85
ADDED: missing Windows Store Applications opus files
FIXED: broken demo scenes
ADDED: missing WebSockets PUN plugins folder
REMOVED: extra unused AndroidManifest.xml file
FIXED: duplicate DLLs for Windows Store Applications platform

CHANGED: PUN updated to v1.84.1
FIXED: correct versioning is resumed after the wrong previous version 1.91 which was meant to be 1.9.1.
FIXED: Windows Store Apps target platform and Universal Windows Platform build is working again.
FIXED: high CPU usage issue.
FIXED: PhotonVoiceSettings singleton now allows inactive or non scene instances e.g. attached to prefabs.

FIXED: issue with missing files by renaming compile condition ENABLE_VIDEO to PHOTON_VOICE_VIDEO_ENABLE.
FIXED: issue in PhotonVoiceHandler due to Profiler namespace change in Unity 5.5+.
UPDATED: CrossPlatformInput StandardAsset to remove warnings in latest Unity versions.

CHANGED: PUN updated to v1.84
ADDED: PhotonVoiceHandler to implements a fallback thread that keeps sending ACKs when in background (Android) or keeps service loop when loading scenes.
CHANGED: AudioClipWrapper.cs, AudioStreamPlayer.cs, MicWrapper.cs moved from Assets/PUNVoice/Scripts folder to Assets/Plugins/PhotonVoiceApi/Platforms/Unity
CHANGED: Voice peer sends sudio packets in channel 1 to not interfere with user data being sent in channel 0 by default
CHANGED: encoding and decoding moved to separate threads

CHANGED: PUN updated to v1.79
FIXED: when player left a room, VoiceClient.removePlayerVoices tried to remove player voices from wrong container
FIXED: microphone release in unity apps
FIXED: AudioStreamPlayer: previous buffer tail played back on stream resume
CHANGED: iOS library rebuilt with full bitcode (Archive menu used in xcode)

CHANGED: PUN updated to v1.76
BREAKING: Opus Delay replaced with Photon.Voice.FrameDuration in PhotonVoiceSettings
(If non-default Delay was used, updating new FrameDuration setting required)
CHANGED: AudioStreamPlayer skips empty frames w/o error
ADDED: PhotonVoiceNetwork.Client FramesSent, FramesSentBytes, RoundTripTime, RoundTripTimeVariance properties (rtt calculated only if local voices echoed back)
CHANGED: VoiceClient.UseLossCompensation property removed
FIXED: voice now works on self hosted when PUN is using TCP, different ports per app
FIXED: AudioStreamPlayer: assigning negative values to playSamplePos caused AudioSource position setting error
FIXED: AudioStreamPlayer buffer size set precisely basing on frame size and delay values (+1 sec) or it could be too small for high delays
FIXED: setting PhotonVoiceRecorder.Transmit to PhotonVoiceSettings.AutoTransmit moved to Start() from OnJoinedVoiceRoom() or it's skipped if PhotonVoiceRecorder created after joining a room
CHANGED: PushToTalk demo now exposes change of audio group using binary group chat
  VoiceClient (accessible via PhotonVoiceNetwork.Client):
ADDED: LocalVoice FramesSent, FramesSentBytes
ADDED: VoiceClient FramesSent, FramesSentBytes, RoundTripTime, RoundTripTimeVariance properties (rtt calculated only if local voices echoed back)
CHANGED: memory allocation and buffer copying optimizations
CHANGED: loss compensation is always on (synchronization relies on it)
BREAKING: VoiceClient.UseLossCompensation property removed

CHANGED: updated to PUN 1.75
FIXED: iOS IPv6 support

CHANGED: updated to PUN 1.74
FIXED: Crash of iOS application exported from Unity 5.3.6+ (opus library exposes only interface methods now)
ADDED: Linux support (opus libraries built for Ubuntu Linux added)
CHANGED: automatic PhotonVoiceNetwork singleton creation
CHANGED: LoadBalancingClient and Photon.Voice actions used internally can be safely overridden by user
CHANGED: better error handling when no microphone device found (no multiple errors)
ADDED: Push-To-Talk (PTT) demo scene that exposes toggling voice transmission on demand (button or key binding)

CHANGED: Updated to PUN v1.72
ADDED: ability to switch microphone device while joined to voice room

CHANGED: Updated to PUN v1.69
FIXED: Universal Windows WSA/x64 folder name

ADDED: Universal Windows platform support
FIXED: iOS fat lib missing armv7 component
FIXED: MacOS opus dll import in editor

FIXED: MacOS opus plugin lib at default location is accessible when running in editor and as a standalone app
FIXED: manually created PhotonVoiceNetwork instance got destroyed on scene change leaving PUNVoice w/o singleton (now PhotonVoiceNetwork singleton is created independently of accidentally added in editor PhotonVoiceNetwork instances, non-singleton instances disabled because all methods return immediately)
FIXED: voice != null checks in PhotonVoiceRecorder's Transmit and Detect properties

To Document Top