立即開始
中級教學

添加語音轉文本

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

語音轉文本 (STT) 是一種技術,能自動將語音聲音生成文本。透過 STT,您可以創造更身臨其境的世界,讓玩家可以與 NPC 對話,無需預先錄製特定音訊即可生成文本,改善對有運動或視覺限制的玩家的可及性,並提供玩家透過語音快捷鍵進行無需雙手操作的控制,例如打開他們的物品欄或施法。

使用 Gingerbread House - Start .rbxl 文件作為起點,本教程將展示如何將從語音動態生成的文本添加到您的體驗中,包括如何實施 STT,以便玩家可以在您的 3D 世界中與物體互動的指導。

音訊對象

要創建 STT 音訊,了解您在本教程中將使用的音訊對象非常重要。STT 的音訊對象有三種類型:

  • AudioDeviceInput 對象是現實世界中的物理硬體設備,例如筆記本電腦、手機或耳機中的麥克風。
  • AudioSpeechToText 對象將語音聲音轉換為文本字符串。
  • Wires 用於將音訊流從一個對象攜帶到另一個對象。

這些音訊對象協同工作,以生成對玩家行動的 STT 文本。例如,如果玩家在使用筆記本電腦玩體驗時佩戴耳機:

  • AudioDeviceInput 捕捉玩家的語音,通過其麥克風以音訊流形式輸出。
  • 一根 Wire 將音訊流從 AudioDeviceInput 攜帶到 AudioSpeechToText
  • AudioSpeechToText 將玩家的語音轉換為文本。
  • 體驗讀取此文本並執行動作,例如在螢幕上顯示說出的文本或在玩家的指令下打開門。

啟用麥克風使用

在將 STT 添加到體驗之前,您必須首先啟用麥克風使用權並發布該體驗。

  1. 在 Studio 中打開 Gingerbread House - Start 文件。
  2. 創建本地副本。
  3. 發布您的本地副本的體驗。
  4. 返回 Studio,轉到 檔案體驗設定通信
  5. 開啟 啟用麥克風
  6. 保存更改。

添加簡單的語音捕捉

要將簡單的語音捕捉添加到您的 Gingerbread House - Start 文件的本地副本中:

  1. 啟用最新的語音 API 使用。

    1. 資源管理器 窗口中,選擇 VoiceChatService
    2. 屬性 窗口中,將 UseAudioApi 設定為 Enabled
  2. 創建基本的音訊對象讓您捕捉口語。

    1. 資源管理器 窗口中,轉到 Workspace > DialogueVolume
    2. 刪除 DialogueVolume 文件夾內的所有對象。
    3. 將以下對象插入到 DialogueVolume 文件夾中:
      • 一個 AudioDeviceInput 用於捕捉語音。
      • 一個 AudioSpeechToText 用於將語音轉換為文本。
      • 一根 Wire 用於將音訊流從音訊設備輸入攜帶到 STT 實例。
    4. AudioSpeechToText 對象的 屬性 窗口中,將 Enabled 狀態設為開啟。
    5. Wire 對象的 屬性 窗口中:
      1. SourceInstance 設為您的新 AudioDeviceInput,以指定您希望該輸線攜帶來自此特定音訊實例的音訊。
      2. TargetInstance 設為您的新 AudioSpeechToText,以指定您希望該輸線攜帶音訊到此特定音訊實例。
  3. 在運行時將音訊設備輸入的 Player 屬性設置為本地玩家。這告訴 Roblox 要捕捉來自哪個用戶的麥克風音訊。

    1. 資源管理器 窗口中,轉到 StarterPlayer > StarterCharacterScripts
    2. 插入一個 LocalScript,並命名為 ListenForMagicWord
    3. 將以下代碼粘貼到新的本地腳本中:

    local audioDeviceInput = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioDeviceInput')
    -- 將麥克風綁定到本地玩家
    audioDeviceInput.Player = game.Players.LocalPlayer

測試您的語音捕捉

在您添加簡單的語音捕捉後,可以進行體驗遊玩測試,以確保您的 STT 實施正常運作。對著麥克風說話應該會將 AudioSpeechToText 屬性填充為您的語音的文本版本。

要測試您的語音捕捉:

  1. 測試 > 客戶端和服務器 下,選擇 團隊測試
  2. 單擊 開始 以啟動測試服務器。
  3. 在新的測試服務器中,取消靜音麥克風並說幾句話。
  4. 資源管理器 窗口中,轉到 Workspace > DialogueVolume > AudioSpeechToText
  5. AudioSpeechToText屬性 窗口中,確認您在麥克風中說的詞語已作為 Text 屬性的值出現。

在遊戲中使用 STT

要將 STT 與遊戲玩法連接起來,讓玩家在對著麥克風說「Open Sesame」時打開姜餅屋的門:

  1. 創建一個遠程事件以連接客戶端和服務器。

    1. 資源管理器 窗口中,在 ReplicatedStorage 下插入一個 RemoteEvent
    2. 將其命名為 OpenDoor
  2. 添加一個新的腳本來動畫化打開姜餅屋的門。

    1. ServerScriptService 下插入一個服務器端的 Script
    2. 將其命名為 DoorService
    3. 將以下代碼粘貼到新的腳本中:

    -- 獲取共享的存儲服務 ReplicatedStorage 用於服務器和客戶端之間
    -- 獲取用於補間系統的 TweenService
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local TweenService = game:GetService("TweenService")
    -- 允許客戶端請求服務器打開門
    local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")
    -- 動畫化門向下移動並打開的函數
    local function openDoor()
    local doorPart = workspace:WaitForChild("Door")
    local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Linear)
    local tween = TweenService:Create(doorPart, tweenInfo, {Position = doorPart.Position + Vector3.new(0, -15, 0)})
    tween:Play()
    end
    -- 將函數連接到事件
    remoteEvent.OnServerEvent:Connect(openDoor)
  3. 將門連接到語音轉文本,讓玩家對著麥克風說話時觸發動作。

    1. 轉到 StarterPlayer > StarterCharacterScripts
    2. 打開您之前創建的 ListenForMagicWord 腳本。
    3. 添加以下行:

    -- 獲取共享的存儲服務 ReplicatedStorage 用於服務器和客戶端之間
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    -- 獲取客戶端將觸發至服務器的 RemoveEvent
    local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")
    -- 在場景圖中找到 STT 節點
    -- 節點的 Text 屬性會在識別語音時更新
    local speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')
    -- 告訴服務器在 STT 捕捉到玩家說「Open Sesame」時打開門的函數
    speechToText:GetPropertyChangedSignal('Text'):Connect(function()
    local text = speechToText.Text
    if text == '' then
    return
    end
    print(text)
    if (text.find(text, 'open sesame') ~= nil) then
    remoteEvent:FireServer()
    end
    speechToText.Text = ''
    end)
  4. 測試您的 STT 實施。

    1. 測試 > 客戶端和服務器 下,選擇 團隊測試
    2. 單擊 開始 以啟動測試服務器。
    3. 在新的測試服務器中,走到門前,取消靜音麥克風並說「Open Sesame」。門應該會打開,讓您進入姜餅屋。
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。