Roblox のモジュラーオーディオオブジェクトを使用すると、エクスペリエンス内で音声とボイスチャットの動的な制御を行うことができます。ほとんどすべてのオーディオオブジェクトは実世界のオーディオデバイスに対応しており、物理的なデバイスのようにオーディオをキャプチャし再生するために機能します。
たとえば、すべてのオーディオオブジェクトは概念的に次のカテゴリに分類されます。
- オーディオストリームを生成するオブジェクト(オーディオプレーヤーなど)。
- オーディオストリームを消費するオブジェクト(オーディオエミッターなど)。
- オーディオストリームを修正するオブジェクト(オーディオエフェクトなど)。
- 1 つのオーディオオブジェクトから別のオーディオオブジェクトにオーディオストリームを運ぶオブジェクト(ワイヤーなど)。
このガイドを読み進め、これらすべてのオーディオオブジェクトがどのように連携して音を発するかを理解することで、プレイヤーとのエクスペリエンス間で音楽、効果音、人間の声を正確にキャプチャしてフィードする方法を学べます。
オーディオを再生
エクスペリエンス内でオーディオを再生するには、利用可能な各オーディオオブジェクトの役割を理解することが重要です。
- AudioPlayer は、設定されたオーディオアセット ID を使用してオーディオファイルをロードし再生します。
- AudioEmitter は、3D 環境にオーディオを発信する仮想スピーカーです。
- AudioListener は、3D 環境からオーディオを拾う仮想マイクロフォンです。
- AudioDeviceOutput は、スピーカーやヘッドフォンなど、現実世界の物理ハードウェアデバイスです。
- AudioDeviceInput は、現実世界の物理マイクロフォンです。
- AudioTextToSpeech オブジェクトは、人工的な人間の声を使用してテキストをオーディオに変換します。
- AudioSpeechToText オブジェクトは、話された音声をテキストに変換します。
- Wire は、オーディオストリームを別のオーディオオブジェクトに運ぶ役割を果たします。
これらのオーディオオブジェクトをどのように組み合わせるかは、プレイヤーのスピーカーまたはヘッドフォンにオーディオを直接発信したいのか、それとも 3D 空間内のオブジェクトから発信したいのかによって異なります。以下のセクションでは、両方のシナリオについて詳しく説明します。
2D オーディオ
2D オーディオは、特定の位置から再生されない無指向な音であり、プレイヤーの位置や向きに関係なく、同じ音量で再生されます。この種類のオーディオは、次の 3 つのオーディオオブジェクトを必要とします。
- オーディオストリームを生成するオーディオプレーヤー。
- 現実の世界でオーディオストリームを再生するための物理的なハードウェアデバイス。
- オーディオプレーヤーから出力デバイスへオーディオストリームを運ぶワイヤー。
Studio でこれらのオーディオオブジェクトを 2D オーディオ用に構成する方法を示すために、以下の図は各オブジェクトとその現実のオーディオデバイスとの対比を示しています。まとめると:
- AudioPlayer は、指定された設定でオーディオアセットをロードして再生します。
- AudioDeviceOutput によって、プレイヤーは自分のスピーカーやヘッドフォンを介してオーディオを聞くことができます。
- Wire は、オーディオプレーヤーに接続され、その SourceInstance プロパティを持ち、物理的なハードウェアデバイスに接続され、その TargetInstance プロパティを持ちます。これにより、オーディオプレーヤーからプレイヤーの出力デバイスへのオーディオストリームを運ぶ橋として機能します。

無指向オーディオを再生する手順は次のとおりです。
- Explorer ウィンドウで SoundService に移動し、次を挿入します。
- オーディオソースを作成する AudioPlayer オブジェクト。
- エクスペリエンス全体で再生されるスピーカーを作成する AudioDeviceOutput オブジェクト。
- オーディオプレーヤーからスピーカーにストリームを接続する Wire オブジェクト。
- AudioPlayer オブジェクトの Properties ウィンドウで:
- AssetID を有効なオーディオアセット ID に設定します。独自のカスタムオーディオがない場合、Creator Store で利用するための無料オーディオアセットを見つけることができます。
- オーディオを繰り返し再生したい場合は Looping を有効にします。
- オーディオを再生したい音量の振幅単位に Volume を設定します。
- Wire オブジェクトの Properties ウィンドウで:
- SourceInstance を AudioPlayer に設定して、この特定のオーディオプレーヤー内でオーディオを再生したいことを指定します。
- TargetInstance を AudioDeviceOutput に設定して、この特定のスピーカーからオーディオを再生したいことを指定します。
ここから、スクリプトを使用して参加したプレイヤーに対して再生したり、ゲームプレイイベントや UI インタラクションの結果として無指向オーディオをトリガーできます。これらのユースケースに関するコードサンプルの参照については、Add 2D audio チュートリアルを参照してください。
3D オーディオ
3D オーディオは、特定の位置から再生される指向性の音であり、プレイヤーの位置と音に対する向きによって音量が増減します。この種類のオーディオは、次の 6 つのオーディオオブジェクトを必要とします。
- オーディオストリームを生成するオーディオプレーヤー。
- 環境内でオーディオストリームを発信するオーディオエミッター。
- 環境からオーディオストリームを拾うリスナー。
- 現実の世界でオーディオストリームを再生するための物理的なハードウェアデバイス。
- オーディオプレーヤーからエミッターへのオーディオストリームを運ぶための 1 本のワイヤーと、リスナーから出力デバイスへのオーディオストリームを運ぶためのもう 1 本のワイヤー。
Studio でこれらのオーディオオブジェクトを 3D オーディオ用に構成する方法を示すために、以下の図は各オブジェクトとその現実のオーディオデバイスとの対比を示しています。まとめると:
- AudioPlayer は、指定された設定でオーディオアセットをロードし再生します。
- AudioEmitter の親の位置が 3D 空間内でオーディオをどこで発信するかを決定します。
- AudioListener は、ローカルカメラからエミッターのオーディオを拾うか、プレイヤーキャラクターの Humanoid.RootPart 内からオーディオを拾います。これは、デフォルトのリスナー位置をどこに設定するかによって異なります。
- AudioDeviceOutput によって、プレイヤーは自分のスピーカーやヘッドフォンを介してオーディオを聞くことができます。
- 最初の Wire は、オーディオプレーヤーに接続され、その SourceInstance プロパティを持ち、エミッターに接続され、その TargetInstance プロパティを持ちます。これにより、オーディオプレーヤーからエミッターへのオーディオストリームを運ぶ橋として機能します。
- 2 本目の Wire は、リスナーに接続され、その SourceInstance プロパティを持ち、物理的なハードウェアデバイスに接続され、その TargetInstance プロパティを持ちます。これにより、リスナーからプレイヤーの出力デバイスへのオーディオストリームを運ぶ橋として機能します。

ポジショナルオーディオを再生する手順は次のとおりです。
プレイヤーがエクスペリエンスに参加した際に、どこに AudioListener を作成したいのかを選択します。
- Explorer ウィンドウで SoundService を選択します。
- Properties ウィンドウで ListenerLocation を次のいずれかに設定します。
- Default - ボイスチャットを有効にしたエクスペリエンスで、リスナーを Workspace.CurrentCamera に作成し親にします。
- None - リスナーを作成しません。このオプションは、スクリプトを介してリスナーを作成したい場合に便利です。
- Character - ローカルプレイヤーのキャラクターにリスナーを作成し親にします。
- Camera - Workspace.CurrentCamera にリスナーを作成し親にします。
Explorer ウィンドウで、音声を発信したい 3D オブジェクトに移動し、次を挿入します。
- オーディオソースを作成する AudioPlayer オブジェクト。
- 3D オブジェクトからポジショナルストリームを発信する AudioEmitter オブジェクト。
- オーディオプレーヤーからオーディオエミッターへのストリームを接続する Wire オブジェクト。
AudioPlayer オブジェクトの Properties ウィンドウで:
- AssetID を有効なオーディオアセット ID に設定します。独自のカスタムオーディオがない場合、Creator Store で利用するための無料オーディオアセットを見つけることができます。
- オーディオを繰り返し再生したい場合は Looping を有効にします。
- オーディオを再生したい音量の振幅単位に Volume を設定します。
AudioEmitter オブジェクトの Properties ウィンドウで、DistanceAttenuation をリスナーがエミッターを聞く音量を、彼らの間の距離に応じて決定する音量と距離のカーブに設定します。
たとえば、以下のカーブは、リスナーがエミッターから 50 スタッド離れたときにオーディオの音量を 1/2 に減少させ、その後、リスナーが 70 スタッド離れたときに音量をゼロに急激に減少させます。

Wire オブジェクトの Properties ウィンドウで:
- SourceInstance を AudioPlayer に設定して、この特定のオーディオプレーヤー内でオーディオを再生したいことを指定します。
- TargetInstance を AudioEmitter に設定して、この特定のオーディオエミッターからオーディオを再生したいことを指定します。
ここから、スクリプトを使用してプレイヤーが参加した際やゲームプレイイベントや UI インタラクションの結果として、指向性オーディオをトリガーできます。これらのユースケースに関するコードサンプルの参照については、Add 3D audio チュートリアルを参照してください。
テキストトゥスピーチ
テキストトゥスピーチ (TTS) は、テキスト文字列を音声音に変換する支援技術の一種です。この種類のオーディオは、次の 5 つのオーディオオブジェクトを必要とします:
- テキストをオーディオにロードし変換するオーディオスピーチジェネレーター。
- 環境内でオーディオストリームを発信するオーディオエミッター。
- 環境からオーディオストリームを拾うリスナー。
- 現実の世界でオーディオストリームを再生するための物理的なハードウェアデバイス。
- 2D オーディオ用 - オーディオスピーチジェネレーターから出力デバイスへのオーディオストリームを運ぶワイヤー。
- 3D オーディオ用 - オーディオスピーチジェネレーターからエミッターへのオーディオストリームを運ぶワイヤーと、リスナーから出力デバイスへのオーディオストリームを運ぶワイヤーの 2 本。
これらのオブジェクトを構成する方法は、2D TTS オーディオを作成したいのか、3D TTS オーディオを作成したいのかによって異なります。各プロセスの詳細については、次のタブの間をクリックしてください。
Studio で 2D TTS オーディオ用にこれらのオーディオオブジェクトを構成する方法を示すために、以下の図は各オブジェクトとその現実のオーディオデバイスとの対比を示しています。まとめると:
- AudioTextToSpeech オブジェクトは、テキスト文字列を音声音にロードし変換します。
- AudioDeviceOutput によって、プレイヤーは自分のスピーカーやヘッドフォンを介してオーディオを聞くことができます。
- Wire は、オーディオスピーチジェネレーターに接続され、その SourceInstance プロパティを持ち、物理的なハードウェアデバイスに接続され、その TargetInstance プロパティを持ちます。これにより、オーディオスピーチジェネレーターからプレイヤーの出力デバイスへのオーディオストリームを運ぶ橋として機能します。

2D テキストトゥスピーチオーディオを再生する手順は次のとおりです:
- Explorer ウィンドウで SoundService に移動し、次を挿入します:
- オーディオスピーチジェネレーターを作成する AudioTextToSpeech オブジェクト。
- エクスペリエンス全体で再生されるスピーカーを作成する AudioDeviceOutput オブジェクト。
- オーディオスピーチジェネレーターからスピーカーへのストリームを接続する Wire オブジェクト。
- AudioTextToSpeech オブジェクトの Properties ウィンドウで:
Text を、声に言わせたいテキストに設定します。リクエストごとに 300 文字の制限があります。
VoiceId を、テーブルに従って使用する人工の声に応じた 1 から 10 の範囲内の数値に設定します。
人工の声のリストVoiceID 声の説明 オーディオ例 1 イギリス男性 2 イギリス女性 3 アメリカ男性 #1 4 アメリカ女性 #1 5 アメリカ男性 #2 6 アメリカ女性 #2 7 オーストラリア男性 8 オーストラリア女性 9 レトロ音声 #1 10 レトロ音声 #2 11 ホスト音声 101 スペイン男性 102 スペイン女性 201 ドイツ男性 202 ドイツ女性 301 イタリア男性 302 イタリア女性 401 フランス男性 402 フランス女性
Volume を、オーディオを再生したい音量の振幅単位に設定します。
- Wire オブジェクトの Properties ウィンドウで:
- SourceInstance を AudioTextToSpeech に設定して、この特定のオーディオスピーチジェネレーター内でオーディオを再生したいことを指定します。
- TargetInstance を AudioDeviceOutput に設定して、この特定のスピーカーからオーディオを再生したいことを指定します。
ここから、スクリプトを使用して TTS オーディオをトリガーできます。プレイヤーの環境やゲームプレイ状況に応じて適応するコンテクスト対応の TTS を構成する方法を含む TTS オーディオのコードサンプル参照については、Add text-to-speech チュートリアルを参照してください。
音声からテキストへの変換
音声からテキストへの変換 (STT) は、音声音から自動的にテキスト文字列を生成する技術の一種です。この種類のオーディオは、次の 3 つのオーディオオブジェクトを必要とします:
- オーディオを読み込み、テキストに変換するテキストジェネレーター。
- 音声入力をキャプチャするためのマイクロフォンのような物理ハードウェアデバイス。
- 入力デバイスからテキストジェネレーターへのオーディオストリームを運ぶワイヤー。
これらすべてのオーディオオブジェクトが連携して、プレイヤーアクションに応じた STT テキストを生成します。たとえば、プレイヤーがノートパソコンでエクスペリエンスをプレイしているときにヘッドセットを着用している場合:
- AudioDeviceInput は、プレイヤーのマイクロフォンに話しかける音声をキャプチャします。
- AudioSpeechToText は、プレイヤーのスピーチをテキストに変換します。
- エクスペリエンスはこのテキストを読み取り、画面に話されたテキストを表示する、またはプレイヤーのコマンドでドアを開くなどのアクションを実行します。

エクスペリエンスに STT を実装する手順は次のとおりです:
- 最新の音声 API の使用を有効にします。
- Explorer ウィンドウで VoiceChatService を選択します。
- Properties ウィンドウで UseAudioApi を Enabled に設定します。
- Explorer ウィンドウで SoundService に移動し、次を挿入します:
- 音声をキャプチャするための AudioDeviceInput。
- 音声をテキストに変換するための AudioSpeechToText。
- オーディオデバイス入力から STT インスタンスへのストリームを運ぶ Wire。
- AudioSpeechToText オブジェクトの Properties ウィンドウで Enabled をオンにします。
- Wire オブジェクトの Properties ウィンドウで:
- SourceInstance を新しい AudioDeviceInput に設定して、この特定のオーディオインスタンスからオーディオを運ぶことを指定します。
- TargetInstance を新しい AudioSpeechToText に設定して、この特定のオーディオインスタンスに音声を運ぶことを指定します。
- ランタイム中に audioDeviceInput.Player = game.Players.LocalPlayer を使用して、オーディオデバイス入力の Player プロパティをローカルプレイヤーに設定します。これにより、Roblox はどのユーザーのマイクロフォンからオーディオをキャプチャするかを指示します。
エクスペリエンスで STT を設定した後は、スクリプトを使用してトリガーできます。コードサンプルの参照については、Add speech-to-text チュートリアルを参照してください。
サポートされている言語
サポートされている言語を有効にするための構成は必要ありません。Roblox は、音声から話される言語を自動的に検出し、文字起こしを行います。
STT は、次の言語をサポートしています:
- アラビア語
- 中国語 (簡体字)
- 中国語 (繁体字)
- 英語
- フランス語
- ドイツ語
- インドネシア語
- イタリア語
- 日本語
- 韓国語
- ポーランド語
- ポルトガル語
- スペイン語
- ロシア語
- トルコ語
- タイ語
- ベトナム語
類似語のフィルタ
エクスペリエンスで STT を実装するとき、プレイヤーに言わせたい言葉に似た語をフィルタリングすることで一致率を改善したい場合があります。これを行うには、AudioSpeechToText によって認識された語を既知の語のリストと比較できます。
- AudioSpeechToText の Text 出力をサニタイズし、トークン化して、解析し比較可能な小文字の文字列のテーブルを作成します。
- 句読点を削除します。
- 文字列全体を小文字に変換します。
- 文字列をホワイトスペースで分割して、言葉のテーブルを生成します。
- 文字列の比較に備えて候補のテーブルを生成します。
- 各参照文字列をサニタイズしトークン化します。
- これらの処理された単語を別のテーブルに格納します。
- どちらのテーブルの単語を比較し、一致する表現がターゲットのフレーズに近いかを認識します。小さな変動があっても大丈夫です。
- 簡単なチェックでは、文字列が正確に同じであるかどうかをチェックします。
- より柔軟な一致の場合、代替を許可するカスタムロジックを書くことができます(例:「colour」ではなく「color」)や、単語のサブセットを比較して類似度スコアを計算できます。
オーディオのカスタマイズ
オーディオエフェクトを使用すると、プレイヤーの耳に届く前にオーディオストリームを非破壊的に修正または強化することができます。これらの効果を適用することで、エクスペリエンス内でのオーディオをより没入感のあるものにできます。たとえば、AudioEqualizer オブジェクトを使用して雨の音をこもった音にしたり、AudioCompressor オブジェクトを使用して音の最大音量を制御したり、AudioReverb を使用して屋内空間での音のリアルな反響を追加することができます。
オーディオエフェクトの構成方法や、オーディオをカスタマイズする前後の比較を示す手順については、Audio effects を参照してください。


オーディオをトリガー
スクリプトからオーディオをコンテキスト依存でトリガーするには、正しく配線された AudioPlayer オブジェクトの Play() を呼び出します。たとえば、スクリプトをオーディオプレーヤーに親子関係として配置すると、次のようにオーディオアセットをトリガーできます。
local audio = script.Parent
local something = ...
something.SomeEvent:Connect(function()
audio:Play()
end)
ゲームプレイのフィードバック、UI インタラクション、ループするバックグラウンドノイズに関するオーディオをトリガーするためのより複雑なコードサンプルについては、Add 2D audio、Add 3D audio、および Add text-to-speech チュートリアルを参照してください。