Dodaj rozpoznawanie mowy

*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.

Rozpoznawanie 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 dźwięku, poprawić dostępność dla graczy z ograniczeniami ruchowymi lub wzrokowymi oraz zapewnić graczom sterowanie bez użycia rąk za pomocą skrótów głosowych do działań, takich jak otwieranie ekwipunku czy rzucanie zaklęcia.

Używając pliku Gingerbread House - Start .rbxl jako punktu wyjścia, ten samouczek pokazuje, jak dodać tekst generowany dynamicznie z mowy do swojej gry, w tym wskazówki dotyczące implementacji STT, aby gracz mógł wchodzić w interakcje z obiektami w swoim 3D świecie.

Obiekty audio

Aby stworzyć dźwięk STT, ważne jest, aby zrozumieć obiekty audio, z którymi będziesz pracować w tym samouczku. Istnieją trzy typy obiektów audio dla STT:

  • Obiekt AudioDeviceInput to fizyczne urządzenie sprzętowe w rzeczywistym świecie, takie jak mikrofon w laptopie, telefonie lub słuchawkach.
  • 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 słuchawki podczas grania w grę na swoim laptopie:

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

Włącz użycie mikrofonu

Zanim dodasz STT do gry, musisz najpierw włączyć użycie mikrofonu i opublikować grę.

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

Dodaj prostą rejestrację mowy

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

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

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

    1. W oknie Eksplorator przejdź do Workspace > DialogueVolume.
    2. Usuń wszystkie obiekty wewnątrz folderu DialogueVolume.
    3. Wstaw następujące obiekty do folderu DialogueVolume:
      • AudioDeviceInput do rejestrowania mowy.
      • AudioSpeechToText do konwersji mowy na tekst.
      • 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ł dźwięk z tej konkretnej instancji audio.
      2. Ustaw TargetInstance na nowy AudioSpeechToText, aby określić, że chcesz, aby przewód przenosił dźwięk do tej konkretnej instancji audio.
  3. Ustaw właściwość Player wejścia audio na lokalnego gracza w czasie wykonywania. To mówi Robloxowi, z mikrofonu którego użytkownika ma przechwytywać dźwięk.

    1. W oknie Eksplorator przejdź do StarterPlayer > StarterCharacterScripts.
    2. Wstaw LocalScript i nazwij go ListenForMagicWord.
    3. Wklej następujący kod do nowego lokalnego skryptu:
    local audioDeviceInput = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioDeviceInput')
    -- Przypisuje mikrofon do lokalnego gracza
    audioDeviceInput.Player = game.Players.LocalPlayer

Przetestuj swoją rejestrację mowy

Po dodaniu prostej rejestracji mowy możesz przetestować grę, aby upewnić się, że twoja implementacja STT działa poprawnie. Mówienie do mikrofonu powinno zapełnić właściwość AudioSpeechToText tekstową wersją twojej mowy.

Aby przetestować swoją rejestrację mowy:

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

Użyj STT w rozgrywce

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

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

    1. W oknie Eksplorator wstaw RemoteEvent pod ReplicatedStorage.
    2. Nazwij go OpenDoor.
  2. Dodaj nowy skrypt do animacji otwierania drzwi domku z piernika.

    1. Pod ServerScriptService wstaw skrypt po stronie serwera Script.
    2. Nazwij go DoorService.
    3. Wklej następujący kod do nowego skryptu:
    -- Pobiera usługę ReplicatedStorage do wspólnego przechowywania między serwerem a klientem
    -- Pobiera TweenService do systemu tweeningowego
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local TweenService = game:GetService("TweenService")
    -- Pozwala klientowi poprosić serwer o otwarcie drzwi
    local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")
    -- Funkcja, która animuje drzwi, aby poruszały się w dół i otwierały
    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 rozpoznawaniem 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 stworzyłeś wcześniej.
    3. Dodaj następujące linie:
    -- Pobiera usługę ReplicatedStorage do wspólnego przechowywania między serwerem a klientem
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    -- Pobiera RemoveEvent, który klient wyśle do serwera
    local remoteEvent = ReplicatedStorage:WaitForChild("OpenDoor")
    -- Znajduje węzeł STT w grafie sceny
    -- Właściwość Text węzła aktualizuje się, gdy rozpoznaje mowę
    local speechToText = workspace:WaitForChild('DialogueVolume'):WaitForChild('AudioSpeechToText')
    -- Funkcja, która mówi serwerowi, aby otworzył drzwi, jeśli STT przechwyci gracza mówiącego "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 swoją implementację STT.

    1. W sekcji Test > Klienci i serwery wybierz Test zespołowy.
    2. Kliknij Start, aby uruchomić serwer testowy.
    3. W nowym serwerze testowym podejdź do drzwi, wycisz mikrofon i powiedz "Otwórz sezam". Drzwi powinny się otworzyć i umożliwić ci wejście 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.