Inizia
Tutorial intermedi

Aggiungi la sintesi vocale

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Sintesi vocale (STT) è una forma di tecnologia che genera automaticamente testo da suoni vocali. Con la STT, puoi creare mondi più immersivi consentendo ai giocatori di parlare con gli NPC, generare testo senza la necessità di registrare specifici audio in anticipo, migliorare l'accessibilità per i giocatori con limitazioni motorie o visive e fornire ai giocatori controlli a mani libere tramite scorciatoie vocali per azioni come aprire il loro inventario o lanciare un incantesimo.

Usando il file Gingerbread House - Start .rbxl come punto di partenza, questo tutorial ti mostra come aggiungere testo generato dinamicamente dalla voce alla tua esperienza, inclusa la guida su come implementare la STT in modo che il giocatore possa interagire con oggetti nel tuo mondo 3D.

Oggetti audio

Per creare audio STT, è importante comprendere gli oggetti audio con cui lavorerai in questo tutorial. Ci sono tre tipi di oggetti audio per STT:

  • L'oggetto AudioDeviceInput è un dispositivo hardware fisico nel mondo reale, come un microfono in un laptop, telefono o cuffie.
  • L'oggetto AudioSpeechToText converte i suoni vocali in stringhe di testo.
  • Wires trasmettono flussi audio da un oggetto all'altro.

Tutti questi oggetti audio lavorano insieme per generare testo STT in risposta alle azioni del giocatore. Ad esempio, se il giocatore indossa cuffie mentre gioca a un'esperienza con il loro laptop:

  • L'AudioDeviceInput cattura la voce del giocatore, come parlato nel loro microfono e come flusso audio.
  • Un Wire trasmette il flusso audio dall'AudioDeviceInput all'AudioSpeechToText.
  • L'AudioSpeechToText converte il discorso del giocatore in testo.
  • L'esperienza legge questo testo ed esegue un'azione, come visualizzare il testo parlato sullo schermo o aprire una porta su comando del giocatore.

Abilitare l'uso del microfono

Prima di aggiungere la STT a un'esperienza, è necessario prima abilitarne l'uso e pubblicare l'esperienza.

  1. Apri il file Gingerbread House - Start in Studio.
  2. Crea una copia locale.
  3. Pubblica la tua copia locale dell'esperienza.
  4. Torna a Studio, vai su FileImpostazioni esperienzaComunicazione.
  5. Attiva Abilita microfono.
  6. Salva le modifiche.

Aggiungi cattura vocale semplice

Per aggiungere una cattura vocale semplice alla tua copia locale del file Gingerbread House - Start:

  1. Abilita l'uso della più recente API per la voce.

    1. Nella finestra Esplora, seleziona il VoiceChatService.
    2. Nella finestra Proprietà, imposta UseAudioApi su Abilitato.
  2. Crea i base oggetti audio che ti permetteranno di catturare parole parlate.

    1. Nella finestra Esplora, vai a Workspace > DialogueVolume.
    2. Elimina tutti gli oggetti all'interno della cartella DialogueVolume.
    3. Inserisci i seguenti oggetti nella cartella DialogueVolume:
      • Un AudioDeviceInput per catturare la voce.
      • Un AudioSpeechToText per convertire il discorso in testo.
      • Un Wire per trasmettere il flusso dall'input audio alla istanza STT.
    4. Nella finestra Proprietà dell'oggetto AudioSpeechToText, imposta lo stato Abilitato su attivo.
    5. Nella finestra Proprietà dell'oggetto Wire:
      1. Imposta SourceInstance sul tuo nuovo AudioDeviceInput per specificare che desideri che il cavo trasmetta audio da questa specifica istanza audio.
      2. Imposta TargetInstance sul tuo nuovo AudioSpeechToText per specificare che desideri che il cavo trasmetta audio a questa specifica istanza audio.
  3. Imposta la proprietà Player dell'input audio sul giocatore locale durante l'esecuzione. Questo dice a Roblox da quale microfono dell'utente catturare audio.

    1. Nella finestra Esplora, vai a StarterPlayer > StarterCharacterScripts.
    2. Inserisci uno LocalScript e nominarlo ListenForMagicWord.
    3. Incolla il seguente codice nel nuovo script locale:

    local audioDeviceInput = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioDeviceInput')
    -- Collega il microfono al giocatore locale
    audioDeviceInput.Player = game.Players.LocalPlayer

Testa la tua cattura vocale

Dopo aver aggiunto una cattura vocale semplice, puoi testare l'esperienza per assicurarti che la tua implementazione STT funzioni correttamente. Parlare nel tuo microfono dovrebbe popolare la proprietà AudioSpeechToText con la versione testuale del tuo discorso.

Per testare la tua cattura vocale:

  1. Sotto Test > Client e Server, seleziona Team Test.
  2. Fai clic su Inizia per avviare il server di test.
  3. Nel nuovo server di test, attiva il microfono e parla alcune parole.
  4. Nella finestra Esplora, vai a Workspace > DialogueVolume > AudioSpeechToText.
  5. Nella finestra Proprietà di AudioSpeechToText, conferma che le parole che hai pronunciato nel tuo microfono siano apparse come valore della proprietà Text.

Usa STT con il gameplay

Per collegare la STT al gameplay e far aprire la porta della casa di pan di zenzero quando il giocatore dice "Apri Sesame" nel microfono:

  1. Crea un evento remoto per collegare il client al server.

    1. Nella finestra Esplora, inserisci un RemoteEvent sotto ReplicatedStorage.
    2. Nominalo OpenDoor.
  2. Aggiungi un nuovo script per animare l'apertura della porta della casa di pan di zenzero.

    1. Sotto ServerScriptService, inserisci uno script lato server Script.
    2. Nominalo DoorService.
    3. Incolla il seguente codice nel nuovo script:

    -- Ottiene il servizio ReplicatedStorage per la memorizzazione condivisa tra server e client
    -- Ottiene il TweenService per il sistema di tweening
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local TweenService = game:GetService("TweenService")
    -- Consente al client di chiedere al server di aprire la porta
    local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")
    -- Funzione che anima la porta per muoversi verso il basso e aprirsi
    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
    -- Collega la funzione all'evento
    remoteEvent.OnServerEvent:Connect(openDoor)
  3. Collega la porta alla sintesi vocale in modo che un'azione avvenga quando il giocatore parla nel loro microfono.

    1. Vai a StarterPlayer > StarterCharacterScripts.
    2. Apri lo script ListenForMagicWord che hai creato in precedenza.
    3. Aggiungi le seguenti righe:

    -- Ottiene il servizio ReplicatedStorage per la memorizzazione condivisa tra server e client
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    -- Ottiene l'evento RemoteEvent che il client attiverà sul server
    local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")
    -- Trova il nodo STT nel grafo della scena
    -- La proprietà Text del nodo si aggiorna mentre riconosce la voce
    local speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')
    -- Funzione che chiede al server di aprire la porta se STT cattura il giocatore che dice "Apri 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. Testa la tua implementazione STT.

    1. Sotto Test > Client e Server, seleziona Team Test.
    2. Fai clic su Inizia per avviare il server di test.
    3. Nel nuovo server di test, avvicinati alla porta, attiva il microfono e dì "Apri Sesame". La porta dovrebbe aprirsi e permetterti di entrare nella casa di pan di zenzero.
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.