【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が必要になると思われます!