roblox-audio について
モジュール式 Audio API と従来の Sound オブジェクトを扱う、Roblox クリエイター向けの音声開発スキルです。2D・3D 再生、ルーティング、音響シミュレーション、エフェクト、音声処理、アセット権限を解説します。
主な機能
- 01Audio API と従来の Sound の利用方法
- 022D 再生と空間 3D 再生
- 03音声ルーティングとエフェクト
- 04音響シミュレーションの設定
- 05音声合成と音声文字起こし
- 06音声アセットの権限と再生範囲
活用シーン
- 01音楽や UI 効果音の再生
- 02空間アンビエンスと音響効果の追加
- 03エフェクトを使ったボイスチャット処理
- 04ローカライズされた音声テキストの作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ el4cteo/ roblox-skills --skill roblox-audioインストール後、Claude Code で/roblox-audioを入力して読み込まれたか確認します。
詳細
Roblox audio
2 つのシステムが共存しています。
- Audio API(モジュール式の現行システム):
AudioPlayer→Wire→(AudioEmitter…AudioListener)→Wire→AudioDeviceOutput。チェーンにはエフェクトオブジェクトを挿入できます。ボイスチャット処理、 ミキシンググラフ、アナライザー、テキスト読み上げ/音声テキスト変換に必要です。 Sound(従来型で、引き続きサポートされています):オブジェクトを 1 つ用意し、3D 音声ではパーツに、2D 音声ではSoundService/UI に親として設定します。SoundGroupを経由し、子として設定したSoundEffectを使います。シンプルなゲームや既存のコードに適しています。
同じ機能で両方を混在させず、プロジェクトで使われている方式に従ってください。
Audio API を使った 2D 音声(音楽、UI)
--!strict
-- Client: build a music player once.
local SoundService = game:GetService("SoundService")
local player = Instance.new("AudioPlayer")
player.Name = "Music"
player.Asset = "rbxassetid://1843463175" -- AudioPlayer.AssetId is deprecated; use Asset
player.Looping = true
player.Volume = 0.5
player.Parent = SoundService
local fader = Instance.new("AudioFader") -- one place to control music volume (settings menu)
fader.Name = "MusicVolume"
fader.Parent = SoundService
local output = Instance.new("AudioDeviceOutput")
output.Parent = SoundService
local function wire(source: Instance, target: Instance)
local w = Instance.new("Wire")
w.SourceInstance = source
w.TargetInstance = target
w.Parent = target
end
wire(player, fader)
wire(fader, output)
player:Play()
Audio API を使った 3D 音声
- 音源のパーツ/アタッチメントに
AudioEmitterを配置し、AudioPlayer → AudioEmitterをワイヤーで接続します。 - リスニング:
SoundService.ListenerLocationでデフォルトのAudioListener(カメラまたはキャラクター)を制御します。AudioListener → AudioDeviceOutputをワイヤーで接続します(デフォルトのセットアップでは自動で行われます)。 - 距離減衰と指向性はエミッター/リスナーで設定します(
AudioEmitter:SetDistanceAttenuation、 エミッターとリスナーのAudioInteractionGroup文字列プロパティで、音が聞こえる範囲を制御します)。 - 音響シミュレーション(完全リリース済み。Audio API のみ対応し、
Soundはまだ非対応):(Studio で)SoundService.AcousticSimulationEnabled = trueにすると、3D 音声は壁越しにこもり、角を回り込み、 部屋で残響します。パーツごとにBasePart.AudioCanCollideを設定します(false の場合、音を遮りません)。パーツが厚く密であるほど、音がこもります。エミッター/リスナーごとにAcousticSimulationEnabledを設定します。 キャラクターの音もシミュレートするには、SoundService.CharacterSoundsUseNewApiを設定します。低性能デバイスでは品質が低下します。
従来型 Sound のクイックリファレンス
--!strict
local SoundService = game:GetService("SoundService")
local sfxGroup = Instance.new("SoundGroup")
sfxGroup.Name = "SFX"
sfxGroup.Volume = 0.8
sfxGroup.Parent = SoundService
local function playAt(part: BasePart, soundId: string)
local sound = Instance.new("Sound")
sound.SoundId = soundId
sound.SoundGroup = sfxGroup
sound.RollOffMaxDistance = 80
sound.Parent = part -- 3D: plays from the part; parent to SoundService/UI for 2D
sound:Play()
sound.Ended:Once(function()
sound:Destroy()
end)
end
return playAt
- クライアントだけで再生する UI クリック音には
SoundService:PlayLocalSound(sound)を使います。 - 重要な音声をプリロードします:
ContentProvider:PreloadAsync({ sound })(すべてをプリロードすると、参加に時間がかかります)。 - ショットごとに音声を作成するのではなく、頻繁に再生する音声をプールします。
再生場所
- クライアントで開始した音は、そのクライアントだけに聞こえます(UI、ローカルのフィードバック、プレイヤーが選んだ音楽トラックなど)。サーバーで開始した音は全員にレプリケートされます(使用は控えめにしてください。クライアントにローカル再生を指示するリモートを使うほうが適しています。各クライアントが独自の音量設定を適用できるためです)。
SoundService.RespectFilteringEnabled = true(デフォルト)の場合、クライアントで再生した音はレプリケートされません。- ストリーミング:パーツ内の音声またはエミッターがストリーミング対象外になると、再生が停止します。アンビエント音声は永続モデルまたは
SoundServiceに配置してください。
アセットと権限
- 自分が所有する音声、体験と同じ所有者(ユーザー/グループ)がアップロードした音声、または無料で使用できると表示された Creator Store の音声を使います。他のクリエイターの非公開音声は、体験と共有されていない限り再生されません(アセットの権限を確認してください)。Output で「failed to load」や権限エラーを確認します。
- アップロードした音声は効果音または楽曲として自動分類されます。条件を満たす楽曲はゲームページに表示されます。
その他
- エフェクト:
AudioEqualizer、AudioCompressor、AudioReverb、AudioEcho、AudioChorus、AudioDistortion、AudioFlanger、AudioPitchShifter、AudioTremolo、AudioFilter、AudioLimiter、AudioAnalyzer(ビジュアライザー用に音量/スペクトルを読み取ります)。 AudioTextToSpeech(人工音声)とAudioSpeechToText(文字起こし)。AudioTextToSpeech.AutoLocalize(デフォルトはtrue)はテキストを各プレイヤーの言語(11 言語)に翻訳し、一致する音声を選びます。表記をそのまま維持する必要があるテキスト(名前、掛け声など)では、falseに設定します。アップロード済みの TTS アセットは翻訳されません。- ボイスチャット:各プレイヤーの
AudioDeviceInputをエフェクト(無線、トランシーバー、近接音声など)経由でワイヤー接続できます。ボイスチャットのドキュメントを参照し、プレイヤーの音声設定を尊重してください。 - プレイヤーが音楽/効果音の音量スライダー(フェーダーまたは SoundGroup)とミュートオプションを個別に設定できるようにします。
関連スキル
roblox-ui(設定メニュー)、roblox-architecture(クライアントとサーバー)、roblox-performance(音声メモリ)。
コメント
Markdown 対応