wav 파일의 볼륨을 기반으로 립싱크 (웹)

[마지막 갱신일: 2021/05/13]

 

개요

웹용 Cubism SDK는 립싱크  기능을 사용하여 wav 파일의 오디오 데이터 볼륨을 기반으로 실시간으로 립싱크를 이동하는 기능을 제공합니다.
이 샘플은 Cubism 4 SDK for Web R3 beta1 이상에서 제공됩니다.

 

사용방법

준비

모션에 연결된 wav 파일을 .json 파일에 씁니다. 각 모션의 "Sound"키에 해당하는 wav 파일 경로를 지정하십시오.

위에서 지정한 위치에 wav 파일을 배치합니다. wav 파일의 경로가 잘못되면 립싱크가 발생하지 않습니다.

 

볼륨 획득 시작

샘플에서는, LAppWavFileHandler 클래스를 개입시켜 wav 파일로부터의 정보 취득을 실시하고 있습니다.
LAppWavFileHandler::Start() 를 실행하면 wav 파일에서 오디오 데이터를 읽고 립싱크를 수행하는 데 필요한 내부 상태를 초기화합니다.

 

 

상태 업데이트 및 볼륨 획득

LAppWavFileHandler::Update() 를 실행하면 경과 시간에 해당하는 부분의 볼륨을 측정합니다. 측정 결과의 볼륨은 LAppWavFileHandler::GetRms() 에서 얻을 수 있습니다. 취득한 음량을 립 싱크치로서 모델에 CubismModel::AddParameterValue 함수로 설정합니다.

샘플에서는, 취득해 온 음량을 0.8배로 립싱크치로 하고 있습니다. 여기서, 사운드 라이브러리 등에서 취득한 음량을 립 싱크 값으로 설정할 수도 있습니다.

 

 

보충

  • 샘플에는 오디오를 장치에서 재생하는 기능이 없습니다.
  • LAppWavFileHandler::GetRms() 는 현재 볼륨 값을 0에서 1 범위로 반환합니다.
    • 볼륨의 단위는 RMS(제곱 평균 제곱근)입니다.
    • 모든 채널 음성의 평균값을 계산합니다.
      • 예를 들어 스테레오 오디오의 경우 좌우 채널을 포함한 오디오의 평균값을 계산합니다.

 

제한사항

샘플에서는, 이하의 wav 파일의 로드에 대응하고 있습니다. 하기 포맷에 대응하지 않는 파일을 읽어들일 경우, 립싱크가 행해지지 않습니다.

  • Microsoft WAV(리틀 엔디안 형식)
  • 리니어 PCM
    • μ-raw, ADPCM 등으로 인코딩된 wav는 미대응입니다.
  • 채널 수: 모노/스테레오
  • 대응 비트 깊이: 8, 16, 24bit 부호 있는 정수

© 2010 - 2022 Live2D Inc.