音頻物件

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

Roblox 的模組化音頻物件允許您在體驗中對聲音和語音聊天進行動態控制。幾乎每個音頻物件都對應於現實世界中的音頻設備,它們共同運作以捕獲和播放音頻,就像它們的物理對應物一樣。

例如,每個音頻物件的概念上都可以劃分為以下幾類:

  • 產生音頻串流的物件,例如音頻播放器。
  • 消耗音頻串流的物件,例如音頻發射器。
  • 修改音頻串流的物件,例如音頻特效。
  • 傳遞音頻串流的物件,例如電線,從一個音頻物件到另一個。

在您閱讀本指南並了解這些音頻物件如何共同發出聲音時,您將學會如何準確地捕獲並將音樂、音效和人聲從體驗輸送到玩家,反之亦然。

播放音頻

要在您的體驗中播放音頻,重要的是要了解每個可用音頻物件的角色:

  • AudioPlayer 使用設置的音頻資產 ID 來加載和播放 音頻文件
  • AudioEmitter 是一個 虛擬揚聲器,在三維環境中發出音頻。
  • AudioListener 是一個 虛擬麥克風,從三維環境中接收音頻。
  • AudioDeviceOutput 是現實世界中的 物理硬件設備,例如揚聲器或耳機。
  • AudioDeviceInput 是現實世界中的 物理麥克風
  • AudioTextToSpeech 物件使用人工人聲將 文字轉換為音頻
  • AudioSpeechToText 物件將 口語音頻轉換為文字
  • Wire 傳遞音頻串流,從一個音頻物件到另一個。

如何將這些音頻物件配對取決於您是否希望將音頻直接發送到玩家的揚聲器或耳機,還是從三維空間中的物件發送。下一部分詳細說明了這兩種情況。

2D音頻

2D音頻 是非定向聲音,從無特定位置播放,無論玩家在三維空間中的位置或方向如何,音量保持不變。這種類型的音頻需要三個音頻物件:

  • 一個用於產生音頻串流的音頻播放器。
  • 一個用於在現實世界播放音頻串流的物理硬件設備。
  • 一根用於從音頻播放器連接到輸出設備的電線。

為了展示如何在 Studio 中配置這些音頻物件以實現 2D 音頻,以下圖解將每個物件與其現實世界音頻設備的對應物進行比較。總結來說:

  • AudioPlayer 加載並播放您的音頻資產,並運用特定的設置。
  • AudioDeviceOutput 使玩家能夠通過其揚聲器或耳機聽到音頻。
  • Wire 與音頻播放器的 SourceInstance 屬性連接,並與物理硬件設備的 TargetInstance 屬性連接。然後它充當橋接,將音頻串流從音頻播放器傳遞到玩家的輸出設備。

要播放非定向音頻:

  1. Explorer 視窗中,前往 SoundService,並插入以下內容:
    1. 一個 AudioPlayer 物件以創建音頻來源。
    2. 一個 AudioDeviceOutput 物件以創建在整個體驗中播放的揚聲器。
    3. 一個 Wire 物件以連接音頻播放器與揚聲器之間的串流。
  2. AudioPlayer 物件的 Properties 視窗中:
    1. AssetID 設置為有效音頻資產 ID。如果您沒有自己的自定義音頻,可以在 Creator Store 中找到可免費使用的音頻資產。
    2. 如果您希望音頻不斷重複,則啟用 Looping
    3. Volume 設置為您希望播放的音頻的振幅單位。
  3. Wire 物件的 Properties 視窗中:
    1. SourceInstance 設置為 AudioPlayer,以指定要在此特定音頻播放器中播放音頻。
    2. TargetInstance 設置為 AudioDeviceOutput,以指定要從此特定揚聲器播放音頻。

從這裡,您可以使用腳本觸發您的非定向音頻,以便在玩家加入體驗時播放,或作為遊戲事件或 UI 交互的結果。關於這些使用案例的程式碼範例參考,請參閱 Add 2D audio 教學。

3D音頻

3D音頻 是定向聲音,從三維空間中的特定位置播放,根據玩家與聲音的相對位置和方向,音量會增加或減少。這種類型的音頻需要六個音頻物件:

  • 一個用於產生音頻串流的音頻播放器。
  • 一個用於在環境中發射音頻串流的音頻發射器。
  • 一個用於從環境中接收音頻串流的聽者。
  • 一個用於在現實世界播放音頻串流的物理硬件設備。
  • 兩根電線:一根用於將音頻串流從音頻播放器傳遞到發射器,另一根用於將其從聽者傳送到輸出設備。

為了展示如何在 Studio 中配置這些音頻物件以實現 3D 音頻,以下圖解將每個物件與其現實世界音頻設備的對應物進行比較。總結來說:

  • AudioPlayer 加載並播放您的音頻資產,並運用特定的設置。
  • AudioEmitter 的父級位置在三維空間中決定了音頻在環境中的發射位置。
  • AudioListener 根據您設置的預設聽者位置,從本地相機或玩家角色的 Humanoid.RootPart 接收來自發射器的音頻。
  • AudioDeviceOutput 使玩家能夠通過其揚聲器或耳機聽到音頻。
  • 第一根 Wire 與音頻播放器的 SourceInstance 屬性連接,並與發射器的 TargetInstance 屬性連接。然後它充當橋接,將音頻串流從音頻播放器傳遞到發射器。
  • 第二根 Wire 與聽者的 SourceInstance 屬性連接,並與物理硬件設備的 TargetInstance 屬性連接。然後它充當橋接,將音頻串流從聽者傳遞到玩家的輸出設備。

要播放位置音頻:

  1. 選擇您希望在玩家自體驗中生成 AudioListener 的位置。

    1. Explorer 視窗中,選擇 SoundService
    2. Properties 視窗中,將 ListenerLocation 設置為以下選項之一:
      • Default - 創建並將聽者設定為 Workspace.CurrentCamera,適用於啟用語音聊天的體驗。
      • None - 不創建聽者。如果您希望通過腳本創建聽者,則此選項會非常有用。
      • Character - 創建並將聽者設定為當地玩家的角色。
      • Camera - 創建並將聽者設定為 Workspace.CurrentCamera
  2. Explorer 視窗中,前往您要發射音頻的三維物件並插入以下內容:

    1. 一個 AudioPlayer 物件以創建音頻來源。
    2. 一個 AudioEmitter 物件以從三維物件發射位置串流。
    3. 一根 Wire 物件以將音頻串流從音頻發言者連接到音頻發射器。
  3. AudioPlayer 物件的 Properties 視窗中:

    1. AssetID 設置為有效音頻資產 ID。如果您沒有自己的自定義音頻,可以在 Creator Store 中找到可免費使用的音頻資產。
    2. 如果您希望音頻不斷重複,則啟用 Looping
    3. Volume 設置為您希望播放的音頻的振幅單位。
  4. AudioEmitter 物件的 Properties 視窗中,將 DistanceAttenuation 設置為一個隨距離改變音量的曲線,決定聽者根據其距離與發射器之間的音量。

    例如,以下曲線在聽者與發射器相距 50 個 studs 時音量減半,然後當聽者距離發射器 70 個 studs 時,音量急劇減少至零。

  5. Wire 物件的 Properties 視窗中:

    1. SourceInstance 設置為 AudioPlayer,以指定要在此特定音頻播放器中播放音頻。
    2. TargetInstance 設置為 AudioEmitter,以指定要從此特定音頻發射器播放音頻。

從這裡,您可以使用腳本觸發您的定向音頻,以便在玩家加入體驗時播放,或作為遊戲事件或 UI 交互的結果。關於這些使用案例的程式碼範例參考,請參閱 Add 3D audio 教學。

文字轉語音

文字轉語音 (TTS) 是一種輔助技術,將文字字符串轉換為語音聲音,使用人工語音。這種類型的音頻需要五個音頻物件:

  • 一個音頻語音生成器來加載和將文本轉換為音頻。
  • 一個音頻發射器,在環境中發射音頻串流。
  • 一個聽者來接收環境中的音頻串流。
  • 一個在現實世界中播放音頻串流的物理硬件設備。
  • 對於 2D 音頻 - 一根電線用於將音頻串流從音頻語音生成器傳遞到輸出設備。
  • 對於 3D 音頻 - 兩根電線:一根將音頻串流從音頻語音生成器傳遞到發射器,另一根將其從聽者傳遞到輸出設備。

如何配置這些物件取決於您希望創建 2D TTS 音頻還是 3D TTS 音頻。要獲取有關任一過程的更多詳細信息,請點擊以下標籤。

要展示如何在 Studio 中配置這些音頻物件以實現 2D TTS 音頻,以下圖解將每個物件與其現實世界音頻設備的對應物進行比較。總結來說:

  • AudioTextToSpeech 物件加載並將文本字符串轉換為語音聲音。
  • AudioDeviceOutput 使玩家能夠通過其揚聲器或耳機聽到音頻。
  • Wire 與音頻語音生成器的 SourceInstance 屬性連接,並與物理硬件設備的 TargetInstance 屬性連接。然後它充當橋接,將音頻串流從音頻語音生成器傳遞到玩家的輸出設備。

要播放 2D 文字轉語音音頻:

  1. Explorer 視窗中,前往 SoundService,並插入以下內容:
    1. 一個 AudioTextToSpeech 物件以創建音頻語音生成器。
    2. 一個 AudioDeviceOutput 物件以創建在整個體驗中播放的揚聲器。
    3. 一根 Wire 物件以將音頻串流從音頻語音生成器連接到揚聲器。
  2. AudioTextToSpeech 物件的 Properties 視窗中:
    1. Text 設置為您希望語音說的任何內容。每個請求的字元限制為 300 個字符。

    2. VoiceId 設置為 110 之間的數字,具體取決於您希望使用的人工語音,請參見以下表格。

      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法國女性

    3. Volume 設置為您希望播放的音頻的振幅單位。

  3. Wire 物件的 Properties 視窗中:
    1. SourceInstance 設置為 AudioTextToSpeech,以指定要在此特定音頻語音生成器中播放音頻。
    2. TargetInstance 設置為 AudioDeviceOutput,以指定要從此特定揚聲器播放音頻。

從這裡,您可以使用腳本觸發您的TTS音頻。關於TTS音頻的程式碼範例參考,包括如何配置上下文感知的TTS,根據玩家、環境狀態或遊戲狀態進行調整,請參閱 Add text-to-speech 教學。

語音轉文字

語音轉文字 (STT) 是一種技術,能自動從語音聲音生成文字字符串。這種類型的音頻需要三個音頻物件:

  • 一個文本生成器來加載並將音頻轉換為文本。
  • 一個像麥克風這樣的物理硬件設備來捕獲音頻輸入。
  • 一根用於將音頻串流從輸入設備傳遞到文本生成器的電線。

所有這些音頻物件共同作用,以生成 STT 文本以響應玩家操作。例如,如果玩家在使用筆記本電腦玩體驗時佩戴耳機:

要在您的體驗中實現語音轉文字:

  1. 啟用最新的語音 API。
    1. Explorer 視窗中,選擇 VoiceChatService
    2. Properties 視窗中,將 UseAudioApi 設置為 Enabled
  2. Explorer 視窗中,前往 SoundService,並插入以下內容:
    1. 一個 AudioDeviceInput 來捕獲語音。
    2. 一個 AudioSpeechToText 來將語音轉換為文本。
    3. 一根 Wire 來將串流從音頻設備輸入傳遞到 STT 實例。
  3. AudioSpeechToText 物件的 Properties 視窗中,將 Enabled 狀態設置為開啟。
  4. Wire 物件的 Properties 視窗中:
    1. SourceInstance 設置為您的新 AudioDeviceInput,以指定要讓電線從此特定音頻實例攜帶音頻。
    2. TargetInstance 設置為您的新 AudioSpeechToText,以指定要將音頻攜帶到此特定音頻實例。
  5. 使用 audioDeviceInput.Player = game.Players.LocalPlayer 在運行時將音頻設備輸入的 Player 屬性設置為當地玩家。 這告訴 Roblox 要從那位玩家的麥克風捕獲音頻。

設置好 STT 後,您可以使用腳本觸發它。關於程式碼範例的參考,請參閱 Add speech-to-text 教學。

支持的語言

要啟用支持的語言,無需任何配置。Roblox 會自動從音頻中檢測口語語言並進行轉錄。

STT 支持以下語言:

  • 阿拉伯語
  • 中文(簡體)
  • 中文(繁體)
  • 英語
  • 法語
  • 德語
  • 印尼語
  • 意大利語
  • 日語
  • 韓語
  • 波蘭語
  • 葡萄牙語
  • 西班牙語
  • 俄語
  • 土耳其語
  • 泰語
  • 越南語
不同的相似詞過濾

在您的體驗中實施 STT 時,您可能希望通過過濾出聽起來類似於您實際希望玩家說的詞來提高匹配的準確性。為此,您可以將 AudioSpeechToText 認識到的單詞與已知的單詞列進行比較:

  1. 清理並標記 AudioSpeechToTextText 輸出,以創建可解析和比較的小寫字符串表。
    1. 刪除標點符號。
    2. 將整個字符串轉換為小寫。
    3. 根據空白字符劃分字符串,以產生單詞表。
  2. 生成候選表,以準備您的字符串進行比較。
    1. 清理和標記每個參考字符串。
    2. 將這些處理後的單詞存儲在單獨的表中。
  3. 比較和匹配兩個表中的單詞,以辨識接近您目標短語的語音輸入,即使它們包含小的變體。
    • 對於簡單檢查,檢查字符串是否完全相同。
    • 對於更靈活的匹配,您可以編寫自定義邏輯來接受替代詞(例如「colour」而不是「color」)或匹配部分單詞並計算相似度分數。

自定義音頻

音頻效果允許您在音頻到達玩家耳朵之前非破壞性地修改或增強音頻串流。您可以應用這些效果,使您的音頻在體驗中更具沉浸感,例如使用 AudioEqualizer 物件使雨聲聽起來模糊,使用 AudioCompressor 物件控制聲音的最大音量,或使用 AudioReverb 在室內空間中增加更真實的聲音反射。

有關如何配置音頻效果的操作說明,以及自定義音頻前後的並排比較,請參見 音頻效果

觸發音頻

您可以通過調用正確連接的 AudioPlayer 物件上的 Play() 來從腳本上下文觸發音頻。例如,如果您將腳本放置到音頻播放器下,您可以通過以下內容觸發音頻資產:


local audio = script.Parent
local something = ...
something.SomeEvent:Connect(function()
audio:Play()
end)

有關觸發音頻的更複雜程式碼範例,例如針對遊戲反饋、UI 交互和循環背景噪音,請參見 Add 2D audioAdd 3D audioAdd text-to-speech 教學。

©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。