mcpField
R
roblox-audio

roblox-audio

github.com/el4cteo開発56506 回インストール2 週間前に更新
リポジトリ

roblox-audio について

モジュール式 Audio API と従来の Sound オブジェクトを扱う、Roblox クリエイター向けの音声開発スキルです。2D・3D 再生、ルーティング、音響シミュレーション、エフェクト、音声処理、アセット権限を解説します。

主な機能

  1. 01Audio API と従来の Sound の利用方法
  2. 022D 再生と空間 3D 再生
  3. 03音声ルーティングとエフェクト
  4. 04音響シミュレーションの設定
  5. 05音声合成と音声文字起こし
  6. 06音声アセットの権限と再生範囲

活用シーン

  1. 01音楽や UI 効果音の再生
  2. 02空間アンビエンスと音響効果の追加
  3. 03エフェクトを使ったボイスチャット処理
  4. 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(音声メモリ)。

コメント