오디오 처리 가이드
이 가이드는 입형 생성기에 오디오 데이터를 공급하기 위한 다양한 오디오 입력 방법을 설정하는 방법을 다룹니다. 진행하기 전에 설정 가이드를 완료했는지 확인하세요.
오디오 입력 처리
오디오 입력을 처리할 방법을 설정해야 합니다. 오디오 소스에 따라 여러 가지 방법이 있습니다.
- 마이크 (실시간)
- 마이크 (재생)
- Text-to-Speech (Local)
- Text-to-Speech (External APIs)
- From Audio File/Buffer
- Streaming Audio Buffer
이 접근 방식은 마이크에 말하면서 실시간으로 입형을 수행합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime Audio Importer를 사용하여 Capturable Sound Wave 생성
- 오디오 캡처를 시작하기 전에
OnPopulateAudioData
델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData
호출 - 마이크에서 오디오 캡처 시작
Realistic Model은 Standard Model과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator
대신 RealisticLipSyncGenerator
변수를 사용합니다.
Mood-Enabled Model은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator
변수와 추가적인 무드 구성 기능을 사용합니다.
이 접근 방식은 마이크에서 오디오를 캡처한 다음 립 싱크와 함께 재생합니다:
- 표준 모델
- 리얼리스틱 모델
- 무드 지원 리얼리스틱 모델
- Runtime Audio Importer를 사용하여 캡처 가능 사운드 웨이브 생성
- 마이크에서 오디오 캡처 시작
- 캡처 가능 사운드 웨이브를 재생하기 전에, 해당
OnGeneratePCMData
델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData
호출
리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator
대신 RealisticLipSyncGenerator
변수를 사용합니다.
- Regular
- Streaming
이 접근 방식은 로컬 TTS를 사용하여 텍스트에서 음성을 합성하고 립 싱크를 수행합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime Text To Speech를 사용하여 텍스트에서 음성 생성
- Runtime Audio Importer를 사용하여 합성된 오디오 임포트
- 임포트된 사운드 웨이브를 재생하기 전에,
OnGeneratePCMData
델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData
호출
Runtime Text To Speech 플러그인에서 제공하는 로컬 TTS는 ONNX 런타임 충돌로 인해 현재 일반 Realistic 모델과 호환되지 않습니다. 일반 Realistic 모델을 사용한 text-to-speech의 경우, 외부 TTS 솔루션을 사용하거나 Standard 모델을 대신 사용하는 것을 고려하세요.
- Runtime Text To Speech를 사용하여 텍스트에서 음성 생성
- Runtime Audio Importer를 사용하여 합성된 오디오 임포트
- 임포트된 사운드 웨이브를 재생하기 전에,
OnGeneratePCMData
델리게이트에 바인딩 - 바인딩된 함수에서 Mood-Enabled Lip Sync Generator의
ProcessAudioData
호출 - 텍스트 내용이나 원하는 감정 표현에 기반하여 무드 설정 구성
무드 통합 TTS:
- TTS 생성 전이나 도중에 적절한 무드 설정
- 텍스트의 감정적 톤에 맞게 무드 강도 조정
- 긴 텍스트 콘텐츠의 다른 섹션에 대해 다른 무드 사용
이 접근 방식은 실시간 립 싱크와 함께 스트리밍 텍스트-음성 합성을 사용합니다:
- Standard Model
- Realistic Model
- Mood-Enabled Realistic Model
- Runtime Text To Speech를 사용하여 텍스트에서 스트리밍 음성을 생성합니다
- Runtime Audio Importer를 사용하여 합성된 오디오를 임포트합니다
- 스트리밍 사운드 웨이브를 재생하기 전에, 해당
OnGeneratePCMData
델리게이트에 바인딩합니다 - 바인딩된 함수에서, Runtime Viseme Generator의
ProcessAudioData
를 호출합니다
Runtime Text To Speech 플러그인에서 제공하는 Local TTS는 ONNX 런타임 충돌로 인해 현재 일반 Realistic 모델과 호환되지 않습니다. 일반 Realistic 모델과 함께 텍스트-음성 합성을 사용하려면 외부 TTS 서비스를 고려하거나 대신 Standard 모델을 사용하세요.
- Runtime Text To Speech를 사용하여 텍스트에서 스트리밍 음성을 생성합니다
- Runtime Audio Importer를 사용하여 합성된 오디오를 임포트합니다
- 스트리밍 사운드 웨이브를 재생하기 전에, 해당
OnGeneratePCMData
델리게이트에 바인딩합니다 - 바인딩된 함수에서, Mood-Enabled Lip Sync Generator의
ProcessAudioData
를 호출합니다 - 필요한 경우 스트리밍 중에 무드 설정을 동적으로 조정합니다
- Regular
- Streaming
이 접근 방식은 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
변수와 추가적인 mood 구성 기능을 포함합니다.
참고: 스트리밍 오디오 소스를 사용할 때는 왜곡된 재생을 방지하기 위해 오디오 재생 타이밍을 적절히 관리해야 합니다. 자세한 내용은 Streaming Sound Wave 문서를 참조하세요.
처리 성능 팁
-
청크 크기: 더 반응적인 Lip Sync를 위해 오디오 데이터를 더 작은 청크로 처리하려면
SetNumSamplesPerChunk
함수의 계산을 조정하세요. 예를 들어, 샘플 레이트를 100으로 나누는 대신(10ms마다 스트리밍) 150으로 나누면(~6.67ms마다 스트리밍) 더 빈번한 Lip Sync 업데이트를 제공합니다. -
버퍼 관리: mood-enabled model은 320-샘플 프레임(16kHz에서 20ms)으로 오디오를 처리합니다. 최적의 성능을 위해 오디오 입력 타이밍이 이와 일치하는지 확인하세요.
-
Generator 재생성: Realistic model을 사용할 때 신뢰할 수 있는 작동을 위해, 비활성 기간 후 새로운 오디오 데이터를 공급하려고 할 때마다 generator를 재생성하세요.
다음 단계
오디오 처리를 설정한 후에는 다음을 고려해 볼 수 있습니다: