오디오 처리 가이드
이 가이드는 립 싱크 생성기에 오디오 데이터를 공급하기 위해 다양한 오디오 입력 방식을 설정하는 방법을 다룹니다. 진행하기 전에 설정 가이드를 완료했는지 확인하세요.
오디오 입력 처리
오디오 입력을 처리할 방식을 설정해야 합니다. 오디오 소스에 따라 이를 수행하는 여러 방법이 있습니다.
- 마이크 (실시간)
- 마이크 (재생)
- 텍스트 음성 변환 (로컬)
- 텍스트 음성 변환 (외부 API)
- 오디오 파일/버퍼에서
- 스트리밍 오디오 버퍼
이 방식은 마이크로 말하는 동안 실시간으로 립 싱크를 수행합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime Audio Importer를 사용하여 Capturable Sound Wave를 생성합니다.
- Pixel Streaming을 사용하는 Linux의 경우, 대신 Pixel Streaming Capturable Sound Wave를 사용하세요.
- 오디오 캡처를 시작하기 전에
OnPopulateAudioData델리게이트에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData를 호출합니다. - 마이크에서 오디오 캡처를 시작합니다.

Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 분위기 구성 기능을 사용합니다.

이 방식은 마이크에서 오디오를 캡처한 후 립 싱크와 함께 재생합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime Audio Importer를 사용하여 Capturable Sound Wave를 생성합니다.
- Pixel Streaming을 사용하는 Linux의 경우, 대신 Pixel Streaming Capturable Sound Wave를 사용하세요.
- 마이크에서 오디오 캡처를 시작합니다.
- 캡처 가능한 사운드 웨이브를 재생하기 전에 해당
OnGeneratePCMData델리게이트에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData를 호출합니다.

Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 분위기 구성 기능을 사용합니다.

- 일반
- 스트리밍
이 방식은 로컬 TTS를 사용하여 텍스트에서 음성을 합성하고 립 싱크를 수행합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime Text To Speech를 사용하여 텍스트에서 음성을 생성합니다.
- Runtime Audio Importer를 사용하여 합성된 오디오를 가져옵니다.
- 가져온 사운드 웨이브를 재생하기 전에 해당
OnGeneratePCMData델리게이트에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData를 호출합니다.

Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 분위기 구성 기능을 사용합니다.

이 방식은 실시간 립 싱크와 함께 스트리밍 텍스트 음성 변환 합성을 사용합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime Text To Speech를 사용하여 텍스트에서 스트리밍 음성을 생성합니다.
- Runtime Audio Importer를 사용하여 합성된 오디오를 가져옵니다.
- 스트리밍 사운드 웨이브를 재생하기 전에 해당
OnGeneratePCMData델리게이트에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData를 호출합니다.

Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 분위기 구성 기능을 사용합니다.

- 일반
- 스트리밍
이 방식은 Runtime AI Chatbot Integrator 플러그인을 사용하여 AI 서비스(OpenAI 또는 ElevenLabs)에서 합성된 음성을 생성하고 립 싱크를 수행합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime AI Chatbot Integrator를 사용하여 외부 API(OpenAI, ElevenLabs 등)를 통해 텍스트에서 음성을 생성합니다.
- Runtime Audio Importer를 사용하여 합성된 오디오 데이터를 가져옵니다.
- 가져온 사운드 웨이브를 재생하기 전에 해당
OnGeneratePCMData델리게이트에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData를 호출합니다.

Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 분위기 구성 기능을 사용합니다.

이 방식은 Runtime AI Chatbot Integrator 플러그인을 사용하여 AI 서비스(OpenAI 또는 ElevenLabs)에서 합성된 스트리밍 음성을 생성하고 립 싱크를 수행합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime AI Chatbot Integrator를 사용하여 스트리밍 TTS API(예: ElevenLabs Streaming API)에 연결합니다.
- Runtime Audio Importer를 사용하여 합성된 오디오 데이터를 가져옵니다.
- 스트리밍 사운드 웨이브를 재생하기 전에 해당
OnGeneratePCMData델리게이트에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData를 호출합니다.

Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 분위기 구성 기능을 사용합니다.

이 방식은 미리 녹음된 오디오 파일 또는 오디오 버퍼를 립 싱크에 사용합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime Audio Importer를 사용하여 디스크 또는 메모리에서 오디오 파일을 가져옵니다.
- 가져온 사운드 웨이브를 재생하기 전에 해당
OnGeneratePCMData델리게이트에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData를 호출합니다. - 가져온 사운드 웨이브를 재생하고 립 싱크 애니메이션을 관찰합니다.

Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 분위기 구성 기능을 사용합니다.

버퍼에서 오디오 데이터를 스트리밍하려면 다음이 필요합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- 스트리밍 소스에서 사용 가능한 float PCM 형식(부동 소수점 샘플 배열)의 오디오 데이터 (또는 Runtime Audio Importer를 사용하여 더 많은 형식 지원)
- 샘플 레이트와 채널 수
- 오디오 청크가 사용 가능해짐에 따라 이러한 매개변수를 사용하여 Runtime Viseme Generator의
ProcessAudioData를 호출합니다.

Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 분위기 구성 기능을 사용합니다.

참고: 스트리밍 오디오 소스를 사용할 때는 왜곡된 재생을 방지하기 위해 오디오 재생 타이밍을 적절히 관리해야 합니다. 자세한 내용은 Streaming Sound Wave 문서를 참조하세요.
처리 성능 팁
-
청크 크기:
ProcessingChunkSize구성 옵션을 증가시키면(예: 320, 480 또는 640 샘플로) 품질이나 응답성에 최소한의 영향으로 지연 시간을 눈에 띄게 개선할 수 있습니다. -
모델 유형: Realistic 모델을 사용할 때, Highly Optimized 모델 유형(기본 선택됨)으로 전환하면 성능을 향상시킬 수 있습니다. 원본 모델이 특히 노이즈가 있는 오디오에서 약간 더 나은 품질을 생성할 수 있습니다.
-
버퍼 관리: 분위기 지원 모델은 320-샘플 프레임(16kHz에서 20ms)으로 오디오를 처리합니다. 최적의 성능을 위해 오디오 입력 타이밍이 이에 맞춰져 있는지 확인하세요.
-
생성기 재생성: Realistic 모델에서 안정적인 작동을 위해, 비활성 기간 후에 새 오디오 데이터를 공급하려고 할 때마다 생성기를 다시 생성하세요. 설명은 문제 해결의 생성기 재생성을 참조하세요.
다음 단계
오디오 처리를 설정한 후에는 다음을 수행할 수 있습니다: