🐙

Vivoxを使ったUnityゲームでの音声チャット実装メモ

2024/08/20に公開

概要

Vivoxとは、ゲーム内でVoiceChatを実現するためのサービスです。
あまり記事にすることでもないですが、ここにメモとして残しておきます。

初期化

var config = new VivoxConfigurationOptions
{
    DisableAudioDucking = true // 自分が話しているときに他の人の声が小さくなる機能を無効化
};
await VivoxService.Instance.InitializeAsync(config).AsUniTask();

Login・Logout

Login

var option = new LoginOptions
{
    DisplayName = "",
    PlayerId = ""
};
await VivoxService.Instance.LoginAsync(option).AsUniTask();

Logout

await VivoxService.Instance.LogoutAsync().AsUniTask();

Channel入室・退出

Channel入出

Channelに入る際は、Loginしていることが前提

await VivoxService.Instance.JoinGroupChannelAsync("ChannelName", ChatCapability.AudioOnly).AsUniTask();

EchoChannelに入ると、自分の声を確認することができる

await VivoxService.Instance.JoinEchoChannelAsync("ChannelName", ChatCapability.AudioOnly).AsUniTask();

Channel退出

await VivoxService.Instance.LeaveAllChannelsAsync().AsUniTask();

Mute・Unmute方法

// Mute
VivoxService.Instance.MuteInputDevice();

// Unmute
VivoxService.Instance.UnmuteInputDevice();

Callback

Login時やChannel入退室時に、Callbackを設定して、確認が可能である
また、意図しない切断時の処理を行うのにも利用できる

// Login時に呼び出される
VivoxService.Instance.LoggedIn
VivoxService.Instance.LoggedOut
// Channelに入室した際に呼び出される
VivoxService.Instance.ChannelJoined
VivoxService.Instance.ChannelLeft
VivoxService.Instance.ConnectionRecovered
VivoxService.Instance.ConnectionRecovering
VivoxService.Instance.ConnectionFailedToRecover
// Channelに参加者が追加されたときに呼び出される 他の人が入室した際にも呼び出される
VivoxService.Instance.ParticipantAddedToChannel
VivoxService.Instance.ParticipantRemovedFromChannel

参考資料

https://docs.unity.com/ugs/en-us/manual/vivox-unity/manual/Unity/Unity

https://docs.unity3d.com/Packages/com.unity.services.vivox@16.3/manual/index.html

Audio Ducking機能の設定

Audio Duckingとは、自分が話しているときに相手の音声を小さくする機能です。

AudioDuckingの無効化方法

var config = new VivoxConfigurationOptions
{
    DisableAudioDucking = true,
    DynamicVoiceProcessingSwitching = false,
};
await VivoxService.Instance.InitializeAsync(config).AsUniTask();

設定の説明

  • DynamicVoiceProcessingSwitching
    自動的に最適な音声処理方法を選択するかどうか

  • DisableAudioDucking
    自分が話しているときに他の人の声が小さくなる機能を無効化

参考資料

設定

https://docs.unity3d.com/Packages/com.unity.services.vivox@16.3/api/Unity.Services.Vivox.VivoxConfigurationOptions.html

Audio DuckingのTrigger

https://support.unity.com/hc/en-us/articles/4421155396628-Vivox-How-to-Trigger-audio-ducking

Volume設定

https://support.unity.com/hc/en-us/articles/4421200707604-Vivox-Understanding-render-device-speaker-volume-settings

Discussion