Roblox 的模組化音頻物件允許您在體驗中對聲音和語音聊天進行動態控制。幾乎每個音頻物件都對應於現實世界的音頻設備,它們共同運作以捕捉和播放音頻,就像它們的物理對應物一樣。
例如,每個音頻物件概念上都可以分為以下幾類:
- 產生音頻流的物件,例如音頻播放器。
- 消耗音頻流的物件,例如音頻發射器。
- 修改音頻流的物件,例如音頻效果。
- 傳遞音頻流從一個音頻物件到另一個的物件,例如電線。
當您閱讀本指南並了解這些音頻物件如何協同工作以發出聲音時,您將學會如何準確捕捉並將音樂、音效和人聲從體驗傳遞給玩家,反之亦然。
播放音頻
要在您的體驗中播放音頻,了解每個可用音頻物件的角色非常重要:
- AudioPlayer 使用設置的音頻資產 ID 加載並播放 音頻文件。
- AudioEmitter 是一個 虛擬揚聲器,在 3D 環境中發出音頻。
- AudioListener 是一個 虛擬麥克風,從 3D 環境中接收音頻。
- AudioDeviceOutput 是一個 現實世界中的硬體設備,例如揚聲器或耳機。
- AudioDeviceInput 是一個 現實世界中的麥克風。
- AudioTextToSpeech 物件使用人工人聲將 文本轉換為音頻。
- AudioSpeechToText 物件將 口語音頻轉換為文本。
- Wire 傳遞音頻流從一個音頻物件到另一個。
您如何將這些音頻物件配對取決於您是否希望將音頻直接發送到玩家的揚聲器或耳機,或從 3D 空間中的物件發出。以下部分詳細說明了這兩種情況。
2D 音頻
2D 音頻 是非定向聲音,從沒有特定位置播放,無論玩家在 3D 空間中的位置或方向如何,音量保持不變。這種類型的音頻需要三個音頻物件:
- 一個音頻播放器來產生音頻流。
- 一個物理硬體設備來在現實世界中播放音頻流。
- 一根電線來將音頻流從音頻播放器傳遞到輸出設備。
為了演示如何在 Studio 中配置這些音頻物件以實現 2D 音頻,以下圖表將每個物件與其現實世界音頻設備的對應物進行比較。總結如下:
- AudioPlayer 加載並播放您的音頻資產,並使用指定的設置。
- AudioDeviceOutput 允許玩家通過其揚聲器或耳機聽到音頻。

要播放非定向音頻:
- 在 Explorer 窗口中,轉到 SoundService 並插入以下內容:
- 一個 AudioPlayer 物件以創建音頻源。
- 一個 AudioDeviceOutput 物件以創建一個在整個體驗中播放的揚聲器。
- 一個 Wire 物件以連接音頻播放器到揚聲器的流。
- 在 AudioPlayer 物件的 Properties 窗口中:
- 將 AssetID 設置為有效的音頻資產 ID。如果您沒有自己的自定義音頻,可以在創作者商店中找到可免費使用的音頻資產。
- 如果您希望音頻不斷重複,請啟用 Looping。
- 將 Volume 設置為您希望播放音頻的振幅單位。
- 在 Wire 物件的 Properties 窗口中:
- 將 SourceInstance 設置為 AudioPlayer,以指定您希望在此特定音頻播放器中播放音頻。
- 將 TargetInstance 設置為 AudioDeviceOutput,以指定您希望從此特定揚聲器播放音頻。
從這裡,您可以使用腳本觸發您的非定向音頻,以便在玩家加入體驗時播放,或作為遊戲事件或 UI 互動的結果。關於這些用例的代碼示例參考,請參見 添加 2D 音頻 教程。
3D 音頻
3D 音頻 是定向聲音,從 3D 空間中的特定位置播放,根據玩家與聲音之間的距離和方向,音量會增加或減少。這種類型的音頻需要六個音頻物件:
- 一個音頻播放器來產生音頻流。
- 一個音頻發射器在環境中發出音頻流。
- 一個聽者從環境中接收音頻流。
- 一個物理硬體設備在現實世界中播放音頻流。
- 兩根電線:一根將音頻流從音頻播放器傳遞到發射器,另一根將其從聽者傳遞到輸出設備。
為了演示如何在 Studio 中配置這些音頻物件以實現 3D 音頻,以下圖表將每個物件與其現實世界音頻設備的對應物進行比較。總結如下:
- AudioPlayer 加載並播放您的音頻資產,並使用指定的設置。
- AudioEmitter 的父級位置在 3D 空間中決定該音頻在環境中發出的地方。
- AudioListener 根據您設置的默認聽者位置,從本地相機或玩家角色的 Humanoid.RootPart 中接收來自發射器的音頻。
- AudioDeviceOutput 允許玩家通過其揚聲器或耳機聽到音頻。

要播放位置音頻:
選擇您希望在玩家進入體驗時創建 AudioListener 的位置。
- 在 Explorer 窗口中,選擇 SoundService。
- 在 Properties 窗口中,將 ListenerLocation 設置為以下之一:
- Default - 在啟用語音聊天的體驗中創建並將聽者父級設置為 Workspace.CurrentCamera。
- None - 不創建聽者。如果您希望通過腳本創建聽者,這個選項很有用。
- Character - 創建並將聽者父級設置為本地玩家的角色。
- Camera - 創建並將聽者父級設置為 Workspace.CurrentCamera。
在 Explorer 窗口中,轉到您希望發出音頻的 3D 物件並插入以下內容:
- 一個 AudioPlayer 物件以創建音頻源。
- 一個 AudioEmitter 物件以從 3D 物件發出位置流。
- 一個 Wire 物件以連接音頻生成器到音頻發射器的流。
在 AudioPlayer 物件的 Properties 窗口中:
- 將 AssetID 設置為有效的音頻資產 ID。如果您沒有自己的自定義音頻,可以在創作者商店中找到可免費使用的音頻資產。
- 如果您希望音頻不斷重複,請啟用 Looping。
- 將 Volume 設置為您希望播放音頻的振幅單位。
在 AudioEmitter 物件的 Properties 窗口中,將 DistanceAttenuation 設置為一個音量隨距離變化的曲線,該曲線決定聽者根據他們之間的距離聽到發射器的音量。
例如,以下曲線在聽者距離發射器 50 studs 時將音頻的音量減半,然後在聽者距離發射器 70 studs 時急劇減少音量至零。

在 Wire 物件的 Properties 窗口中:
- 將 SourceInstance 設置為 AudioPlayer,以指定您希望在此特定音頻播放器中播放音頻。
- 將 TargetInstance 設置為 AudioEmitter,以指定您希望從此特定音頻發射器播放音頻。
從這裡,您可以使用腳本觸發您的定向音頻,以便在玩家加入體驗時播放,或作為遊戲事件或 UI 互動的結果。關於這些用例的代碼示例參考,請參見 添加 3D 音頻 教程。
文本轉語音
文本轉語音 (TTS) 是一種輔助技術,將文本字符串轉換為語音聲音,使用人工聲音。這種類型的音頻需要五個音頻物件:
- 一個音頻語音生成器來加載並將文本轉換為音頻。
- 一個音頻發射器在環境中發出音頻流。
- 一個聽者從環境中接收音頻流。
- 一個物理硬體設備在現實世界中播放音頻流。
- 對於 2D 音頻 - 一根電線將音頻流從音頻語音生成器傳遞到輸出設備。
- 對於 3D 音頻 - 兩根電線:一根將音頻流從音頻語音生成器傳遞到發射器,另一根將其從聽者傳遞到輸出設備。
您如何配置這些物件取決於您希望創建 2D TTS 音頻還是 3D TTS 音頻。要獲取有關任一過程的更多詳細信息,請在以下選項卡之間單擊。
為了演示如何在 Studio 中配置這些音頻物件以實現 2D TTS 音頻,以下圖表將每個物件與其現實世界音頻設備的對應物進行比較。總結如下:
- AudioTextToSpeech 物件加載並將文本字符串轉換為語音聲音。
- AudioDeviceOutput 允許玩家通過其揚聲器或耳機聽到音頻。
- Wire 通過其 SourceInstance 屬性連接到音頻語音生成器,並通過其 TargetInstance 屬性連接到物理硬體設備。然後,它充當橋樑,將音頻流從音頻語音生成器傳遞到玩家的輸出設備。

要播放 2D 文本轉語音音頻:
- 在 Explorer 窗口中,轉到 SoundService 並插入以下內容:
- 一個 AudioTextToSpeech 物件以創建音頻語音生成器。
- 一個 AudioDeviceOutput 物件以創建一個在整個體驗中播放的揚聲器。
- 一個 Wire 物件以連接音頻語音生成器到揚聲器的流。
- 在 AudioTextToSpeech 物件的 Properties 窗口中:
- 將 Text 設置為您希望語音說的任何內容。每次請求的字符限制為 300 個字符。
- 將 VoiceId 設置為您希望使用的人工聲音的編號。要查看可用聲音的完整列表,請參見 人工聲音列表。
- 將 Volume 設置為您希望播放音頻的振幅單位。
- 在 Wire 物件的 Properties 窗口中:
- 將 SourceInstance 設置為 AudioTextToSpeech,以指定您希望在此特定音頻語音生成器中播放音頻。
- 將 TargetInstance 設置為 AudioDeviceOutput,以指定您希望從此特定揚聲器播放音頻。
從這裡,您可以使用腳本觸發您的 TTS 音頻。關於 TTS 音頻的代碼示例參考,包括如何配置上下文感知的 TTS,根據玩家、他們的環境狀態或遊戲狀態進行調整,請參見 添加文本轉語音 教程。
人工聲音列表
| 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 | 法國女性 | |
| 501 | 中文(普通話)男性 | |
| 502 | 中文(普通話)女性 | |
| 601 | 印地語男性 | |
| 602 | 印地語女性 | |
| 701 | 日語男性 | |
| 702 | 日語女性 | |
| 801 | 阿拉伯男性 | |
| 802 | 阿拉伯女性 | |
| 901 | 韓國男性 | |
| 902 | 韓國女性 | |
| 1001 | 葡萄牙男性 | |
| 1002 | 葡萄牙女性 |
語音轉文本
語音轉文本 (STT) 是一種技術,能自動從語音聲音生成文本字符串。這種類型的音頻需要三個音頻物件:
- 一個文本生成器來加載並將音頻轉換為文本。
- 一個物理硬體設備,如麥克風,用於捕捉音頻輸入。
- 一根電線將音頻流從輸入設備傳遞到文本生成器。
所有這些音頻物件共同工作,以生成 STT 文本以響應玩家的行動。例如,如果玩家在使用筆記本電腦玩體驗時佩戴耳機:
- AudioDeviceInput 捕捉玩家的語音,通過他們的麥克風作為音頻流。
- AudioSpeechToText 將玩家的語音轉換為文本。
- 體驗讀取這段文本並執行某個動作,例如在屏幕上顯示所說的文本或在玩家的命令下打開一扇門。

要在您的體驗中實現語音轉文本:
- 啟用最新的語音 API。
- 在 Explorer 窗口中,選擇 VoiceChatService。
- 在 Properties 窗口中,將 UseAudioApi 設置為 Enabled。
- 在 Explorer 窗口中,轉到 SoundService 並插入以下內容:
- 一個 AudioDeviceInput 用於捕捉語音。
- 一個 AudioSpeechToText 用於將語音轉換為文本。
- 一根 Wire 用於將流從音頻設備輸入傳遞到 STT 實例。
- 在 AudioSpeechToText 物件的 Properties 窗口中,將 Enabled 狀態設置為開啟。
- 在 Wire 物件的 Properties 窗口中:
- 將 SourceInstance 設置為您的新 AudioDeviceInput,以指定您希望電線從此特定音頻實例傳遞音頻。
- 將 TargetInstance 設置為您的新 AudioSpeechToText,以指定您希望電線將音頻傳遞到此特定音頻實例。
- 在運行時將音頻設備輸入的 Player 屬性設置為本地玩家,使用 audioDeviceInput.Player = game.Players.LocalPlayer。這告訴 Roblox 從哪個用戶的麥克風捕捉音頻。
在您的體驗中設置 STT 後,您可以使用腳本觸發它。關於語音轉文本的代碼示例參考,請參見 添加語音轉文本 教程。
支援的語言
不需要配置來啟用支援的語言。Roblox 自動檢測音頻中的語言並進行轉錄。
STT 支援以下語言:
- 阿拉伯語
- 中文(簡體)
- 中文(繁體)
- 英語
- 法語
- 德語
- 印尼語
- 意大利語
- 日語
- 韓語
- 波蘭語
- 葡萄牙語
- 西班牙語
- 俄語
- 土耳其語
- 泰語
- 越南語
過濾相似單詞
當您在體驗中實現 STT 時,您可能希望通過過濾聽起來與您實際希望玩家說的單詞相似的單詞來提高匹配準確性。為此,您可以將 AudioSpeechToText 認識的單詞與已知單詞列表進行比較:
- 清理並標記 AudioSpeechToText 的 Text 輸出,以創建一個可以解析和比較的小寫字符串表。
- 刪除標點符號。
- 將整個字符串轉換為小寫。
- 按空格拆分字符串以生成單詞表。
- 生成候選表以準備您的字符串進行比較。
- 清理並標記每個參考字符串。
- 將這些處理過的單詞存儲在單獨的表中。
- 比較並匹配兩個表中的單詞,以識別接近您目標短語的語音輸入,即使它們包含小的變化。
- 對於簡單檢查,檢查字符串是否完全相同。
- 對於更靈活的匹配,您可以編寫自定義邏輯以接受替代(例如 "colour" 而不是 "color")或匹配一部分單詞並計算相似度分數。
自定義音頻
音頻效果允許您在音頻流到達玩家耳朵之前以非破壞性方式修改或增強音頻流。您可以應用這些效果,使您的音頻在體驗中更具沉浸感,例如使用 AudioEqualizer 物件使雨聲聽起來模糊,使用 AudioCompressor 物件控制聲音的最大音量,或使用 AudioReverb 在室內空間中添加更真實的聲音反射。
有關如何配置音頻效果的說明,以及自定義音頻前後的並排比較,請參見 音頻效果。


觸發音頻
您可以通過在正確連接的 AudioPlayer 物件上調用 Play() 來從腳本上下文中觸發音頻。例如,如果您將腳本作為音頻播放器的子項,您可以通過以下方式觸發音頻資產:
local audio = script.Parent
local something = ...
something.SomeEvent:Connect(function()
audio:Play()
end)有關觸發音頻的更複雜代碼示例,例如用於遊戲反饋、UI 互動和循環背景噪音,請參見 添加 2D 音頻、添加 3D 音頻 和 添加文本轉語音 教程。