Samouczki dla średnio zaawansowanych

Dodaj tekst mowy na tekst

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Tekst z mowy (STT) to forma technologii, która automatycznie generuje tekst z dźwięków mowy. Dzięki STT możesz tworzyć bardziej immersyjne światy, pozwalając graczom rozmawiać z NPC-ami, generować tekst bez potrzeby wcześniejszego nagrywania konkretnego audio, poprawić dostępność dla graczy z ograniczeniami ruchowymi lub wzrokowymi oraz zapewnić graczom sterowanie bez użycia rąk poprzez skróty głosowe do akcji takich jak otwieranie ekwipunku lub rzucanie zaklęć.

Wykorzystując plik Gingerbread House - Start .rbxl jako punkt wyjścia, ten samouczek pokazuje, jak dodać tekst generowany dynamicznie z mowy do swojego doświadczenia, w tym wskazówki, jak wdrożyć STT, aby gracz mógł wchodzić w interakcje z obiektami w swoim trójwymiarowym świecie.

Obiekty audio

Aby stworzyć audio STT, ważne jest, aby zrozumieć obiekty audio, z którymi będziesz pracować przez ten samouczek. Istnieją trzy typy obiektów audio do STT:

  • Obiekt AudioDeviceInput jest fizycznym urządzeniem sprzętowym w rzeczywistym świecie, takim jak mikrofon w laptopie, telefonie lub zestawie słuchawkowym.
  • Obiekt AudioSpeechToText konwertuje dźwięki mowy na ciągi tekstowe.
  • Wires przenoszą strumienie audio z jednego obiektu do drugiego.

Wszystkie te obiekty audio współpracują ze sobą, aby generować tekst STT w odpowiedzi na działania gracza. Na przykład, jeśli gracz nosi zestaw słuchawkowy grając w doświadczenie na swoim laptopie:

  • AudioDeviceInput przechwytuje mowę gracza, jak wypowiedziana do mikrofonu jako strumień audio.
  • Wire przenosi strumień audio z AudioDeviceInput do AudioSpeechToText.
  • AudioSpeechToText konwertuje mowę gracza na tekst.
  • Doświadczenie odczytuje ten tekst i wykonuje akcję, taką jak wyświetlenie wypowiedzianego tekstu na ekranie lub otwarcie drzwi na polecenie gracza.

Włącz użycie mikrofonu

Zanim dodasz STT do doświadczenia, musisz najpierw włączyć użycie mikrofonu i opublikować to doświadczenie.

  1. Otwórz plik Gingerbread House - Start w Studio.
  2. Utwórz lokalną kopię.
  3. Opublikuj swoją lokalną kopię doświadczenia.
  4. W Studio przejdź do PlikUstawienia doświadczeniaKomunikacja.
  5. Włącz Włącz mikrofon.
  6. Zapisz swoje zmiany.

Dodaj prostą obsługę mowy

Aby dodać prostą obsługę mowy do swojej lokalnej kopii pliku Gingerbread House - Start:

  1. Włącz użycie najnowszego API dla głosu.

    1. W oknie Eksploratora wybierz VoiceChatService.
    2. W oknie Właściwości ustaw UseAudioApi na Włączone.
  2. Utwórz podstawowe obiekty audio, które pozwolą ci przechwytywać wypowiedziane słowa.

    1. W oknie Eksploratora przejdź do Workspace > DialogueVolume.
    2. Usuń wszystkie obiekty w folderze DialogueVolume.
    3. Wstaw następujące obiekty do folderu DialogueVolume:
      • Obiekt AudioDeviceInput do przechwytywania mowy.
      • Obiekt AudioSpeechToText do konwertowania mowy na tekst.
      • Obiekt Wire do przenoszenia strumienia z wejścia audio do instancji STT.
    4. W oknie Właściwości obiektu AudioSpeechToText, ustaw stan Enabled na włączony.
    5. W oknie Właściwości obiektu Wire:
      1. Ustaw SourceInstance na nowy AudioDeviceInput, aby określić, że chcesz, aby przewód przenosił audio z tej konkretnej instancji audio.
      2. Ustaw TargetInstance na nowy AudioSpeechToText, aby określić, że chcesz, aby przewód przenosił audio do tej konkretnej instancji audio.
  3. Ustaw właściwość Player wejścia audio na lokalnego gracza w czasie rzeczywistym. To mówi Roblox, z mikrofonu którego użytkownika należy przechwycić audio.

    1. W oknie Eksploratora przejdź do StarterPlayer > StarterCharacterScripts.
    2. Wstaw LocalScript i nazwij go ListenForMagicWord.
    3. Wklej poniższy kod do nowego lokalnego skryptu:

    local audioDeviceInput = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioDeviceInput')
    -- Przypisuje mikrofon do lokalnego gracza
    audioDeviceInput.Player = game.Players.LocalPlayer

Przetestuj przechwytywanie mowy

Po dodaniu prostej obsługi mowy możesz wypróbować doświadczenie, aby upewnić się, że twoje wdrożenie STT działa poprawnie. Mówienie do mikrofonu powinno uzupełnić właściwość AudioSpeechToText tekstową wersją twojej mowy.

Aby przetestować swoje przechwytywanie mowy:

  1. W sekcji Test > Klienci i Serwery, wybierz Test zespołowy.
  2. Kliknij Start, aby uruchomić serwer testowy.
  3. Na nowym serwerze testowym, wyłącz wyciszenie mikrofonu i powiedz kilka słów.
  4. W oknie Eksploratora przejdź do Workspace > DialogueVolume > AudioSpeechToText.
  5. W oknie Właściwości AudioSpeechToText potwierdź, że słowa, które wypowiedziałeś do swojego mikrofonu, pojawiły się jako wartość właściwości Text.

Użyj STT w rozgrywce

Aby połączyć STT z rozgrywką i sprawić, by drzwi do domku z piernika otworzyły się, gdy gracz powie "Otwórz sezam" do swojego mikrofonu:

  1. Utwórz zdarzenie zdalne, aby połączyć klienta z serwerem.

    1. W oknie Eksploratora wstaw RemoteEvent pod ReplicatedStorage.
    2. Nazwij go OpenDoor.
  2. Dodaj nowy skrypt, aby animować otwieranie drzwi domku z piernika.

    1. W ServerScriptService wstaw skrypt po stronie serwera Script.
    2. Nazwij go DoorService.
    3. Wklej poniższy kod do nowego skryptu:

    -- Pobiera usługę ReplicatedStorage do wspólnego przechowywania między serwerem a klientem
    -- Pobiera TweenService do systemu tweeningu
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local TweenService = game:GetService("TweenService")
    -- Pozwala klientowi zapytać serwer o otwarcie drzwi
    local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")
    -- Funkcja animująca drzwi do ruchu w dół i otwarcia
    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
    -- Łączy funkcję z wydarzeniem
    remoteEvent.OnServerEvent:Connect(openDoor)
  3. Połącz drzwi z tekstem mowy, aby akcja miała miejsce, gdy gracz mówi do swojego mikrofonu.

    1. Przejdź do StarterPlayer > StarterCharacterScripts.
    2. Otwórz skrypt ListenForMagicWord, który utworzyłeś wcześniej.
    3. Dodaj następujące wiersze:

    -- Pobiera usługę ReplicatedStorage do wspólnego przechowywania między serwerem a klientem
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    -- Pobiera RemoveEvent, które klient uruchomi na serwerze
    local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")
    -- Znajduje węzeł STT w wykresie sceny
    -- Właściwość Text węzła aktualizuje się, gdy rozpoznaje mowę
    local speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')
    -- Funkcja, która informuje serwer o otwarciu drzwi, jeśli STT przechwytuje, że gracz mówi "Otwórz sezam"
    speechToText:GetPropertyChangedSignal('Text'):Connect(function()
    local text = speechToText.Text
    if text == '' then
    return
    end
    print(text)
    if (text.find(text, 'otwórz sezam') ~= nil) then
    remoteEvent:FireServer()
    end
    speechToText.Text = ''
    end)
  4. Przetestuj swoje wdrożenie STT.

    1. W sekcji Test > Klienci i Serwery, wybierz Test zespołowy.
    2. Kliknij Start, aby uruchomić serwer testowy.
    3. Na nowym serwerze testowym podejdź do drzwi, wyłącz wyciszenie mikrofonu i powiedz "Otwórz sezam". Drzwi powinny się otworzyć i wpuścić cię do domku z piernika.
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.