Roblox의 모듈형 오디오 객체는 경험에서 사운드와 음성 채팅을 동적으로 제어할 수 있도록 해줍니다. 거의 모든 오디오 객체는 실제 오디오 장치에 해당하며, 각각 물리적 counterparts처럼 오디오를 캡처하고 재생하는 기능을 함께 작동합니다.
예를 들어, 모든 오디오 객체는 개념적으로 다음과 같은 카테고리로 나눌 수 있습니다:
- 오디오 스트림을 생산하는 객체, 예를 들어 오디오 플레이어.
- 오디오 스트림을 소비하는 객체, 예를 들어 오디오 이머터.
- 오디오 스트림을 수정하는 객체, 예를 들어 오디오 효과.
- 하나의 오디오 객체에서 다른 오디오 객체로 오디오 스트림을 전달하는 객체, 예를 들어 와이어.
이 가이드를 읽고 이 모든 오디오 객체가 사운드를 방출하기 위해 어떻게 함께 작동하는지를 학습함에 따라, 경험에서 플레이어에게 음악, 사운드 효과 및 인간의 목소리를 정확하게 캡처하고 전달하는 방법을 배우게 될 것입니다.
오디오 재생
경험 안에서 오디오를 재생하려면 사용 가능한 각 오디오 객체의 역할을 이해하는 것이 중요합니다:
- AudioPlayer는 설정된 오디오 자산 ID를 사용하여 오디오 파일을 로드하고 재생합니다.
- AudioEmitter는 3D 환경으로 오디오를 방출하는 가상 스피커입니다.
- AudioListener는 3D 환경에서 오디오를 수집하는 가상 마이크입니다.
- AudioDeviceOutput은 실제 세계에 있는 물리적 하드웨어 장치로, 예를 들어 스피커나 헤드폰입니다.
- AudioDeviceInput은 실제 세계에 있는 물리적 마이크입니다.
- AudioTextToSpeech 객체는 텍스트를 오디오로 변환하는 인공 인간 목소리를 사용합니다.
- AudioSpeechToText 객체는 음성 오디오를 텍스트로 변환합니다.
- Wire는 오디오 스트림을 하나의 오디오 객체에서 다른 오디오 객체로 전달합니다.
이 오디오 객체들을 어떻게 조합하는지는 플레이어의 스피커나 헤드폰에 직접 오디오를 방출할지 아니면 3D 공간의 객체에서 방출할지를 결정하는 데 따라 달라집니다. 다음 섹션에서는 두 가지 시나리오를 자세히 설명합니다.
2D 오디오
2D 오디오는 특정 위치에서 재생되지 않고 방향성이 없는 소리로, 플레이어의 3D 공간 내 위치나 방향에 관계없이 같은 볼륨으로 유지됩니다. 이 유형의 오디오는 다음 세 가지 오디오 객체가 필요합니다:
- 오디오 스트림을 생성하기 위한 오디오 플레이어.
- 실제 세계에서 오디오 스트림을 재생하는 물리적 하드웨어 장치.
- 오디오 플레이어에서 출력 장치로 오디오 스트림을 연결하는 와이어.
Studio에서 2D 오디오를 설정하는 방법을 보여주는 다음 다이어그램은 각 객체와 해당하는 실제 오디오 장치의 비교를 제공합니다. 요약하면:
- AudioPlayer는 지정된 설정으로 오디오 자산을 로드하고 재생합니다.
- AudioDeviceOutput은 플레이어가 스피커나 헤드폰을 통해 오디오를 들을 수 있게 해줍니다.
- Wire는 오디오 플레이어와 SourceInstance 속성을 통해 연결되고, 물리적 하드웨어 장치와 TargetInstance 속성을 통해 연결됩니다. 그런 다음 오디오 스트림을 오디오 플레이어에서 플레이어의 출력 장치로 전달하는 역할을 합니다.

비방향성 오디오를 재생하려면:
- Explorer 창에서 SoundService로 가서 다음을 삽입합니다:
- 오디오 소스를 생성하기 위한 AudioPlayer 객체.
- 경험 전반에 걸쳐 재생되는 스피커를 생성하기 위한 AudioDeviceOutput 객체.
- 오디오 플레이어에서 스피커로 스트림을 연결하는 Wire 객체.
- Properties 창의 AudioPlayer 객체에서:
- AssetID를 유효한 오디오 자산 ID로 설정합니다. 사용자 지정 오디오가 없다면, Creator Store에서 무료로 사용할 수 있는 오디오 자산을 찾을 수 있습니다.
- 오디오가 계속 반복되도록 하려면 Looping을 활성화합니다.
- 재생하고자 하는 오디오의 음량을 설정합니다.
- Properties 창의 Wire 객체에서:
- SourceInstance를 AudioPlayer로 설정하여 특정 오디오 플레이어 내에서 오디오를 재생하도록 지정합니다.
- TargetInstance를 AudioDeviceOutput으로 설정하여 특정 스피커에서 오디오를 재생하도록 지정합니다.
이제 스크립트를 사용하여 플레이어가 경험에 가입할 때나 게임 이벤트나 UI 상호작용의 결과로 비방향성 오디오를 트리거할 수 있습니다. 이러한 사용 사례에 대한 코드 샘플 참조는 2D 오디오 추가 튜토리얼을 참조하십시오.
3D 오디오
3D 오디오는 3D 공간의 특정 위치에서 재생되는 방향성 소리로, 플레이어의 위치와 소리에 대한 방향에 따라 볼륨이 증가하거나 감소합니다. 이 유형의 오디오는 six 개의 오디오 객체가 필요합니다:
- 오디오 스트림을 생성하는 오디오 플레이어.
- 환경 내에서 오디오 스트림을 방출하는 오디오 이머터.
- 환경에서 오디오 스트림을 수집하는 리스너.
- 실제 세계에서 오디오 스트림을 재생하는 물리적 하드웨어 장치.
- 하나의 와이어: 오디오 플레이어에서 이머터로 오디오 스트림을 전달하는 와이어; 두 번째 와이어는 리스너에서 출력 장치로 스트림을 전달하는 와이어입니다.
Studio에서 3D 오디오를 설정하는 방법을 보여주는 다음 다이어그램은 각 객체와 해당하는 실제 오디오 장치의 비교를 제공합니다. 요약하면:
- AudioPlayer는 지정된 설정으로 오디오 자산을 로드하고 재생합니다.
- AudioEmitter의 부모 위치는 3D 공간에서 오디오가 방출되는 위치를 결정합니다.
- AudioListener는 로컬 카메라로부터 또는 플레이어 캐릭터의 Humanoid.RootPart에서 이머터로부터 오디오를 캡처합니다. 기본 리스너 위치를 설정하는 위치에 따라 다릅니다.
- AudioDeviceOutput은 플레이어가 스피커나 헤드폰을 통해 오디오를 들을 수 있게 해줍니다.
- 첫 번째 Wire는 오디오 플레이어와 SourceInstance 속성으로 연결되고, 이머터와 TargetInstance 속성으로 연결됩니다. 그런 다음 오디오 스트림을 오디오 플레이어에서 이머터로 전달하는 역할을 합니다.
- 두 번째 Wire는 리스너와 SourceInstance 속성으로 연결되고, 물리적 하드웨어 장치와 TargetInstance 속성으로 연결됩니다. 그런 다음 오디오 스트림을 리스너에서 플레이어의 출력 장치로 전달하는 역할을 합니다.

위치 기반 오디오를 재생하려면:
플레이어가 경험에 들어올 때 AudioListener를 만들 위치를 선택합니다.
- Explorer 창에서 SoundService를 선택합니다.
- Properties 창에서 ListenerLocation을 다음 중 하나로 설정합니다:
- Default - 음성 채팅을 활성화한 경험에서 리스너를 Workspace.CurrentCamera에 만들고 부모로 설정합니다.
- None - 리스너를 만들지 않습니다. 이 옵션은 스크립트를 통해 리스너를 만들고 싶을 때 유용합니다.
- Character - 리스너를 로컬 플레이어의 캐릭터에 만들고 부모로 설정합니다.
- Camera - 리스너를 Workspace.CurrentCamera에 만들고 부모로 설정합니다.
Explorer 창에서 오디오를 방출하려는 3D 객체로 가서 다음을 삽입합니다:
- 오디오 소스를 생성하기 위한 AudioPlayer 객체.
- 3D 객체에서 위치 스트림을 방출하기 위한 AudioEmitter 객체.
- 오디오 스피치 생성기로부터 오디오 이머터까지 스트림을 연결하는 Wire 객체.
Properties 창의 AudioPlayer 객체에서:
- AssetID를 유효한 오디오 자산 ID로 설정합니다. 사용자 지정 오디오가 없다면, Creator Store에서 무료로 사용할 수 있는 오디오 자산을 찾을 수 있습니다.
- 오디오가 계속 반복되도록 하려면 Looping을 활성화합니다.
- 재생하고자 하는 오디오의 음량을 설정합니다.
Properties 창의 AudioEmitter 객체에서 DistanceAttenuation을 설정하여 리스너가 이머터를 듣는 볼륨을 거리와 관련하여 결정하는 볼륨-거리 곡선으로 설정합니다.
예를 들어, 다음 곡선은 리스너가 이머터로부터 50 스터드 떨어져 있을 때 오디오의 볼륨을 반으로 줄이고, 리스너가 70 스터드 떨어져 있을 때 볼륨을 0으로 급격히 줄입니다.

Properties 창의 Wire 객체에서:
- SourceInstance를 AudioPlayer로 설정하여 특정 오디오 플레이어 내에서 오디오를 재생하도록 지정합니다.
- TargetInstance를 AudioEmitter로 설정하여 특정 오디오 이머터에서 오디오를 재생하도록 지정합니다.
이제 스크립트를 사용하여 방향성 오디오를 트리거할 수 있습니다. 플레이어가 경험에 가입할 때나 게임 이벤트나 UI 상호작용의 결과로 트리거할 수 있습니다. 이러한 사용 사례에 대한 코드 샘플 참조는 3D 오디오 추가 튜토리얼을 참조하십시오.
텍스트 음성 변환
텍스트 음성 변환(TTS)은 인공 음성을 사용하여 텍스트 문자열을 음성 소리로 변환하는 형태의 보조 기술입니다. 이 유형의 오디오는 다음 다섯 개의 오디오 객체가 필요합니다:
- 텍스트를 오디오로 로드하고 변환하는 오디오 스피치 생성기.
- 환경 내에서 오디오 스트림을 방출하는 오디오 이머터.
- 환경에서 오디오 스트림을 수집하는 리스너.
- 실제 세계에서 오디오 스트림을 재생하는 물리적 하드웨어 장치.
- 2D 오디오의 경우 - 오디오 스피치 생성기로부터 출력 장치까지 오디오 스트림을 전달하는 와이어.
- 3D 오디오의 경우 - 두 개의 와이어: 하나는 오디오 스피치 생성기로부터 이머터까지 오디오 스트림을 전달하고, 다른 하나는 리스너에서 출력 장치로 전달하는 와이어입니다.
이 객체들을 구성하는 방법은 2D TTS 오디오를 생성할 것인지 아니면 3D TTS 오디오를 생성할 것인지에 따라 달라집니다. 각 프로세스에 대한 자세한 내용은 다음 탭 간의 클릭을 통해 확인할 수 있습니다.
Studio에서 2D TTS 오디오를 설정하는 방법을 보여주는 다음 다이어그램은 각 객체와 해당하는 실제 오디오 장치의 비교를 제공합니다. 요약하면:
- AudioTextToSpeech 객체는 텍스트 문자열을 로드하고 음성 소리로 변환합니다.
- AudioDeviceOutput은 플레이어가 스피커나 헤드폰을 통해 오디오를 들을 수 있게 해줍니다.
- Wire는 오디오 스피치 생성기와 SourceInstance 속성으로 연결되고, 물리적 하드웨어 장치와 TargetInstance 속성으로 연결됩니다. 그런 다음 오디오 스트림을 오디오 스피치 생성기에서 플레이어의 출력 장치로 전달하는 역할을 합니다.

2D 음성 출력 오디오를 재생하려면:
- Explorer 창에서 SoundService로 가서 다음을 삽입합니다:
- 오디오 스피치 생성기를 생성하기 위한 AudioTextToSpeech 객체.
- 경험 전반에 걸쳐 재생되는 스피커를 생성하기 위한 AudioDeviceOutput 객체.
- 오디오 스피치 생성기로부터 스피커까지 연결하는 Wire 객체.
- Properties 창의 AudioTextToSpeech 객체에서:
Text를 목소리로 말하고 싶은 내용으로 설정합니다. 요청당 300자의 제한이 있습니다.
VoiceId를 사용하고 싶은 인공 목소리에 따라 1과 10 사이의 숫자로 설정합니다.
인공 목소리 목록VoiceID Voice 설명 오디오 예제 1 영국 남성 2 영국 여성 3 미국 남성 #1 4 미국 여성 #1 5 미국 남성 #2 6 미국 여성 #2 7 호주 남성 8 호주 여성 9 레트로 음성 #1 10 레트로 음성 #2 11 호스트 음성 101 스페인 남성 102 스페인 여성 201 독일 남성 202 독일 여성 301 이탈리아 남성 302 이탈리아 여성 401 프랑스 남성 402 프랑스 여성
Volume을 통해 재생하고자 하는 오디오의 진폭 단위를 설정합니다.
- Properties 창의 Wire 객체에서:
- SourceInstance를 AudioTextToSpeech로 설정하여 특정 오디오 스피치 생성기 내에서 오디오를 재생하도록 지정합니다.
- TargetInstance를 AudioDeviceOutput으로 설정하여 특정 스피커에서 오디오를 재생하도록 지정합니다.
이제 스크립트를 통해 TTS 오디오를 트리거할 수 있습니다. TTS 오디오에 대한 코드 샘플 참조는 텍스트 음성 변환 추가 튜토리얼을 참조하십시오.
음성 텍스트 변환
음성 텍스트 변환(STT)는 음성 소리로부터 자동으로 텍스트 문자열을 생성하는 기술의 일종입니다. 이 유형의 오디오는 세 개의 오디오 객체가 필요합니다:
- 오디오를 로드하고 텍스트로 변환하는 텍스트 생성기.
- 오디오 입력을 캡처할 물리적 하드웨어 장치인 마이크.
- 입력 장치에서 텍스트 생성기로 오디오 스트림을 전달하는 와이어.
이 모든 오디오 객체가 함께 작동하여 플레이어의 행동에 응답하는 STT 텍스트를 생성합니다. 예를 들어, 플레이어가 노트북으로 경험을 플레이할 때 헤드셋을 착용하고 있다면:
- AudioDeviceInput은 플레이어의 음성을 캡처합니다.
- AudioSpeechToText는 플레이어의 음성을 텍스트로 변환합니다.
- 경험은 이 텍스트를 읽고 화면에 음성을 표시하거나 플레이어의 명령으로 문을 여는 등의 작업을 수행합니다.

경험에서 음성 텍스트 변환을 구현하려면:
- 최신 음성 API를 사용하도록 설정합니다.
- Explorer 창에서 VoiceChatService를 선택합니다.
- Properties 창에서 UseAudioApi를 Enabled로 설정합니다.
- Explorer 창에서 SoundService로 가서 다음을 삽입합니다:
- 음성을 캡처하기 위한 AudioDeviceInput.
- 음성을 텍스트로 변환하기 위한 AudioSpeechToText.
- 오디오 장치 입력에서 STT 인스턴스로의 스트림을 전달하는 Wire.
- Properties 창의 AudioSpeechToText 객체에서 Enabled 상태를 켭니다.
- Properties 창의 Wire 객체에서:
- SourceInstance를 새 AudioDeviceInput로 설정하여 이 특정 오디오 인스턴스에서 오디오를 전달하도록 지정합니다.
- TargetInstance를 새 AudioSpeechToText로 설정하여 이 특정 오디오 인스턴스로 오디오를 전달하도록 지정합니다.
- audioDeviceInput.Player = game.Players.LocalPlayer를 사용하여 런타임에서 오디오 장치 입력의 Player 속성을 로컬 플레이어로 설정합니다. 이는 Roblox가 어떤 사용자의 마이크로폰에서 오디오를 캡처할지를 알려줍니다.
경험에 STT를 설정한 후, 스크립트를 통해 이를 트리거할 수 있습니다. 코드 샘플 참조는 음성 텍스트 변환 추가 튜토리얼을 참조하십시오.
지원되는 언어
지원되는 언어를 활성화하기 위한 구성은 필요하지 않습니다. Roblox는 오디오에서 음성 언어를 자동으로 감지하고 필사합니다.
STT는 다음 언어를 지원합니다:
- 아랍어
- 중국어 (간체)
- 중국어 (번체)
- 영어
- 프랑스어
- 독일어
- 인도네시아어
- 이탈리아어
- 일본어
- 한국어
- 폴란드어
- 포르투갈어
- 스페인어
- 러시아어
- 터키어
- 태국어
- 베트남어
유사 단어 필터링
경험에서 STT를 구현할 때, 플레이어가 실제로 말하고자 하는 단어와 유사한 단어를 필터링하여 매칭 정확도를 개선하고 싶을 수 있습니다. 이를 위해 AudioSpeechToText가 인식한 단어를 알려진 단어 목록과 비교할 수 있습니다:
- AudioSpeechToText의 Text 출력을 정리하고 토큰화하여 구문 분석하고 비교할 수 있는 소문자 문자열 테이블을 생성합니다.
- 구두점 문자를 제거합니다.
- 전체 문자열을 소문자로 변환합니다.
- 문자열을 공백으로 분할하여 단어 테이블을 생성합니다.
- 문자열 비교를 준비하기 위해 후보 테이블을 생성합니다.
- 각 참조 문자열을 정리하고 토큰화합니다.
- 이 처리된 단어를 별도의 테이블에 저장합니다.
- 두 테이블의 단어를 비교하고 매칭하여 대상 구문과 가까운 음성 입력을 인식합니다. 작은 변형이 포함되어 있더라도 인식합니다.
- 간단한 검사로 문자열이 정확히 동일한지 확인합니다.
- 더 유연한 매칭을 위해 "colour"를 "color" 대신 허용하는 사용자 정의 로직을 작성하거나 단어의 하위 집합을 매칭하고 유사성 점수를 계산할 수 있습니다.
오디오 사용자 지정
오디오 효과는 플레이어의 귀에 도달하기 전에 오디오 스트림을 비파괴적으로 수정하거나 향상시킬 수 있게 해줍니다. 이러한 효과를 적용하여 경험 내에서 오디오를 더 몰입감 있게 만들 수 있습니다. 예를 들어, 비가 둔탁하게 들리도록 하기 위한 AudioEqualizer 객체, 소리의 최대 볼륨을 조절하기 위한 AudioCompressor 객체, 실내 공간에서 소리의 사실적인 반사를 추가하기 위한 AudioReverb 객체 등이 있습니다.
오디오 효과를 구성하는 방법과 오디오 사용자화 전과 후를 나란히 비교하는 방법에 대한 자세한 내용은 오디오 효과를 참조하십시오.


오디오 트리거
스크립트에서 Play()를 호출하여 제대로 연결된 AudioPlayer 객체에서 컨텍스트에 맞는 오디오를 트리거할 수 있습니다. 예를 들어, 스크립트를 오디오 플레이어에 부모로 두면 다음과 같은 방법으로 오디오 자산을 트리거할 수 있습니다:
local audio = script.Parent
local something = ...
something.SomeEvent:Connect(function()
audio:Play()
end)
게임 플레이 피드백, UI 상호작용 및 루프 배경 소음과 같은 오디오를 트리거하기 위한 복잡한 코드 샘플은 2D 오디오 추가, 3D 오디오 추가 및 텍스트 음성 변환 추가 튜토리얼을 참조하십시오.