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

리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

무드 지원 모델은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 무드 구성 기능을 사용합니다.

이 접근 방식은 마이크에서 오디오를 캡처한 다음 입술 동기화와 함께 재생합니다:
- 표준 모델
- 리얼리스틱 모델
- 무드 지원 리얼리스틱 모델
- Runtime Audio Importer를 사용하여 캡처 가능한 사운드 웨이브 생성
- Pixel Streaming이 있는 Linux의 경우, 대신 Pixel Streaming Capturable Sound Wave 사용
- 마이크에서 오디오 캡처 시작
- 캡처 가능한 사운드 웨이브를 재생하기 전에
OnGeneratePCMData델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData호출

리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

무드 지원 모델은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 무드 구성 기능을 사용합니다.

- 일반
- 스트리밍
이 접근 방식은 로컬 TTS를 사용하여 텍스트에서 음성을 합성하고 입술 동기화를 수행합니다:
- 표준 모델
- 리얼리스틱 모델
- 무드 지원 리얼리스틱 모델
- Runtime Text To Speech를 사용하여 텍스트에서 음성 생성
- Runtime Audio Importer를 사용하여 합성된 오디오 가져오기
- 가져온 사운드 웨이브를 재생하기 전에
OnGeneratePCMData델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData호출

리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

무드 지원 모델은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 무드 구성 기능을 사용합니다.

이 접근 방식은 실시간 입술 동기화와 함께 스트리밍 텍스트 음성 변환 합성을 사용합니다:
- 표준 모델
- 리얼리스틱 모델
- 무드 지원 리얼리스틱 모델
- Runtime Text To Speech를 사용하여 텍스트에서 스트리밍 음성 생성
- Runtime Audio Importer를 사용하여 합성된 오디오 가져오기
- 스트리밍 사운드 웨이브를 재생하기 전에
OnGeneratePCMData델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData호출

리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

무드 지원 모델은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 무드 구성 기능을 사용합니다.

- 일반
- 스트리밍
이 접근 방식은 Runtime AI Chatbot Integrator 플러그인을 사용하여 AI 서비스(OpenAI 또는 ElevenLabs)에서 합성된 음성을 생성하고 입술 동기화를 수행합니다:
- 표준 모델
- 리얼리스틱 모델
- 무드 지원 리얼리스틱 모델
- Runtime AI Chatbot Integrator를 사용하여 외부 API(OpenAI, ElevenLabs 등)를 통해 텍스트에서 음성 생성
- Runtime Audio Importer를 사용하여 합성된 오디오 데이터 가져오기
- 가져온 사운드 웨이브를 재생하기 전에
OnGeneratePCMData델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData호출

리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

무드 지원 모델은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 무드 구성 기능을 사용합니다.

이 접근 방식은 Runtime AI Chatbot Integrator 플러그인을 사용하여 AI 서비스(OpenAI 또는 ElevenLabs)에서 합성된 스트리밍 음성을 생성하고 입술 동기화를 수행합니다:
- 표준 모델
- 리얼리스틱 모델
- 무드 지원 리얼리스틱 모델
- Runtime AI Chatbot Integrator를 사용하여 스트리밍 TTS API(예: ElevenLabs Streaming API)에 연결
- Runtime Audio Importer를 사용하여 합성된 오디오 데이터 가져오기
- 스트리밍 사운드 웨이브를 재생하기 전에
OnGeneratePCMData델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData호출

리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

무드 지원 모델은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 무드 구성 기능을 사용합니다.

이 접근 방식은 미리 녹음된 오디오 파일이나 오디오 버퍼를 사용하여 입술 동기화를 수행합니다:
- 표준 모델
- 리얼리스틱 모델
- 무드 지원 리얼리스틱 모델
- Runtime Audio Importer를 사용하여 디스크나 메모리에서 오디오 파일 가져오기
- 가져온 사운드 웨이브를 재생하기 전에
OnGeneratePCMData델리게이트에 바인딩 - 바인딩된 함수에서 Runtime Viseme Generator의
ProcessAudioData호출 - 가져온 사운드 웨이브를 재생하고 입술 동기화 애니메이션 관찰

리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

무드 지원 모델은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 무드 구성 기능을 사용합니다.

스트리밍 오디오 데이터를 버퍼에서 사용하려면 다음이 필요합니다:
- 표준 모델
- 리얼리스틱 모델
- 무드 지원 리얼리스틱 모델
- 스트리밍 소스에서 사용 가능한 float PCM 형식의 오디오 데이터(부동 소수점 샘플 배열) (또는 Runtime Audio Importer를 사용하여 더 많은 형식 지원)
- 샘플 레이트와 채널 수
- 오디오 청크가 사용 가능해지면 Runtime Viseme Generator의
ProcessAudioData를 이러한 매개변수와 함께 호출

리얼리스틱 모델은 표준 모델과 동일한 오디오 처리 워크플로우를 사용하지만, VisemeGenerator 대신 RealisticLipSyncGenerator 변수를 사용합니다.

무드 지원 모델은 동일한 오디오 처리 워크플로우를 사용하지만, MoodMetaHumanLipSyncGenerator 변수와 추가적인 무드 구성 기능을 사용합니다.

참고: 스트리밍 오디오 소스를 사용할 때는 왜곡된 재생을 피하기 위해 오디오 재생 타이밍을 적절히 관리해야 합니다. 자세한 내용은 스트리밍 사운드 웨이브 문서를 참조하세요.
처리 성능 팁
-
청크 크기: 더 반응적인 입술 동기화를 위해 더 작은 청크로 오디오 데이터를 처리하려면
SetNumSamplesPerChunk함수의 계산을 조정하세요. 예를 들어, 샘플 레이트를 100(10ms마다 스트리밍) 대신 150(약 6.67ms마다 스트리밍)으로 나누면 더 빈번한 입술 동기화 업데이트를 제공합니다. -
버퍼 관리: 무드 지원 모델은 320샘플 프레임(16kHz에서 20ms)으로 오디오를 처리합니다. 최적의 성능을 위해 오디오 입력 타이밍이 이와 일치하는지 확인하세요.
-
생성기 재생성: 리얼리스틱 모델의 안정적인 작동을 위해 비활성 기간 후에 새로운 오디오 데이터를 공급하려고 할 때마다 생성기를 다시 생성하세요.
다음 단계
오디오 처리를 설정한 후에는 다음을 수행할 수 있습니다: