添加語音轉文字

*此內容是使用 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 是我們在美國及其他國家地區的部分註冊與未註冊商標。