【Roblox】ベータ版のNewAudioAPIで拡声器を作る
はじめに
こんにちは、まつさこ です。
今回は、2024年2月にリリースされた Roblox のベータ版 New Audio API を活用して、拡声器を作成する方法を紹介します。
New Audio API とは
2023年のRDCで発表された、Robloxの新しいオーディオシステムです。従来のSoundオブジェクトを置き換える新しいAPIで、より高品質な音声再生が可能になり、より多くのオーディオエフェクトを利用できるようになりました。
RDC23での発表動画はこちら。
AudioDeviceInput
AudioDeviceOutput
といった音声入力・出力のオブジェクトをプレースに配置し、それらを Wire
で接続することで、プレース内での音声入力表現やスピーカー表現が出来るようになりました。
New Audio API がリリースされた際のDevForum記事はこちら
APIを利用する準備
2024年6月時点で、New Audio API はベータ版として提供されています。ベータ版のAPIを利用するためには、まず Roblox Studio の設定を変更する必要があります。
-
Roblox Studio を開き、左上の
File
メニューからBeta Features
を選択します。
-
Beta Features
ウィンドウが開くので、New Audio API
を有効にします。
Roblox Studio を再起動すると、New Audio API を利用する準備が整います。
また、今回プレイヤーがデバイスのマイクから音声入力を行うため、プレイヤーにマイクの使用許可を求めるための設定も必要です。GameSettings > Communication で Enable Microphone
を有効にしてください。
拡声器を作成する
今回は、プレイヤー自身のみにループバックして聴こえる拡声器を作成します。構成はいたってシンプルです。
Enable Microphone
が有効になっていることで、Player配下に AudioDeviceInput
が自動で配置されます。これを利用して、プレイヤーの音声を拾い、 AudioReverb
を介して音声を響かせ、 AudioDeviceOutput
に出力することで、プレイヤー自身にループバックして聴こえる拡声器を作成します。
まず、workspace内に以下のようにオブジェクトを追加します。
2つのWireはそれぞれ役割が分かるように、 InputToReverb
と ReverbToOutput
と名前をつけておきましょう。
そして、それぞれのWireの SourceInstance
と TargetInstance
を設定します。
-
InputToReverb
のSourceInstance
には、後ほどスクリプトでPlayerのAudioDeviceInput
を設定しするので何も設定しません。TargetInstance
には、AudioReverb
を指定します。
-
ReverbToOutput
のSourceInstance
には、AudioReverb
を指定します。TargetInstance
には、AudioDeviceOutput
を指定します。
次に、ローカルスクリプトを作成します。 StarterPlayerScripts にスクリプトを配置し、以下のように記述します。
local LocalPlayer = game:GetService("Players").LocalPlayer
local AudioDeviceInput = LocalPlayer:FindFirstChild("AudioDeviceInput")
local InputToReverb = workspace:WaitForChild("InputToReverb")
InputToReverb.SourceInstance = AudioDeviceInput
プレイヤーがゲームに参加すると、Player配下に AudioDeviceInput
が配置されるため、それを取得し、 InputToReverb
の SourceInstance
に設定しています。
そして最後に、 VoiceChatService
を追加します。これがないと、プレイヤーの音声が拾えません。
Modelタブの Service から VoiceChatService
を追加します。
そして、 VoiceChatService の UseAudioApi
プロパティを Enabled
に設定します。
これで、実装は完了です。
Roblox Studio で動作確認
Roblx Studio で動作確認をする際は、一つだけ操作が必要です。 Play
ボタンをクリックしてゲームを開始した後、 Explorer ウィンドウ内で Players > 自分のプレイヤー名 > AudioDeviceInput を選択し、 Active
プロパティを true
に設定してください。
こうすることでマイク入力が有効になり、拡声器が動作します。
0.2秒ほど遅れて自身の声が響いて返ってくるのが確認できます!
注意点
Roblox Studioで再生すると、次のようなエラーが出たことがありました。
こちらは、プレースの最大サーバー人数が制限を超えている場合に発生するエラーのようです。公式ドキュメントにもありましたが、ボイスチャットがプレースで有効になるには、プレースの最大人数を50人以内にしないといけないとのことでした。
50人にすることで、上記のエラーは解消されました。
まとめ
今回は、Roblox Studio のベータ版 New Audio API を利用して、プレイヤー自身にループバックして聴こえる拡声器を作成しました。
この仕組みを応用して、トークイベント開催エクスペリエンスを作成しました。
イベントのアーカイブはこちら
ぜひ、New Audio API を活用して、よりリッチな音声体験をつくってみてください!
読んでくださりありがとうございました🤗
Discussion
英語のやり方しかなかったのですごくわかりやすかったです!
質問なんですがこれをみんなに聞こえる拡声器を作るにはどうしたらいいですか?
読んでくださりありがとうございます!
みんなに聴こえる拡声器を作るには、それぞれのプレイヤーが
AudioDeviceOutput
を持っている必要があります。そのうえで、AudioReverb
のTargetInstance
がそのAudioDeviceOutputにつながっている必要があるのですが、ゲーム内にいる全プレイヤーそれぞれのAudioDeviceOutoputと接続するために、人数分のWireが必要になると思われます!